State of Open Source Java EE Application Servers
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.bat 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.
- Download link: http://geronimo.apache.org/apache-geronimo-v214-release.html
- How to start: goto install_dir/bin and issue ./geronimo.sh start or geronimo.bat start depending on the OS
- administration console details: URL: http://localhost:8080/console/ credentials: system/manager
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.
- Downlod link: https://glassfish.dev.java.net/downloads/v2.1.1-final.html
- How to start: goto intall_dir/bin and issue asadmin start-domain
- Administration console details: URL: http://localhost:4848 Default credentials: admin/adminadmin
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
- Download link: http://www.jboss.org/jbossas/downloads/
- How to start: goto install_dir/bin and issue ./run.sh or ./run.bat depending on the OS
- administration console details: URL: http://localhost:8080/admin-console/ default credentials: admin/admin
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
- Download link: http://wiki.jonas.ow2.org/xwiki/bin/view/Main/Downloads
- How to start: goto install_dir/bin and issue ./jonas start or jonas.bat start depending on the OS
- administration console details: URL: http://localhost:9000/jonasAdmin/ Credentials: admin/admin
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 Linux, UNIX..:
- Download link: http://tomcat.apache.org/download-60.cgi#6.0.20
- How to start: goto install_dir/bin and issue ./startup.sh or startup.bat depending on the OS
- Administration console details: URL: http://127.0.0.1:8080/manager/html Credentials: admin/admin
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.