Oracle Application Server vs. Weblogic vs. Glassfish

In the past few years as Oracle Administrator I’ve managed several types of application server, from single instance to clustered environments and from open source to proprietary software. And since the acquisition of BEA and Sun by Oracle, the choice of the right application server isn’t made it easier.

All the varieties of the J2EE application servers are available; on the moment I write this, those are:

  • Oracle Applications Server 10g, 10.1.3.5.0
  • Oracle Weblogic 11g, 10.3.4.0
  • Sun Glassfish 2.1.1
  • Sun Glassfish 3.0.x
  • Sun Glassfish 3.1 RC1 (since 2 February 2011)

I included Glassfish 3.1 because I was quite positively surprised by the manageability of the server in comparison with version 3.0.

So, the question is simple, which one do I choose. Well the answer is also simple: Choose the one that suits you best! But what are the differences between the application servers, besides the price. What do you expect from an application server?

To answer those questions is simple, if you only look at the basics, namely JDK support, availability, clustering and manageability. To answer those, the following matrix applies:

JDK Clustering Availability Manageability
OAS 10.1.3.x 1.4 Yes fail-over Opmn / emctl
Weblogic 10.3.x 1.6 Yes fail-over WLST
Glassfish 2.1.x 1.5 Yes No* asadmin
Glassfish 3.0.x 1.6 No No asadmin
Glassfish 3.1.x 1.6 Yes No* asadmin

(*: Note that failover is possible for Glassfish through a load balancer, for both Weblogic and OAS failover is done in the application server.

To be ready for the future and you want the most scalable and manageable J2EE server, I would choose for Weblogic server. Although the OAS is still available, Oracle is quite clear about it’s strategy, Weblogic is the infrastructure of choice for their products.

But what about Glassfish? Well Glassfish 2.1.x only supports the J2EE 5.0 stack, it can be upgraded to 6.0, but that only improves performance. Glassfish 3.0 can only run in a single instance and Glassfish 3.1 is not ready yet. And in my opinion, Glassfish will always be the little brother of Weblogic and will never reach the Enterprise class that Weblogic is on.

Another thing you might want to consider is manageability. All three kind of J2EE server have there own tooling supplied. OAS has EMCTL and OPMN, Weblogic has the WLST and Glassfish has asadmin. All three have a web-based management tool.

But the OAS tooling is quite passive in comparison with asadmin. But WLST is more powerful then asadmin. Note that opmn and emctl are also supplied with Weblogic, but I think you should use WLST, since that gives you a better idea of what is running and the log is put in the right place by default. Opmn is supplied for backwards compatibility I think, so the transaction between OAS and Weblogic is made simple.

Next you should consider scalability. You can add extra OC4J instances to an OC4J group, but that is not as easy as with Weblogic or Glassfish. With both Weblogic and Glassfish you can add quite simply extra instance with little to no impact on your environment. Another thing that falls under scalability is choice of JDK. For all three products you’re free on which JDK you use, next to the limitations. But only with Weblogic you can use multiple JDK’s in one J2EE domain, which makes Weblogic very flexible as a platform for hosting J2EE applications.

Conclusion, I must say, I’m quite pro Weblogic. But the best choice is done, by looking at all the factors and price is a big one. If cost weren’t an issue, I would choose Weblogic. As mentioned earlier, Weblogic is scalable, flexible and very well manageable with a very powerful scripting tool. If cost were an issue, I’ll choose Glassfish 2.1.x or wait for a while and choose Glassfish 3.1. Both are a very good and cheap alternative to Weblogic, the basic architecture is similar and Glassfish is very scalable. Another thing you must not forget is what type of application and how many there are going to run on the environment. If it is a simple web fronted J2EE application and it is going to be the only one, the best choice is Glassfish. If it’s the other way around and the applications rely on a secure identity management, the best choice is Weblogic.

As you can see, Oracle supplies a J2EE server for all kinds of markets. From free open source to high-end enterprise. The question is: Which one best suites your needs.