JAVA EE SERVERS
I recently notice that Jboss changed the name of its community server version from JBoss AS to Wildfly. It took me some time to understand what was all the fuzz about, first I thought it was a new server but then I finally get it, Red hat was just making a bigger distinction between the JBoss supported (Jboss EAP) and community (now Wildfly) version nothing else, just like red hat and fedora.
You can find more information about it in the following link:
With this I realized that there are plenty versions of JEE servers in the market and is hard to understand for a non expert or a newbie which one does what and what is the difference between all of them, so I decided to write a post about the JEE Servers that are available, just to list some of its features and not a benchmark because that would require expertise in each server and I don't have that.
Before getting into serves here is a list of the specifications that a full Java EE 7 server should have, I will refer to it in a future as figure 1.
Apache tomcat is an open source web server, it has many years in the market and is very common to find implementations using it.
Tomcat is a web server because it supports the Java Servlet and JavaServer Pages and others related to them, the table below shows the specification version supported by the tomcat version.
Tomcat home page: http://tomcat.apache.org/
Jetty is a open source web container, it an Eclipse project and is hosted entirely at the Eclipse Foundation. It is known for be a lightweight server and be easily embedded in devices, tools, frameworks, application servers, and clusters. It has support for SPDY, WebSocket, OSGi, JMX, JNDI, JAAS and many other integrations.
The specifications that jetty has support are:
More information about jetty can be found in the following link:
Apache TomEE is an open source Java EE 6 Web Profile server, it is based on Tomcat with EE features, that's the reason of its name “TomEE” pronounced as "Tommy”. It is practically new its first release came out in April of 2012, but it is gaining popularity and it has the support of the apache community.
TomEE server supports more JEE specifications than tomcat such as Enterprise JavaBeans, Java Persistence API (JPA), and others. It comes in different packages each with different specifications, the following table shows a comparison of the different packages.
TomEE uses other project to provide the specifications:
- CDI - Apache OpenWebBeans
- EJB - Apache OpenEJB
- JPA - Apache OpenJPA
- JSF - Apache MyFaces
- JSP - Apache Tomcat
- JSTL - Apache Tomcat
- JTA - Apache Geronimo Transaction
- Servlet - Apache Tomcat
- Javamail - Apache Geronimo JavaMail
- Bean Validation - Apache BVal
- JAX-RS - Apache CXF
- JAX-WS - Apache CXF
- JMS - Apache ActiveMQ
- Connector - Apache Geronimo Connector
Use the following link for more information:
Glassfish is an open source Java EE application server sponsored by Oracle, it works as a reference implementation of the latest Java EE specifications. Its latest version Glassfish 4 supports the Java EE 7 specifications, so it should support all the specifications shown in figure 1.
It makes use of some others opens source projects to implement the specifications:
Also Oracle provides a commercial version of this server which offers support. The following links will provide more information.
Apache Geronimo is an open source server, it is Java EE 6 certified and it is based in OSGI offering a more modular design.
Geronimo also uses other source projects to implement the specifications:
In the following link you can find a list of all the components or projects used in geronimo:
Geronimo home page:
JBoss Wildfly and Jboss AS
Wildfly formerly JBoss AS is an open source Java EE server now sponsored by Red Hat. Wildfly is still in alpha version but it would've be the Jboss AS 8 version. It supports the Java EE 7 specifications shown in “figure 1”, and it is based in OSGI offering a more modular design.
It makes use of some others opens source projects to implement the specifications, such as:
Hibernate - http://www.hibernate.org/
RESTEasy - http://www.jboss.org/resteasy
Mojarra - https://java.net/projects/mojarra
Apache CXF - http://cxf.apache.org/
Red hat also offers a commercial version of Wildfly named JBoss EAP and it has all the benefits of a commercial product such as support, extra tools and many others. Its fees are not cheap it will probably cost tens of thousand of dollar, so be careful at the time of choosing a commercial server, the following link is a calculator from RED HAT so you can get an idea about the fees http://www.redhat.com/promo/eap_calculator/
Some of the links where you can find more information about Jboss are:
Oracle WebLogic Server is a commercial Java EE application server, its latest version is weblogic 12 is a Java EE 6 Full Profile, so the Java EE 6 specifications are supported. The following image shows the platforms supported by Weblogic.
As it is commercial counterpart from redhat, oracle provides support and many tools for maintain the server, but is not a cheap server it will probably cost tens of thousand of dollar also. The following link is a pdf about the costs so you can get an idea about the fees:
Some of the links where you can find more information about Weblogic are:
IBM WebSphere Application Server is a commercial Java EE application server, its latest version is WebSphere 8, it is JEE6 certiﬁed based in OSGI offering a more modular design, some of the features they include are:
● Enterprise JavaBeans (EJB) 3.1
● Java Servlet 3.0
● Contexts and Dependency Injection for Java (CDI) 1.0
● Bean Validation 1.0
● Java Architecture for XML Binding (JAXB) 2.2
● Enterprise Web Services 1.3
● Java API for XML-Based Web Services (JAX-WS) 2.2
The Operative Systems supported are:
As it is commercial as Weblogic and JBoss EAP, it comes with all the benefits from a commercial product but also its fees, the following image shows how much could it cost to have Webshpere:
In the following link more information about websphere can be found:
FUJITSU Software Interstage Application Server is a commercial server and support standards such as Java EE, Web Service, and CORBA. Interstage Application Server component technologies and development frameworks.
It has support for the following features:
The OS supported are:
- Microsoft Windows Server 2008 R2
- Microsoft Windows Server 2008
- Microsoft Windows Server 2003 R2
- Microsoft Windows Server 2003
- Windows Azure Guest OS 1.18~(4)
- Windows Azure Guest OS 2.6~(4)
- Red Hat Enterprise Linux 6
- Red Hat Enterprise Linux 5
- Solaris 11
- Solaris 10
For more information about fujitsu server go to the following links:
TmaxSoft's JEUS is a commercial Java EE certified application server. It supports the following specifications:
JEUS offer support for clustering, load balancing and has tools for the development and administration process.
For more information about JEUS go to the following link:
OW2 Jonas is an open source Java EE application server, it is Java EE 5 certified and has a Java EE 6 preview version, is based in OSGI offering a more modular design.
Jonas use other opens source projects to implement the specifications, and since it is based on osgi different options and you can choose what project to use:
- EasyBeans (EJB3 container) http://www.easybeans.net/xwiki/bin/view/Main/WebHome
- Tomcat/Jetty (Web container)
- Hibernate/TopLink/OpenJPA (JPA)
OW2 do not offer a commercial version of Jonas server but it offers a support subscription for professional support and training, it has tools for managing and clustering but they are for free.
In the following link more information about JONAS can be found:
Resin is a commercial Java application server by Caucho, it supports the Java EE 6 Web Profile. It supports Servlet, JSP, JSTL, EJB, Candi (Java CDI), JSF, JPA, and more. It is a lightweight server designed with CDI.It has Java monitoring and OS monitoring facilities available via built-in console or third party applications via JMX and REST
It has support for clustering and tools for application deployment, distributed caching, load balancing and messaging, and so on.
Resin can be used with Amazon Web Services for cloud deployment. More information about resin and amazon can be found in the following link:
The prices of the licenses of resin can be found in the following link:
Resin has an open source version http://resin.caucho.com/ , the differences between the open source and the commercial version, is the amount of tools offered by the commercial version, in the following link a comparison between the two versions can be found:
For more information about resin go to the following link:
Well these are the most known options that can be found for a JEE server, I try to list some of its features and useful links. As I said before this is not a benchmark, but for choosing one server first you have to check if you want a commercial option or open source option, then check what options are among between your budget and then evaluate these options, its features, the support, if it is open source the community support, the documentation and so on.
And finally here is a link where you can find which servers are compatible with each JEE profile: