Monday, September 1, 2008

Sun's GlassFish: Application Server Review

Overview:
GlassFish is an opensource project held under a dual-license agreement by both CDDL & Apache's GPL licenses. It is an application server meant to service in deploying web applications. GlassFish is now certified and included by Java Enterprise Edition v5 (SDK). GlassFish provides enterprise quality features including support for high scalability of applications, robust clustering and advanced administration w/ GUI interface for management. The project also has a large growing community of developers/users and solid documentation/API (quick-start tutorials, roadmaps & architecture documents).
Since its 2005 release, GlassFish has gained monumental support for both independent and commercial distributions. In recent news, GlassFish will be announcing its v3 release. It claims to have made numerous improvements including, simplified Web 2.0 style applications, better optimization for version specific Java applications, and a useful notifiable update center for GlassFish's new components. Currently, you can try out GlassFish v3 under Technology Preview 2 (TP2) and test it out on your local machine. WARNING: As noted on the Tech Preview site, the code is still in its raw experimental stages and should not be used to deploy production applications.

Satisfying Prime Directives:
PD#1 (Useful functionality):
GlassFish provides an open source referential implementation for developing high quality enterprise applications. Its support for Java EE v5 enables developers and companies to integrate with ease and to deploy business standard applications. The administration section is fully featured with a strong sense of security and management. I found that logging into the Admin Console to be very easy to configure and use. The Admin Console features tools that provide you a great deal of control over your serviced application(s). Admin Console also provides common administrator tasks through a straightforward web-interface which include: 1) Easy enable/disable applications, 2) service logs on applications currently running, 3) configurable Java Database Connectivity (JDBC) - module for wide range of database support and 4) many server side settings. GlassFish also provides scalable clustering techniques for rendering multiple in-memory state sessions. Although a great feature, I will need more time to find a better/suitable comparative data for cluster instances and its impact on scalability.

PD#2 (Ease of Installation & Deployment):
GlassFish has a number of resources including the very straightforward quickstart guide here. The quickstart guide helps you verify your server needs, gives you instructional steps into deploying your first web application, and using the administrative tools. I tested GlassFish on Eclipse v3.4 (on mac osx 10.5.4) using these instructions for installing the application server as a plugin and deploying my first Java EE application. There are also other supportive IDE's that make it just as easy to install GlassFish (as a plugin) and can be found here. As for deploying my first Java EE application, I also found this great screencast created by a fellow Sun developer named
Arun Gupta. The screencast has a bit of an audio glitch, but I found myself just turning the volume down and mimicking his actions.

PD#3 (Accessbility for Future Enhancements):
GlassFish's popularity has grown since Sun released its Binary (.jar) in 2005, where countless number of people in the millions tried it for the first time. The project has up to date news, discussion boards/forums, and RSS supportive mailing lists. Although GlassFish's licence agreements are semi-proprietary, in that some of its components are given out as binaries rather than pure source code, the community of active developers are still able to contribute to the development future of the project. Again, GlassFish is under CDDL agreement which authorizes anyone to make changes, fix bugs, and contribute new features. You can visit this site for more information on CDDL and GPL licenses. I also found this wiki page useful for having a general overview of which components are under which licensing term.

Final Thoughts:
In my brief experience with GlassFish v2, I've found myself more aware of the possibilities and power of one application server. Considering that this was my very first application server written in Java and for Java EE applications, I will need to give it more tests to verify its specifications. I've also heard of other application server alternatives to GlassFish, such as JBoss, Apache's Tomcat and Geronimo. Its a good possibility that I will post a comparison chart displaying its pros and cons. But I'm actually more tempted to wait for the highly acclaimed release of v3 for GlassFish.
After seeing that open source communities are now driving the market of consumers by its free price and popularity, I wouldn't be so surprised that big companies like Microsoft will start to become more open source.

No comments: