Who Needs an Enterprise AJAX Solution?
Want an enterprise AJAX solution and don't mind paying for it? We have Backbase, Bindows, Icefaces, Isomorphic SmartClient, JackBe, Nexaweb, and probably many more that I don't know about or didn't think to include. Want to hedge your bets? Almost all of these vendors offer a stripped-down community edition or a free open source license as an alternative to a fully supported offering with enterprise-level features.
The question is, with so many terrific open source AJAX tools, why spend good money for a so-called enterprise solution? I had some preconceived notions about what the answers would be, but I decided to go out and ask other people about it, both vendors and developers. I'll tell you what they said, and what I think now that I've talked to them.
One vendor executive, Ran Meriaz, president of MB Technologies, which makes Bindows, came back with a flowchart for selection. It boils down to two basic choices: First, do you want pure AJAX? If not, then look at other RIA (rich Internet application) technologies (such as Adobe Flex, Adobe AIR, Curl, and Microsoft Silverlight), since you can get additional capabilities and higher performance if you're willing to use plug-ins.
Now, the crux of his decision tree is the definition of "enterprise." Meriaz supplied some characteristics of an enterprise-strength framework. As you might expect, he specified a complete, extendable components library. I agree: If you're going to pay for an enterprise AJAX solution, it should do every common thing you need out of the box, and it should allow you to meet any special requirements of your own without going outside the framework. Open source solutions tend to focus on one area or another, at the whim of the developers.
Meriaz also asked for handicapped accessibility, in the form of adherence to Section 508. This is a worthy goal, although I'm not convinced that it's an absolute requirement for all enterprise applications.
He specified vector graphics, charting, animations, and layers. Those certainly can jazz up a site, but I wonder: How many sites really need all that? I'd consider this optional, but a big bonus.
Meriaz asked for internationalization and localization. That's a must only for sites that aren't limited to a single language and country.
(Read the Test Center's reviews and screencast demos of Dojo, Ext, Google Web Toolkit, jQuery, MooTools, Prototype and Scriptaculous, and Yahoo User Interface Library.)
Security? I agree absolutely, but I think that it's so important that you should require it of every software component you use and every piece of code you write. Not every open source library has undergone a full security review, although some have. The enterprise-class products usually have, since the vendors expect customers to care about security.
Meriaz mentioned pace of development, meaning documentation, tools, and support. These are often, but not always, clear differentiators between open source projects and commercial solutions. I demand support from a commercial product, and I'm willing to pay for it because of the development time saved, and because providing it costs the vendor real money. I expect commercial documentation to be complete, up-to-date, and well-organized, although I'm often disappointed; I expect open source documentation to be cursory and an afterthought, although I'm sometimes pleasantly surprised. Tools that truly speed up development are worth paying for, although they're often available gratis.
Before I started researching this article, I had a preconceived notion that one of the distinguishing features of enterprise AJAX would be support for various servers in addition to the client libraries. Several of the enterprise AJAX packages do have extra support for specific server frameworks: For example, Backbase has additional support for JSF, Spring, JSP/Struts, and Java Data Services. On further thought, however, this isn't necessarily the case: Once you have a robust asynchronous callback mechanism, a flexible data format (such as XML or JSON), and support for the data format on both the client and server, you don't absolutely require special support for any given server built into the client.