Google announced yesterday the official release of the Google Web Toolkit (GWT), a Java-based platform for the development of AJAX web applications that work in all mainstream web browsers. Designed to simplify AJAX development, GWT generates consistent, browser-neutral Javascript from simple Java source code.
According to Google, the modularity of Java facilitates a higher level of code reusability. Google also claims that using Java for AJAX development is beneficial because powerful Java IDEs like Eclipse significantly increase developer productivity. GWT provides a number of unique features that contribute to more effective AJAX development. With GWT, developers assemble applications by laying out various AJAX widgets in panels and associating operations with application events.
In some ways, it seems like GWT makes it possible for AJAX developers to leverage the same techniques used for conventional desktop application development. Developers can also create their own custom GWT widgets by combining existing widgets. New GWT widgets can then be deployed in JAR files and made available to other developers. The ability to create and distribute custom AJAX components that can be used in multiple web applications is certainly compelling, and it could potentially reduce the amount of time it takes to develop web applications. In addition to providing support for modular user interface construction, GWT also provides a robust RPC mechanism, a system for managing browser history, and a native Javascript interface that allows developers to mix Javascript into their Java code.
GWT comes with support for two different run modes. Hosted mode, which is primarily used for debugging, will run GWT applications as Java bytecode within the Sun’s Java virtual machine using a specialized web browser designed by Google. To run an application in web mode, developers use GWT’s custom compiler to generate Javascript and HTML that can be deployed on any web server.
Although Google’s Java-oriented approach is innovative, generative AJAX development is hardly a novel or unique idea. A number of other development platforms are available that provide similar functionality. Ruby on Rails, a powerful web application development platform that leverages the model-view-controller pattern, also uses sophisticated generative programming techniques to enable construction of robust AJAX applications. In general, Ruby on Rails is more conducive to rapid development than most comparable Java technologies, and Ruby code tends to be easier to read and maintain. The dynamic nature of Ruby eliminates the need for compilation, which also serves to improve developer productivity. While GWT appears to be geared towards developing AJAX interfaces with familiar desktop application idioms, Ruby on Rails provides a more comprehensive architecture that focuses less on client side functionality and includes complete support for database functionality and other elements of web application development. GWT also seems similar to Microsoft’s Atlas toolkit, which facilitates AJAX development with the .NET platform. Unfortunately, early reports indicate that Atlas provides less than stellar support for alternate browsers, a problem that will hopefully be fixed eventually when it becomes more mature.
Which platform will developers choose? Browser support and language preference are probably the two most relevant factors. Developers that favor Java will probably be more inclined to use GWT or other Java-based technologies. It is likely that many .NET developers will prefer Atlas. Ruby on Rails is best suited for developers that prefer the enhanced expressiveness of dynamic languages, or developers that need an end-to-end solution that also includes database support.