1.1. The Rise and Challenges of Web Development

Over the past few years the development world has experienced a radical paradigm shift from desktop to Web applications. It may be premature to call traditional desktop programs obsolete, but the rapid rise of Web-based software is a clear sign of the ever-increasing popularity and significance of Web development.

Web applications provide developers and users alike with a wealth of advantages. In particular, programmers can leverage a more immediate development, deployment, and maintenance cycle, while end users are able to utilize applications with desktop-like features and interfaces (often referred to as Rich Internet Applications or RIAs) directly from their browser. This enables users to access data in a platform-independent manner, on the operating system and device of their choice, and from anywhere an Internet connection is available. A significant part of the success of Web applications resides in this ability to respond well to the needs of a world that is continually more and more connected. Web development is therefore a stimulating and worthwhile endeavor.

The new Web — commonly dubbed Web 2.0 (a term that's attracted its fair share of critics) — poses a few challenges for developers, especially for beginners. The Web as a development platform is exciting, but far from perfect.

The main problem in this regard arises from the Web's origins. The HTTP protocol was created as a means to store and retrieve documents. HTML, on the other hand, is a markup language that was created to represent interlinked documents (hypertext). Traditionally, the Web's entire architecture was document-based.

Yet, its worldwide success and the growing reliance upon it by more than a billion people has forced the Web to rapidly evolve over the past 15 years to the point where multimedia and very complex applications are possible. In moving from an era of documents to one of rich applications and interfaces, a series of new technologies were introduced. It isn't far-fetched to say that we're pushing the Web far beyond the limits for which it was initially created.

It is very challenging to approach the new Web with general-purpose languages and tools. For example, though it is possible to write CGI scripts today, far better-suited tools exist, which make a developer's job much easier and more enjoyable, while delivering solid applications that are simple to maintain. These tools — and Rails is an excellent poster child for this — are specifically tailored for the new challenges of the modern Web and for this reason are often considered to be an example of Domain Specific Languages (DSLs). Rails and similar frameworks incarnate and adhere to the best practices assimilated by the industry, and attempt to hide the tedious, repetitive, low-level work required by Web applications from the developer.

Web applications are often developed by a small team and tend to change at a rather fast pace. This is in stark contrast to development scenarios that are present within the Enterprise world, where extensive planning and long release cycles are not uncommon. It is therefore necessary to use development methodologies and tools that allow the developer to be productive and embrace change.

It is also important to understand that a user typically interacts with a Web application through a browser, hence its limits will inevitably affect the user's experience on the Web.

One of the toughest quirks to work around is the issue of cross-browser compatibility. The contents of non-trivial Web pages are displayed and behave differently based on the browser that's being used. In some cases, a Web application may not work at all in certain browsers.

Dozens of Web browsers exist, even limiting the playing field to the most popular and widely adopted choices (multi-browser compatibility); at the very least, attentive developers must test their applications with common browsers such as Internet Explorer, Mozilla Firefox, Safari, and Opera. Plus, one has to keep in mind that different versions of the same browser will typically render the content in a different manner (for example, IE 6 and IE 7). Sadly, this aspect is often overlooked, and it isn't uncommon for many companies and developers to verify their Web apps with Internet Explorer alone.

Browser vendors are making a conscious effort to improve their browsers in order to achieve better compliance with major Web standards and specifications, but it would be naïve to expect complete compatibility anytime soon. Coping with this flock of browsers adds to the complexity and can be detrimental to the fun of programming.

If you are already a Web developer or a Web designer, you're probably aware of the importance of adopting the W3C recommendations (for example, XHTML, CSS, and DOM), and international standards (for example, ECMAScript, aka JavaScript), as well as testing your application in multiple browsers.

Mentioning the names of a few commonly adopted languages brings up another issue: the modern Web is rather complex and, in order to work well, requires a set of server- and client-side technologies that you should be familiar with. The skills required encompass (depending on your role): a solid understanding of the HTTP protocol, XHTML, CSS, JavaScript, Ajax (or Flex, or Microsoft Silverlight), server-side programming, database design, SQL, Web Services, security, Web servers, and so on, with a list that could continue on for a good long while. Contrary to popular belief — that is perhaps a remnant of the early days of simple HTML homepages — Web development is a complex balance between art and engineering.

As the number of Internet users grows, so too does the demand for a higher degree of interaction, useful features, and — thanks to fast connections and technologies like Ajax — responsive and advanced Web UIs. A few examples of such Web applications are Gmail, Google Docs (an online Office suite), Google Maps, YouTube, Flickr, and more recently, Adobe Photoshop Express (Photoshop on the Web). In other words, the bar for what constitutes a good Web application has been raised considerably over the past few years.

Luckily for you, Ruby on Rails is the ideal tool when it comes time to approach these challenges.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.117.74.231