The Players
What does the bouquet to pick from look like? Very colorful. Beside the well know names like IBM, SAP, RedHat, Apache and Oracle we also have lesser know names in the list. Caucho's Resin, Apache's TomEE, OW2's JOnAS and SAP's NetWeaver Cloud are Web Profile only certified. All the others reached a Full Profile certification.
A full list of our participants with some furhter details is contained in the following table:
Appserver | Vendor | License | Profile | Vendor Support Available | Java Version |
GlassFish Server 3.01 | Oracle | OTN / Commercial | FP | Yes | HotSpot 6/7 |
GlassFish Server Open Source Edition 3.x | Oracle | GPL + CDDL | FP | No | HotSpot 6/7 |
WebSphere Application Server 8.x | IBM | Commercial (prod+dev) | FP | Yes | IBM JVM 7 |
WebSphere Application Server Community Edition 3.0 | IBM | IBM International License Agreement for Non-Warranted Programs | FP | Yes | IBM JVM 7 |
JEUS 7 | TMAX | Commercial | FP | Yes | HotSpot 6 |
Interstage Application Server powered by Windows Azure | Fujitsu | Commercial | FP | Yes | HotSpot 6 |
Interstage Application Server v10.1 | Fujitsu | Commercial | FP | Yes | HotSpot 6 |
Geronimo 3.0-beta-1 | Apache | Apache 2.0 | FP | No | HotSpot 6 |
WebLogic Server 12.1.1 | Oracle | Commercial / Free for Dev | FP | Yes | HotSpot 6/7 |
uCosminexus Application Server v9.0 | Hitachi | Commercial | FP | Yes | ? |
JBoss Application Server 7.x | RedHat | LGPL | FP | No | HotSpot 6 |
JBoss Enterprise Application Platform 6 | RedHat | LGPL / Commercial | FP | Yes | HotSpot 6 |
Resin 4.0.17 | Caucho | GPL "Resin Open Source" version "Resin Professional" Commercial | WP | Yes | HotSpot 6 |
TomEE 1.0 | Apache | Apache 2.0 | WP | No | HotSpot 6/7 |
JOnAS 5.3.0-M8-SNAPSHOT | OW2 | LGPL | WP | No | HotSpot 6/7 |
NetWeaver Cloud | SAP | Commercial | WP | Yes | SAP Java Server VM 1.6 |
Looking at your Requirements
The good message first. All the application servers listed on the compatibility matrix passed the Java EE 6 TCK (Technology Compatibility Kit) which basically means, that they deliver the same kind of functionality related to Java EE 6. Even if this contains a decent area of fuzziness due to many reasons. One is, that no TCK covers 100% of the specified features. But I'm sure you can come up with other reasons. What basically is a good message leaves you wondering which could be the right set of requirements to compare instead? It is obviously not a complete technical set of metrics but a combination of different aspects.
A simple example set of metrics could be the following:
- Source Code License (OSS or Commercial)
- License Costs (free for development and production)
- Support (development and/or production support available)
- Certified Java Version (6.0, 7.0 / HotSpot / Proprietary JVM)
- Java EE 6 profile (Full or Web Profile)
This is by far too less if you are doing a full blown product selection . You most likely are going to look at metrics from different categories (e.g. functional, non-functional, corporate, financial aspects) but for now this should be sufficient.
The Selection Process
Lets do it: On to the selection process in this simple example.
First a little disclaimer: This is a very very simplified selection process which really don't dig into all the dirty little details. It is only thought as a rough methodology idea for your own selection process! So, if anybody is unhappy about what I did, I am happy to read about it in the comments!
We are looking for an OSS server which supports the Java EE 6 Full Profile. That means we are going to kill all the commercial servers and the Web Profile only ones:
Appserver | Vendor | License | Profile | Vendor Support Available | Java Version |
GlassFish Server 3.01 | Oracle | OTN / Commercial | FP | Yes | HotSpot 6/7 |
GlassFish Server Open Source Edition 3.x | Oracle | GPL + CDDL | FP | No | HotSpot 6/7 |
WebSphere Application Server Community Edition 3.0 | IBM | IBM International License Agreement for Non-Warranted Programs | FP | Yes | IBM JVM 7 |
Geronimo 3.0-beta-1 | Apache | Apache 2.0 | FP | No | HotSpot 6 |
JBoss Application Server 7.x | RedHat | LGPL | FP | No | HotSpot 6 |
JBoss Enterprise Application Platform 6 | RedHat | LGPL / Commercial | FP | Yes | HotSpot 6 |
Five left. Two which are questionable from a license point of view. Both JBoss EAP 6 and Oracle GlassFish Server do have a commercial license (as to my understanding) but they still rely on the OSS server products and the licensed version is only relevant if you want to have support. With the next step I am going to kick all the servers which don't offer vendor support:
Appserver | Vendor | License | Profile | Vendor Support Available | Java Version |
GlassFish Server 3.01 | Oracle | OTN / Commercial | FP | Yes | HotSpot 6/7 |
WebSphere Application Server Community Edition 3.0 | IBM | IBM International License Agreement for Non-Warranted Programs | FP | Yes | IBM JVM 7 |
JBoss Enterprise Application Platform 6 | RedHat | LGPL / Commercial | FP | Yes | HotSpot 6 |
Which brings us down to three. Still not really a single result. Now lets intentionally remove IBM because they are not certified on HotSpot but use their own IBM JVM J9.
Appserver | Vendor | License | Profile | Vendor Support Available | Java Version |
GlassFish Server 3.01 | Oracle | OTN / Commercial | FP | Yes | HotSpot 6/7 |
JBoss Enterprise Application Platform 6 | RedHat | LGPL / Commercial | FP | Yes | HotSpot 6 |
That leaves us with JBoss AS 7 and GlassFish as the only real options today according to my little evaluation.
Recommendation
One could call me afraid of selection a single winner here. If you know me, you know that this simply isn't true. Given the initial metrics this is exactly the outcome and obviously the selected metrics are not sufficient enough to appoint a clear winner.
If you need a final recommendation you have to tweak the metrics to your needs. I would recommend looking a little bit further into:
- Market reach (e.g. downloads/customers/etc.)
- Maturity (e.g. availability in years since EE 6 final version)
- Development Performance (e.g. Startup-Time/IDE integration)
Remark:
I'm sorry for the fact, that I mixed the commercial offerings from Oracle and RedHat with the related OSS servers a bit. Given the fact, that I wanted to see a OSS server would have lead to a knock-out criteria with the vendor support requirement. Given the fact, that I really don't want to propose to use AS7.1.1.Final to anybody (see a very nice summary of the reasons done by henk) I personally think, that it is fair to recommend the commercial side for both servers.
good and recent overview only one correction for
ReplyDeleteWebSphere Application Server Community Edition 3.0
supports
IBM Java SDK 6.0.12 and future fix packs
IBM Java SDK 7.0.3 and future fix packs10
Sun Java SDK/JRE/JDK 6.0 Update 23
Sun Java SDK/JRE/JDK 7.0 Update 3
even IBM JVM J9 is recommended.
SUN JRE only compatible and only certified with
Geronimo Full Profile 3.0-beta-1
www-01.ibm.com/support/docview.wss?uid=swg27036745
http://www.oracle.com/technetwork/java/javaee/community/apache-ger-ee6-full-tested-config-1376611.html
Why Glassfish 3.01? This version is quite old, I'd expect Glassfish 3.1.2.x. It seems the whole 3.x major version is certified (even if they mention testing on 3.01), or am I wrong?
ReplyDeleteYou require vendor support, but what exactly do you get by buying vendor support? I've experienced Oracle's support before and you get to talk to an "engineer" who knows less about their product than you do. One of Oracle's support engineers actually asked me how to setup their application server.
ReplyDeleteIf you require vendor support, why do you also require OSS?
ReplyDeleteHi Unknown,
Delete1) I agree, that Support offerings in general (not only orcl) could have drawbacks and semi optimal 1st level supporters. But you may run into stuff (e.g. Security related bugs) for which you simply need fixes in production
2) And therefore it is a quite common szenario (as I have seen it) to develop and test on OSS but have a supported contract in production.
Hope that explains your questions.
Thanks!
-m
"That leaves us with JBoss AS 7 and GlassFish as the only real options today according to my little evaluation."
ReplyDeletei think you mean JBoss AS 6 ...
Nope. EAP6 = AS7
DeleteWhat about Jetty?
ReplyDeleteHi,
DeleteJetty importunately isn't certified.
Thanks for asking,
- M
Well, support is a joke nowadays. You can find all the information you want on search engines.
ReplyDeleteI care more about the AS being Open Source, so the odds of seing it end-of-life overnight are reduced, and above all I want it to WORK without an excruciating configuration process and without having to implement annoying workarounds for bugs that look so obvious you wonder whether someone actually tested the AS.
For example, it's obvious to me the author of this article never deployed a single application on Glassfish 3.0.1. Even simple applications fail to deploy or survive properly on it....unless you patch all the modules with newer libs versions.
However Glassfish v3.1.2.2 is another story and is definitely super reliable. This is production grade stuff here. And Jboss AS7 too. Others are good too. But imo these two are the best.
Thanks for your comment Fabien,
Delete1) Support is a critical part for companies. Especially when it comes to security fixes and updates.
2) I use 3.0.1 even in production ;) (Without manually patched libs)
If you come across any issues (you can reproduce) the GF team would be happy to have them in their JIRA to track them down.
- M
I do agree that Open Source is an important requirement, but I'm not so sure about commercial support and Full Profile Certification.
ReplyDeleteI've seen spec violations both in GlassFish and JBoss AS despite the certification, not to mention performance or resource issues which are not covered by the certification anyway.
I've been using TomEE 1.5.1 Plus recently, which does support the full profile (though uncertified) and I'm quite pleased with it.
Resin also supports JMS and web services and other things beyond the web profile.
Finally, both GlassFish and JBoss AS/EAP are not quite so open as it may seem. I wasn't fully aware of the AS vs. EAP releases policies until I read Henk's blog, but with GlassFish the situation appears to be even worse: 3.1.2.2 seems to be the last public release before 4.0, and all the 3.1.x updates delivered to paying customers are built from a closed source repository, see https://blogs.oracle.com/GlassFishForBusiness/entry/glassfish_support_from_oracle.