
Jaxer is a somewhat new technology that I’ve recently started to delve into. Jaxer is billed as the first AJAX server – basically, it’s a combination of a ‘web server’ and a set of APIs that can be used to develop web applications that transparently utilize asynchronous XMLHTTPRequests instead of postbacks as the standard way of communication between client and server. Jaxer development can be done in the Aptana IDE or via an Eclipse plugin.
Jaxer is somewhat unique in that the language used for both client and server is JavaScript. The server itself is basically the internals of the Mozilla platform (the DOM engine, the parser, the Javascript engine) along with a bunch of glue and a Jaxer API that facilitates, amongst other things, database and file access on the server side. The server is not standalone – it must be run as an Apache plugin (and IIS support seems to be planned for some future time).
What are some of the benefits of using Jaxer? One of the most obvious is the embracing of AJAX. As long as you understand the Client-Server paradigm, making AJAX requests is trivial. There is no extra markup needed – if you call a server-side method from the client side, the request is XMLHTTPRequest wrapped and sent to the server.
Another benefit to Jaxer is that there’s no new language to learn. Since Jaxer is built on JavaScript, it’s easy to add whatever JavaScript framework you’d like into the mix too, such as jQuery and YUI. These libraries are even available on both the client AND the server, rather than on the client alone.
Jaxer also comes with support for the Aptana Cloud built into the Aptana IDE and the Eclipse plugin. Once you have a Jaxer application working, you can do very easy deployment to the cloud service and be running in minutes with no additional configuration needed. You can also easily connect to the cloud to view your database and files through Aptana.
So, Jaxer sounds pretty cool. What are some of the drawbacks of it? One of the biggest currently is there’s no support for an Object-Relational Model (ORM). Many market leading web languages have ORM built in that make data manipulation easy. All database access must be made with straight SQL, which feels a little dated now. On the plus side, Jaxer comes configured with SQLLite out of the box, so no database setup is needed to run locally.
Another huge drawback is that there are not many places to host Jaxer on the web. Neither Dreamhost nor Godaddy have support for it (and, it’s been out for a year and a half!), so you’re pretty much relegated to a virtual private server or the Aptana Cloud for affordable hosting. Both options can be had for as little as $20 a month, but that’s a lot of money to just tinker around with some ideas.
Another drawback to Jaxer is that there is a hefty cost for a commercial license for the IDE (though a non-commercial license is free). I understand that the people behind Jaxer are a business, but it hurts particularly badly when your platform target is Linux-Apache. Both Ruby and PHP have free development tools available, so getting a company to fork over $500 a seat is not trivial to do.
There’s also no support for master and child pages in Jaxer. Jaxer was built as a tool to create web applications rather than web sites. You can’t easily separate your HTML files into a container and content frame, so building multi-page websites is not something that I would recommend in Jaxer.
Make no mistake – Jaxer is a compelling product. It is simple, easy to learn, intuitive, built on existing technologies, and it can make some wicked applications. It has support from some major industry players, including John Resig of jQuery fame. It has a long road ahead if it’s going to break into the big leagues, but I certainly would recommend giving it a spin. If nothing else, it will open your eyes a little on how to write world-class AJAX web applications.