JBoss: A Robust, But Unpolished App Server
April 14, 2003
A credible argument can be made that application servers are the key element in large scale web applications, an important piece in Web services development, and in general one of the most strategic pieces of software for the enterprise. All of the major software companies -- IBM, Microsoft, Sun, and Oracle -- have been competing aggressively for this piece of turf. Then there is JBoss from the JBoss Group -- open source and free -- that in the face of some fierce competition has become a contender. Now in its third version (with a fourth in the works) JBoss aims to do for application servers what Linux is doing for operating systems: provide a robust, well-featured, and low-cost alternative. Judging from what we've seen, it largely succeeds -- as long as you understand the ground rules.
The most important ground rule is obvious from the start. JBoss doesn't provide a simple OOBE (out of box experience). After downloading the JBoss package, the first steps include setting up folders, unpacking, and then using a JDK 1.3 (or later) compiling and testing the program. JBoss is distributed as source code -- raw, so to speak. This is familiar ground for programmers and Java developers. However, if this approach is in any way intimidating, then JBoss probably isn't for you.
On the other hand, we didn't find installation and setup of JBoss to be unusually demanding. In a sort of Darwinian way, its initial requirements are simply a precursor to the demands of developing complex n-tier Web applications. Almost by definition application servers are involved with very complicated software; as Scott McNealy would say, "Get used to it."
Setup and Administration
As you start working with JBoss it's important to pay attention to its current support for standards (EJB, JMS, Servlet, JSP, JMX, JNDI, JDBC, JavaMail, JAF, JTA, JAAS and non-Java). As you get further into development, an understanding of what JBoss does, does not, or partially supports may be important. Unfortunately, given the nature of Java standards and the way JBoss is developed, the specifics of standards support are not always fully documented. That and mainly a "clean-room" rewriting of J2EE code are the reasons why (as this review is written) JBoss is in brouhaha with Sun over J2EE compliance.
JBoss exploits the JMX (Java Management Extensions) very well, making almost every element a separately manageable MBean. You should expect some variation in JBoss behavior on different platforms. We found clustering in particular to be problematic. Don't expect integrated GUI support for managing all the elements. This is one of the things you pay for in products like IBM WebSphere or BEA WebLogic.
State management (a crucial feature of an application server) is handled by either CMP 2.0 (Container Managed Persistence) or BMP (Bean Managed Persistence). Both implementations are solid. JBoss supports the construction of Java-based Web Services with the JBoss.Net extension (the .Net hints at further support). Its tight implementation with Axis JAX-RPC insures that JBoss puts Web Services on the developer's list of possibilities, but it's not in the same league with other Java Web Services tools or Microsoft .NET.
One thing you do not get from JBoss is a development environment. As with systems-level software, some people will prefer command-line and scripting tools as opposed to highly abstracted GUI tools. On the other hand, JBoss easily defers to the likes of Borland JBuilder when it comes to creating EJBs or remote testing.
Sum of the Parts
Support and Community
JBoss is already robust enough to handle many mission-critical applications. The JBoss Group and its supporters are aggressively collecting the chits that will give JBoss entrance to larger enterprise-level projects. That hasn't been completely accomplished yet, but it will pay to keep an eye on the progress. It will pay because like Linux, JBoss is already a high-quality piece of application server software that can, under the right circumstances, do the job for a lot less money.
Pros: Free. Runs on any Java platform; is robust and can handle mission-critical applications.
Reviewed by: Nelson King