Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Choosing an Open Source Application Server for Java EE [closed]

I know this may be a recurring topic, but I have read a lot of articles and I still have doubts. Also, I would like to hear more recent opinions about this.

The main requirements of my application server are: flexible configuration, support for a extremely high number of concurrent users. It will be a system for the mobile communications industry, so it must have high availability as well.

I am going to develop a Java EE application and Open Source Applications Servers are my only option. I have used GlassFish for a very small project and I really liked it.

like image 546
Rafael Angarita Avatar asked Apr 15 '10 18:04

Rafael Angarita


People also ask

Is J2EE open source?

J2EE/Open Source Service Offerings Our clients benefit from our talent's extensive knowledge and refined skill sets, which span a number of leading application servers, frameworks and programming languages.

Are Java application servers dead?

There has been concern for nearly five years application servers are dead. Truth be told, they are not dead, but is their usage in decline? The simple answer is yes. Over the years, it appears corporate environments have decided the "return on investment" is not there when looking at Java application servers.

Which three products are considered Java EE application servers?

Examples of common Java application servers include Apache Tomcat, Eclipse Jetty, Caucho Resin, and IBM WebSphere, among others.

Which services must a Java EE server provide?

The Java EE provides a platform for developers with enterprise features such as distributed computing and web services. Java EE applications are usually run on reference run times such as microservers or application servers.


2 Answers

My current thoughts:

  • Small, Fast to start and simple: Jetty
  • Bigger and more robust and very large knowledge base of users: Tomcat
  • Bigger again, more features, good enterprise support, slower to start: JBoss

All can support large user bases and all will do 95% of use cases well.

I'd start by default at the top and move down the list as your situation/requirements get more complex e.g. how much Java EE support you need

Also if you are careful on not using any custom features changing at a later point should be relatively simple.

This is purely based on my personal experience and is a bit simplistic - one could write books on this!

like image 197
Pablojim Avatar answered Sep 17 '22 18:09

Pablojim


If you're looking for a Java EE server, you basically have two options: GlassFish or JBoss (Geronimo or Jonas just have too small communities and I'm not aware of serious references for them - which doesn't mean there aren't any - I wouldn't pick them). Both are serious platforms, support clustering and HA and have been used to build large scale clusters and offer commercial support if this matters.

Now, a quick summary of the various versions:

  • JBoss AS 5.1: Java EE 5 certified. Supports HA, clustering, comes with an admin console if you're XML averse (but doesn't support cluster setup through console yet)
  • GlassFish v2.1: Java EE 5 certified. Supports HA, clustering, better admin console than JBoss 5.1 (especially for the cluster setup, if this matters), great CLI tool.
  • GlassFish v3: Java EE 6 certified. Very new, doesn't support clustering, centralized administration. Version 3.0.1 to be released soon.
  • JBoss AS 6.0: Java EE 6 certified. Didn't reach General Availability yet. Can't say much about it for now, M2 might not be representative of final version.
  • GlassFish v3.1: Java EE 6 certified. Will add Centralized Administration / Clusters, High availability / State replication and more. To be released this year. See the official roadmap.

At the end, if you project won't go in production before 2011, I would consider Java EE 6. If not, then go for a Java EE 5 server. In any case, don't base your choice only on opinions of the web. Download both server, setup a clusters of at least four nodes on two machines (that's a minimum, use a bigger cluster if possible), run a benchmark with a representative proof of concept of your application. And don't hesitate to involve folks from JBoss and Oracle, I'm pretty sure they'll be happy to help at proving their solution is the best one :)

References

For JBoss, have a look at Bela Ban's talk Large clusters in JBoss (pdf) at JBoss World 2009. Also check the sessions from JBoss World 2010. For GlassFish, have a look at their stories and more specifically in the Telco. Contact Sun/Oracle and RedHat for more references.

like image 42
Pascal Thivent Avatar answered Sep 17 '22 18:09

Pascal Thivent