No Such Thing As Web 1.5
Originally published on LiveJournal, 12.24.07
So, I was at a crossroads: either go with a web 1.0 solution, using simple HTTP-cycle handlers (such as tried-and-true Struts — I will not write a pure JSP application ever, ever again!), or go full web 2.0, abandoning the HTTP cycle and treating the web browser like a thin client.
(There’s actually a third option: the Google Web Toolkit (GWT), which has built-in solutions to a lot of the problems of JSF. It’s approach is different from both server-side (JSF) and client-side (AJAX) solutions, in that it makes the difference between client and server transparent for the developer, with the user getting a reasonable, automated mix of both. However, it’s a rather monster of a solution, and utterly locks you into its unique paradigm.)
I chose, then, to go full and extreme web 2.0. As such, the entire application is in a single URL, and all dynamic aspects of the user interface are handled entirely in the client, rather than going the route to the server and back. This is faster and more responsive from the user’s perspective. It does make bookmarking work a bit differently, but it’s something that can be handled clearly enough for the user. (For example: an explicit option to “show a direct link to this article” or something similar.) The problem with such an approach is that so much depends on the quality of the platform, and how well it handles the many quirks and differences between browsers. If you have a problem in that respect, development can come to a halt for weeks as you try to fix it, test it on various platforms, find out your fix breaks another platform, etc. etc. I’ve been there before, which is why I didn’t go full web 2.0 in the first place. From a developer’s perspective, web 2.0 was a quality and security nightmare for years. Things have changed, however, and we’re seeing more and more major web 2.0 applications that work quite well (see Meebo, for example), as opposed to a trivial examples or enhancements of web 1.0.