JBoss: A Robust, But Unpolished App Server
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
Managing relatively low-resource demands are one of the advantages of JBoss. It will run quite nicely in 128MB machines, which is a boon for development. Of course that's without most pieces of the support software stack. Somewhat like its behemoth competitors, such as IBM WebSphere, when you get all the sundry parts together it can become a memory hit.
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.
Connections to database servers (and other resources) are handled by the JCA (J2EE Connector Architecture) framework. Under ideal circumstances this takes care of transaction, security, and pooling required by the application client, but full-featured JCA adapters are still in short supply and JCA-JDBC wrappers are often necessary -- lucky you if they've already been satisfactorily coded.
Of all the elements added to JBoss in version 3.0, clustering has received the most attention. Rightly so, as it was the missing feature that barred the enterprise door. While it's true that not every organization needs or can handle multiple servers (much less a server farm), the ability to configure and manage clusters of application servers is kind of a de-facto proof of fitness. With its support for automatic discovery (node detection), failover, and load balancing -- along with hot deployment -- JBoss now offers a lot of scalability (and not just for the money).
Perhaps it's a cop-out, but application-server performance is in the eye of the beholder. Benchmarking is a nightmare because as middleware it's extremely difficult to isolate what may be causing performance bottlenecks. In general our testing (not benchmarking) would put JBoss at the low end of the performance range compared to WebSphere and BEA Weblogic (testing with Windows Server 2003, which has built-in application-server features, should be interesting); but we can't claim exhaustive testing in-situ.
JBoss can be downloaded with Jetty, JBossWeb, and/or JBoss-Tomcat, which handle the Web-page generation. These pairings aren't noted for speed but are well integrated. The built-in transaction manager supports both Container Managed Transactions (CMT) and Bean Managed Transactions (BMT). We found transaction handling to be tricky to program and not the best performer. For security JBoss provides a JAAS (Java Authentication and Authorization Service) based security manager, which supports the J2EE declarative security model.
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
Applications servers don't act alone. The software stack surrounding application servers may include transaction processors, message servers, portal software, multimedia servers, security processors, database servers, and more. For JBoss to take its place among the leaders it too needs to develop, acquire, or partner with other products that make up this stack. The JBoss Group is doing just that. For example, it is partnering with a German firm, AbaXX, to provide portal services, and Arjuna Technologies, whose ArjunaMTS was the transaction-processing core of HP's Bluestone application server. A current listing of partner support is available at the JBoss website.
Support and Community
With open-source software you should not expect handholding. On the other hand, JBoss Group can provide sophisticated support and consulting (its one way they make a living at this). There is also a very large and growing community of developers who provide forums, books, training, and other forms of support. With over two million downloads of JBoss in 2002, nobody out there should think they're working alone.
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.
Cons: Lacks some control and management features for PITH (Projects in the Huge); simple projects require only some programming knowledge; anything else and you'd better have depth.
Reviewed by: Nelson King
Original Review Date: 04/14/2003