Monday, February 11, 2008

AJAX

It's funny, the last time I was seriously into client side web development in mid 2004 it was so stagnant. The only framework that truly seemed to be harnessing the full power of the browsers was Bindows.net. This was about the time that the original AJAX library was introduced. I had thought "What's the big deal? The underlying technologies have been around since around 1998." I still snicker whenever I see client heavy web development referred to as "Web 2.0".

It's weird though how a good abstraction and clever name can shift momentum and spark creativity. Every major software vendor has their own AJAX library. In addition a slew of new browser based UI frameworks have come about. However they are all still based on the same old technologies. JavaScript hasn't changed since 1999 (ECMAScript v3) with V4 in a seemingly never ending development cycle. Even when it is released and all the major browsers implement it V3 will be the minimum supported for a llloooonnngg time. Even with this almost decade old base technology such great innovations have come about.

Here are a couple of my favorite new libraries:
  • Ext JS this in many ways reminds me of Bindows in that it has a complete UI framework all the way from comboboxes and datepickers to dialogs, datagrids and multi column treeviews . It seems a lot easier to integrate individual components into a web site without having to initialize an application framework surface. Finally add that it has an LGPL license, most people (including companies) can use it free of charge.
  • Microsoft AJAX. Well there are certain parts to this that I really enjoy. I'm not a big fan of the way ASP.NET does a lot of things. And wrapping the mechanics of ASP.NET into an XMLHTTP request seems incongruent. The end result is a huge abstraction over another huge abstraction which in the end makes it very difficult to do anything more than the most basic task. However, I do really like the way they've done their purely client side library. It creates a very .NETesque framework that in many ways makes it a lot easier to make truly OO JavaScript libraries. I bet I could even create a pretty sweet ASP classic framework on top of it.
  • Adobe Spry: I really enjoy the Spry.Data library. It seems by far the most intuitive way of working with a variety of data sources. This is great for working with different server side technologies. Also their Widget design is the most backwards compatible with both down level browsers and JavaScript disabled browsers (that I've seen).

The best side effect of all this new fervor is people are now using JavaScript/DOM best practices. It used to be that JavaScript libraries were the worst in development practices. The global namespace was polluted with variables and functions, many of which had common names that would stomp over other libraries'. Additionally it was common to stomp over the window.onload delegate instead of using addEventListener or attachEvent. Now people fully use prototypes, object notation (JSON), nested anonymous functions, and all the other great features of JavaScript that mostly went unused.

No comments: