Adam Bien's Weblog

How To Choose A Java EE Application Server? (Mail Of The Week)

"...I'm trying to come up with an architectural philosophy for my company with respect to the selection of COTS or Open-Source tools (mainly app server and messaging middleware)..." "...Also, I remember you mentioning a certain number of application servers becoming compliant with JEE6 in one of your JavaOne talks. Do you happen to have any reference information that I could site that documents how quickly vendors are implementing JEE6 compliant app servers?..."

Choosing an application is not very different from choosing a Java SE implementation. I would start with the Sun's (o.k. Oracle's :-)) JDK, before I evaluate the Oracle's JRockit, IBMs, or previously BlackDown or kaffe (also I used kaffe in an interesting project) implementation.
The question is actually not what application server to use, but with what vendor the Proof Of Concept should be started. I would start with Glassfish v3. It is the Reference Implementation, and is already used in production. Glassfish is well composed mix of: Weld (RedHat), Mojarra, EclipseLink, Bean Validation (RedHat), Felix (Apache) or Equinox (Eclipse), Jersey, OpenMq (...). It is "interoperable" (smoke tested) with JBoss 6m5 and SIWpas. The interoperability with WebLogic will improve over time (with the support of Java EE 6 in WebLogic).

The most interesting thing is the nature of the Proof Of Concept. I would suggest the following:
  1. Implement a common use case iteratively, evaluate also the developer experience (re-deployment times, stability, feedback)
  2. Also evaluate integration into a CI environment, Maven integration etc.
  3. Implement brutal (no think time, many concurrent clients) stress test. Measure the performance degradation, memory consumption, the amount of threads and transaction throughput over time. Stability is the key.
  4. Performance actually doesn't matter - all major application servers are fast enough for enterprise applications.
  5. Check the support / licensing. It is important to your manager / client

I create a simple matrix (Wiki) and confront all stakeholders (operations, management, product owners, developers, architecture board) with the results. Sometimes the results are inconvenient, so you will have to escalate these.

NEW workshop: HTML 5 and JavaScript Essentials, Three days in April 2017: from Java EE 7 Architectures over Microservices to Performance, Troubleshooting and Monitoring
On demand workshops: Java EE 7: Bootstrap, Effective, Testing and Microservices available for streaming.


A book about rethinking Java EE Patterns


I think the most important factor right now is how well Java EE 6 is implemented and whether it works properly. For that, I have found Glassfish 3.1 builds come out on top. Since it is the RI, it has an amazing hot deploy feature and there are no licensing issues, Glassfish is a clear winner. The only worry I could see is that it will receive less attention now it is under Oracle and they have a competing Java EE server.

Posted by Andy Gibson on October 22, 2010 at 08:34 PM CEST #


JBoss 6 looks promising. Resin / SIWpas also. It is actually amazing, how many appservers work on Java EE 6 support one year after the introduction of the spec...

The quality of the implementation should become obvious at latest during the stress tests

thanks for your comment!,


Posted by on October 23, 2010 at 12:39 AM CEST #

@Andy thanks for the kind words on GlassFish. I'd just like to point out that the entire 3.1 effort is something constructed and executed under the Oracle "regime", so I feel quite positive that there is full commitment to GlassFish. Also check out if you haven't already.

Posted by Alexis MP on October 23, 2010 at 03:24 PM CEST #

just dont choose weblogic!

Posted by steven on October 24, 2010 at 06:23 PM CEST #

JBoss 6 does look promising, but I often find JBoss has quality issues in initial releases. I don't know whether it is the release-early, release-often, but its not good if I'm having problems deploying basic apps in Milestone 5.

Overall, if people are looking for a good app server to work with now instead of when JBoss releases and gets the kinks worked out, Glassfish is the way to go. SIWpas is Tomcat with all the other pieces thrown in which is like some Franken-server. I tried it out too a while back and it failed the smoke test.
Caucho/Resin is one I've been meaning to try out, but they are a commercial offering which is not in itself a bad thing, but is there much point developing with a server if you aren't willing to pay for the license to deploy?

@Alexis, you're welcome, Glassfish 3.0+ was ok/good, it had a lot going for it. The initial releases had issues, partly from Weld, (see JBoss above) which were cleared, but 3.1 has pulled things together quite a bit. I use it for just about all my current development and tinkering. Great Job,

Posted by Andy Gibson on October 25, 2010 at 09:02 PM CEST #

Post a Comment:
  • HTML Syntax: NOT allowed
Online Workshops
...the last 150 posts
...the last 10 comments