Top 6 Open Source Java EE Application Servers is brought to you in partnership with:

Masoud Kalali has a software engineering degree and has been working on software development projects since 1998. He has experience with a variety of technologies (.NET, J2EE, CORBA, and COM+) on diverse platforms (Solaris, Linux, and Windows). His experience is in software architecture, design, and server-side development.

Masoud has published several articles at Java.net and Dzone. He has authored multiple refcards, published by Dzone, including but not limited to Using XML in Java, Java EE Security and GlassFish v3 refcardz. He is one of the founder members of NetBeans Dream Team and a GlassFish community spotlighted developer. Recently Masoud's new book, GlassFish Security has been published which covers GlassFish v3 security and Java EE 6 security.

Masoud's main area of research and interest includes service-oriented architecture and large scale systems' development and deployment and in his leisure time he enjoys photography, mountaineering and camping. Masoud's can be followed at his Twitter account.

Masoud has posted 82 posts at DZone. You can read more from them at their website. View Full User Profile

Top 6 Open Source Java EE Application Servers

11.16.2009
| 69529 views |
  • submit to reddit

 This is a very basic review of active and available open source Java EE Application servers and Servlet container (Web containers) to let the community know which active containers are available and what is the general status of each container. The article can simply act as a start point for anyone need to select one of them for later use in development or product. Detailed comparison of these production cover many pages of a  tick book.

 

Full blown Open Source Java EE Application Servers:

Resin, a well known product from Caucho is an open source Java EE application server which has been around for quite a long time and many small and large deployment of it are serving small and large systems like DZone itself.

Current stable version of Resin is 3.1.9 which fully support Java EE 5 and the development version which will replace the current one is 4.0.1. Resin licensing schema is a bit different with other alternatives. They provide a GPL-ed version for open source distributer and evaluators while commercial usage requires paying Caucho some per/CPU - per/year  fees. Different editions of Resin is available with a different set of features and capabilities and each edition has its own pricing schema. You can find more about the different versions and licensing fees at: Licensing

Resin come with Clustering, high availability support and benefits from an integrated caching system. Similar to GlassFish Resin support hosting PHP applications using Quercus.

For the administration and management, Resin took an alternate path by providing a light weight monitoring application to let administrators and developers see status of different services in the application server and left the the administrators to perform administrative and configuration tasks trough configuration files.

When it come to development tools support you can expect NetBeans, Eclipse and IntelliJ integration along with integration with Ant, Maven, and Ivy.

  • Download link: http://www.caucho.com/download/  You can get version 4.0.1
  • How to start: goto install_dir/bin and issue /resin.sh start or resin.exe start   dependin on your OS
  • Monitoring Console: details: URL: http://127.0.0.1:8080/resin-admin/  You will need to create a user and password to proceed further. Follow the on-screen steps to create the user and password.

 

Geronimo: The Apache Java EE application server which is obviously distributed under ASF. Geronimo lacks behind GlassFish when it come to implementing new Java EE specification but it benefits from a good administration console compared to JBoss. Clustering is available trough 3rd party products like Terracotta and there is no out of the box support for clustering and high availability. Geronimo is well integrated with other apache projects like ServiceMix and ActiveMA. Current version of Geronimo is v2.1.4 and fully support Java EE 5 specification. Commercial support for Geronimo is available through IBM WebSphere Application Server Community Edition.

Two separate distribution of Geronimo is available, one with Jetty as web container and the other one with Tomcat as the web container. All Major IDEs support Geronimo as a development server.

 

 

GlassFish: Mainly developed by sun Microsystems and benefits from a modular, and extend-able architecture. GlassFish is in the front line of providing the community with new Java EE specification implementation and in the same time it provides all users with features like: advanced administration channels, out of the box clustering and high availability, OSGI runtime deployment and so on. Using Glassfish means that users can easily sign a contract and get support from Sun without need to change the deployment bits. current GlassFish stable version is GlassFish 2.1.1 and the next major version is GlassFish v3 which is a fully Java EE 6 compliant and OSGI based application server. The new version is due to be released on November this year. Open source GlassFish is accessible under CDDL and GPL licenses.

GlassFish benefits from integration with a wide set of Sun products starting from operating system (Solaris) up to the IDE (NetBeans). GlassFish ESB, Open Portal, OpenSSO and OpenMQ are some of the notable projects that GlassFish is well integrated with.

Another strength in GlassFish is integration with Sun HADB which can form a proven highly available infrastructure without spending any penny for the required software and licenses.

All Major IDEs support GlassFish as a development server and it means an easy start for developing Java EE applications using GlassFish.


 

JBoss: It was present in the open source community longer than other projects and benefits from Red hat support. JBoss Application server provides Clustering and high availability out of the box but the administration console which included in the distribution from version 5.1 is not advanced enough to let administrators manage the all application server resources . The included administration and management console is an embedded version of Jopr (http://www.jboss.org/jopr). This console will acts as a single point of administration and management for all JBoss technologies like ESB, cache et. Current version of JBoss is 5.1.0.GA and next upcoming version is 5.2. JBoss is distributed under LGPL and anyone interested can get commercial support from Red Hat. JBoss community distribution and enterprise distribution are two different package and and moving from community support to commercial support means installing an alternate version of Jboss named JBoss Enterprise Middleware.

JBoss application server benefits from integration with a wide range of middleware provided by JBoss. This products include caching, BPM, ESB, portal and so on. On the development side, it benefits from JBoss Developer Studio (not available for free) which is based on Eclipse and provide tooling for wide range of middlewares provided by Jboss.

All Major IDEs support JBoss as a development server and it means an easy start for developing applications on top of this application server



JOnAS is one the flagship projects in OW2 consortium and in contrast with having less buzz in the news and blogosphere it benefits from a profound modular architecture based on OSGI. JOnAS administration console is well designed and benefits from a slick user interface. Jonas benefits form integration with JASMINe for designing, deploying and administrating a clustered environment.

Current version of Jonas is 5.1 which fully support Java EE 5, the next planned version is 5.2 which is due to be released in Feb 2010 with basic support of Java EE and self management. Major IDEs like Eclipse and NetBeans support JOnAS as a development server. Jonas is distributed under LGPL

 


Servlet Containers:


Jetty: Jetty is considered an alternative to Tomcat to some level. Because of the differences between these containers architecture each of them has its user base. Jetty is considered lighter, easier to embed and highly modular while Tomcat is considered more feature rich. Both  projects benefit  from a good performance under heavy load but it certainly can change from version to version and between different use cases. A cluster of jetty instances can be configured using any of  Gigaspaces, WADI, Terracotta, etc.  Jetty does not have a management console and everything should go through the configuration files by adding required changes to the configuration files. A good comparison between Tomcat and Jetty can be found at: http://www.webtide.com/choose/jetty.jsp

 

  • Download link: http://www.eclipse.org/jetty/downloads.php
  • How to start: goto install_dir/bin and issue ./jetty.sh start or jetty.bat start depending on the OS
  • Administration console details: No administration console.

 

Note: before attempting to start Jetty add following line in the install_dir/bin/jetty.sh or jetty.bat depending on the OS.

For Windows:

set JETTY_HOME=path/to/jetty/install/dir

For Linux, UNIX..:

export JETTY_HOME=path/to/jetty/install/dir

 

Tomcat: Apache tomcat was around for past 10 years and it is the most widely used Servlet container. Many of the shared host providers provide Tomcat hosting for their customer while you can rarely find GlassFish, Geronimo, JBoss and JOnAS hosting in the Internet. Apache Tomcat is distributed under Apache License and its current version (6.0.20) supports Servlet 2.5 and JSP 2.1. Apache Tomcat comes with a bundled management console which provides administrators with very basic configuration capabilities. Most administration and management tasks should be done by editing the configuration files. Tomcat is supported by any known IDE and build/ deployment tools and it shows it popularity in the community.  Tomcat come with built-in clustering and session replication support.


Note: before starting tomcat add following line in the install_dir/conf/tomcat-users.xml inside the tomcat-users  node:

<user username="tomcat" password="tomcat" roles="manager"/>

Conclusion: None of this projects can fit all development and  deployment plans and requirement. Each of them has its strenghts and weak points compared to other 5 competitive projects. What one need to do is testing all of them and decide which one is better.



Blog: http://weblogs.java.net/blog/kalali/
Contact: Kalali@gmail.com
Published at DZone with permission of its author, Masoud Kalali.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Comments

Ryan Developer replied on Mon, 2009/11/16 - 8:08pm

I think Caucho Resin deserves to be mentionedin this list too. It's also open source with commercial support available. They are currently working on a Java EE 6 Web profile release.

Vasilii Lukoyanov replied on Tue, 2009/11/17 - 2:00pm

Good overview, but it would be more impressive if you privided pros and cons of enlisted appservers.

Visit my website

Masoud Kalali replied on Wed, 2009/11/18 - 6:32am in response to: Ryan Developer

Hi Ryan,

I included Caucho Resin.

Thanks for bringing it up.

 

 

Kamal Mettananda replied on Wed, 2009/11/18 - 7:24am

Thanks for the list and details; but I think it would be far better if you could compare some of these with pros and cons helping us to choose.

Web: DigiZol

Scott Ferguson replied on Wed, 2009/11/18 - 11:30am

Thanks for adding Resin! I would like to point out, though, that Quercus is a Caucho project, since that's a bit unclear from the description.

Tyler Wilchek replied on Fri, 2011/02/25 - 3:25pm

Does Open Source really cost less in the long run? Does Commercial Software provide superior support? If you have not considered all of these factors, join us for an in-depth look at the trade-offs between Open Source and Commercial Solutions in our live webinar on March 9. http://www.jinfonet.com/webinar/lp20110309.html

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.