So I've been looking at AJaX frameworks over the past few weeks (actually a bunch of coworkers have been doing most of the work, but I'm interested). It seems like everybody has recently jumped onto the bandwagon and are now declaring themselves AJaX frameworks/architectures/founders/etc/etc.

These rich client apps which use JavaScript and XML have some pretty major advantages over traditional web apps (with the whole n-tier pound the server kind of setup): 1) performance 2) extended feature sets 3) cool ui.

No theoretically the cool uis could have been done with traditional html from the server kind of apps, but AJaX makes it easier because you can move stuff around just like a rich windows app. This was a pain in the olden days because you had to have lots of server hits and stuff and the user didn't like waiting for refreshes to complete to see new sections or get new content.

With the new JavaScript techniques you can add pretty much all the features of a rich client and deliver it all through the browser with no plug-ins. A true zero install is the holy grail of software maintainability. Of course AJaX still needs a browser, but it's a big plus that users don't need Flash or Java or ActiveX or something else lame (remember all those frameworks that force users to install a custom plug-in: I remember Oracle Forms and Clario with some stupid web "rich clients" a few years ago).

The biggest bonus is in performance gains. In a traditional web app, the server builds the html dynamically and then pushes everything down to the client via html. Maybe they had some CSS or JavaScript tricks but it was mostly plain html and the graphics and stuff. Most smart people used PHP or JSP or Velocity or XSLT to create this html and when you start having lots of users pounds against complex applications, your server would bog down.

With a rich client JavaScript framework, you can just send down the data that you need and the page is rendered using the browser's cpu. This increases your scalability massively. Some of my estimates are that a single server can now support 10 times as many users. Sure this will mean you have to bump up your memory on the server but you can now service users about 10 times cheaper. This is big, big news to app designers.

So there are a few up and comers but no one is perfect yet. I've looked at General Interface (now owned by TIBCO), Isomorphic, DreamFactory, BackBase and Bindows. I'll go into more detail in a future post but for now I'll flip when I see a good open source IDE/Component set that talks with xml services and renders well on IE6 and Firefox.