Since the first CGI (Common Gateway Interface) program in 1995 generated HTML dynamically in response to a Web request, we have continuously built on this concept of server-side, dynamic HTML generation. Innovations in Web development were often just abstractions built on top of this concept. But abstraction is a double-edged sword. It eliminates the need to understand everything going on under the hood. However, each abstraction layer typically includes its own configuration, quirks and conventions. The result is that Web development has become unnecessarily complex (for example, Java Platform, Enterprise Edition 5).
One of the main reasons for this complexity is that Web application architectures are still an evolution of the CGI model from 1995. But, at the time CGI was invented, a different programming model dominated the software development landscape. It was known as "client-server." The client-server years are likely the single most productive era in software application development. But when the tidal wave of the Web hit, there was no turning back.
One of the most compelling concepts of client-server computing was the idea that the UI should be independent of the technology chosen for the business logic and data persistence. In today's Web programming model, if you decide to change your middle tier from Java to Ruby, you rewrite your entire UI, generating HTML from .rb scripts instead of .jsp scripts. The UI is tightly coupled with the server-side technology choice.
The Web is morphing into a delivery platform for client applications that consume external services from one or many sources, as well as a platform that provides a rich user experience with minimal page turns. This is the future of Web development. The client operating system IS the browser. Need proof? See the rise of offline, SSBs (Single Site Browsers) and desktop Web integration.
Welcome to client-server 2.0. The only question left is: How long before you starting writing your Web applications as standalone, true Web clients?
As a professional consultant, Quinlan provided guidance on Web development, architecture and content management to Motorola, UPS, Sprint, Vanguard, Intel and dozens of other companies. He has taught courses on Java and Java 2 Platform, Enterprise Edition (J2EE). He was a founding member of the JBoss evangelist team, where he spoke about open-source software, Java/J2EE and Web application development at industry events and user groups around the country.
Quinlan holds a bachelor's degree in Computer Science from Purdue University. He can be reached at firstname.lastname@example.org.