JPz'log Coin Coin and Plop da Plop

5Sep/0711

The Java jungle: application servers

As promised in this previous post, I will start this short serie by the JavaEE application servers jungle. As a side-effect I won't consider Tomcat as it is not a full-stack application server. Also, I will only consider the opensource JavaEE servers.

JBoss

JBoss is an obvious option when it comes to JavaEE application servers. In fact, it delivers very well. I found the JBoss application server to be very easy to use. The documentation is good. You quickly forget that you are running it once your favorite IDE has been set-up. Also, the startup time is pretty fast (in fact, JBoss is the fastest that I have tested).

Of course JBoss is not perfect. There is not proper web administration console. Adding new resources (e.g., a new JDBC datasource pool) needs to be done by hand. This involves editing a few XML files and getting used to the files locations. There is nothing complicated in this though: it is just a matter of reading a bit of documentation and copying/editing sample files. This is yet not the simplest for teaching purposes. Apart from that, I like this application server a lot, and I encourage you to check out their impressive suite of middleware solutions.

JOnAS

I have not tested it as the stable releases are only JavaEE 1.4 certified.

Apache Geronimo

At first sight, I thought that Apache Geronimo would be roughly a JBoss clone. I was so wrong!

Geronimo is a pleasure to work with. The IDE support is very good (Eclipse, IntelliJ IDEA). It comes with a very good documentation. Last but not least, it has the best web admin console I have seen. You can do pretty much anything from there. For example, you can add JDBC datasource pools with a very intuitive wizard and Geronimo will download the drivers for you... or provide you with a link when some legal restrictions apply. You can also opt for Tomcat or Jetty as your servlets container which is very nice (to me, Jetty is superior by far to Tomcat...).

I was very impressed with Geronimo, yet I won't use if for teaching purposes. The startup is a bit slow: I suspect that the GBeans framework (IoC) flexibility price is some CPU time. But my main complain is related to OpenEJB, the EJB container that is used by Geronimo. For some (biiiip)king reason, I could never manage to retrieve a remote session bean through JNDI from a standalone Java application... The lookup would always fail and I have really no idea why... This was never a problem with both JBoss and Glassfish (using the same application of course).

Glassfish

This is my choice :-)

Glassfish is the reference JavaEE implementation and it is pretty slick. The documentation is excellent as well as the IDE support (although IntelliJ IDEA 7 run console always gets disconnected from the server, which is a bit annoying). The administration console is very good, yet a bit less powerful than the one of Geronimo. The startup time is ok.

I also enjoy the fact that Glassfish supports multiple independent domains (i.e., domains are like Oracle instances). This is a must-have feature for labs as pair of students can have their own domains instead of having to reuse a (possibly broken!) one that was left from a previous lab session. The command-line asadmin tool is just great and it is very easy to manage instances, deploy applications, backup or restore domains and so on. The future Glassfish v3 is probably going to be highly attractive as it will support some nice features such as the direct deployment of RoR applications using JRuby.

Verdict

Glassfish wins by a narrow margin over Geronimo (stupid OpenEJB!). I won't use JBoss for my teaching, not because of flaws but mostly because it lacks a proper administration console. Overall, Glassfish provides the most straightforward application server experience. It also looks to have a very bright future with the upcoming version 3 ;-)

Update: I have nearly launched a troll :-)

Share this post:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • DZone
  • Live
  • Netvibes
  • StumbleUpon
  • Technorati
  • FriendFeed
  • Wikio
  • Twitter
  • Identi.ca
  • Reddit
  • RSS
  • Slashdot

Related posts:

  1. The Java jungle
  2. The Java jungle: integrated development environments
  3. OpenEJB is making useful progress
  4. Apache Geronimo 2.1 is out
  5. Glassfish v2 is out!

Comments (11) Trackbacks (3)
  1. Interesting viewpoint, it is not too common to see a review about how suitable software products are for teaching :-)

    It would be interesting to hear more about class room specific issues.

  2. “It would be interesting to hear more about class room specific issues.”

    I’ll think about that :-)

  3. I follow you. I’ve used JBoss for years to teach J2EE 1.4 at university. I had the same problem with administration. Some students would hate me because of the lack of an easy to use admin tools. This year I’m migrating all my courses to Java EE 5 and using GlassFish. I intend to use asadmin (wrapped in ant task) but also show the students how to use the GlassFish admin console.

  4. bonjour
    je suis élève ingénieur en informatique et je voudrais apprendre java pour cette année (en solo). j’ai déja fait plusieurs choses en C/C++ mais aussi en C#.
    le seul probléme c’est que je ne sait pas par où commencer!!
    des conseils???
    merci d’avance
    khaled.essghaier@gmail.com

  5. @Khaled : livres, articles sur le web, etc.

  6. @Antonio: congrats on teaching J2EE 1.4 as I could not bear EJBs before EJB 3 came out ;-)

  7. I completely agree with you. Since I move to Glassfish I found no reason to look back. The multi-domain feature also is great for my development team to create production, testing, etc. environment in same application server.

  8. Great Blog! It’s encouraging to hear how easy it is to use GlassFish.

    Thanks!
    Jane

  9. You should be very happy with OpenEJB 3.0 (Geronimo 2.x) as we now have some pretty great functionality for allowing you to create the JNDI names exactly as you want them. We’re pretty excited about the feature: http://openejb.apache.org/jndi-names.html This is coming out in the forthcoming OpenEJB 3.0-beta-1 or Geronimo 2.0.2.

    We’ve also brought back the OpenEJB/Tomcat integration which even adds full annotation support for Servlets in Tomcat.

    Another return in OpenEJB 3.0 is the embedded testing (Container Driven Testing) abilities allowing you to test your ejbs in your unit tests during your build. And in case you’re really at home in GlassFish, we do support their deployment descriptors so you could use OpenEJB for unit testing and still deploy your app into GlassFish.

  10. Ah that is really good David! I’ll definitely have a look at this.

    BTW do you have plans for “domains/instances”? Any work ahead regarding the Geronimo startup times?

    Cheers

  11. What’s wrong with Geronimo startup times…is 12 seconds not fast enough ? ;-)


Leave a comment


JPz'log is Digg proof thanks to caching by WP Super Cache