Dr. Dobb's is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.


Channels ▼
RSS

Freedom of Choice


J2EE 1.3 is a suite of APIs, component models, and protocols for robust, multi-tier enterprise application development. The cornerstone of any J2EE solution is the application server, which provides a unified platform for these services. At the time of this writing, there were a dozen J2EE 1.3 compatible implementations available. I selected six leading products with publicly available evaluation downloads: BEA WebLogic Server 7.0 (beta), Borland Enterprise Server 5.0, IBM WebSphere 5.0 (beta), Macromedia JRun 4.0 (beta), Pramati Server 3.0, and Sybase Enterprise Application Server 4.1 (EAServer).

For testing, I designed a simple J2EE document management application, and deployed it with minimal tweaks on each app server (installed on a dual Pentium III/800MHz server running Windows 2000 Server Edition). The products all had a streamlined, wizard-driven installation process with a quick setup—except Sybase EAServer, which had the lengthiest and most complex installation. Like EAServer, Borland Enterprise Application Server is comprised of various existing products, but it has a fast, easy, wizard-based installation. In contrast, every installation of EAServer relies on an RDBMS-based installation repository. EAServer was also the largest download (almost 500MB) and the longest installation (over 20 minutes). The simplest was Pramati Server, with a lightweight 35MB installer that took under a minute.

All of the products offer not only dynamic deployment, but also dynamic updating of necessary J2EE archives by simply copying your modified archive into the deployment directory.

With the release of JRun 4.0, Macromedia has finally caught up with its heavyweight competitors. To simplify EJB development, Macromedia added stubless deployment and a slick, Swing-based Enterprise Deployment Wizard. With a modicum of configuration, JRun will even create database tables for your CMP Entity Beans.

WebSphere and WebLogic both ship with a series of development tools integrated into their application servers. Given only the source files for an EJB's business logic, both WebLogic and WebSphere automatically generate the EJB's home and remote interfaces, saving you coding time.

Borland offers similar features to jump-start development through its tight integration with the JBuilder IDE. While Borland Application Server works well with other IDEs, curiously, most of Borland's own RAD tools aren't well integrated into its application server. You'll need the JBuilder IDE for managing EJBs.

IBM's Application Assembly Tool lets you visually manipulate the structure of application modules through an intuitive GUI. This way, you don't have to worry about underlying XML deployment descriptors, as BEA's WebLogic Builder tool must do. In addition to validating their own deployment descriptors, BEA and Borland also have utilities that automatically migrate deployment descriptors from other vendors, easing transitions to their products. Pramati's Deploy Tool is less sophisticated. During my tests, it sometimes failed to eliminate manual XML editing, particularly for container-managed relationships and changes to existing EJBQL.

Vendors are starting to acknowledge your freedom of choice among development tools. For example, Macromedia JRun's Enterprise Deployment Wizard can run as a stand-alone tool, or as a plug-in for various IDEs, like Borland's JBuilder or Sun's Forte for Java. IBM also offers a premium package that integrates WebSphere functionality into the open-source IDE Eclipse, with some slick plug-ins.

The latest release of WebSphere has a redesigned Web-based administration console that's similar to WebLogic's, but with a read-only view of EARs, WARs, and EJB JARs that limits its usefulness. WebSphere also forces developers to use its cumbersome Application Assembly Tool to make and validate simple changes to EJB deployment descriptors, whereas WebLogic lets you do this right in the administration console. Another unique feature of WebLogic's administration tool is that its menu tree is actually a Java applet with rich context-sensitive menu operations that are readily accessible with a right mouse click.

Six App Servers At a Glance

 BEA WebLogic Server 7.0 Borland Enterprise Server IBM Websphere 5.0 (beta) Macromedia JRun 4.0 (beta) Pramati Server 3.0 Sybase Enterprise App Server 4.1
Company BEA Borland IBM Macromedia Pramati Sybase
Price $10,000/CPU $12,000/CPU Contact for pricing $899/CPU Pricing varies: starts at $50,000/25 CPU ISV Multipack $20,000/CPU Intel; $28,000/CPU Unix

J2EE 1.3 Certification Date 1/29/02 2/15/02 12/21/02 5/13/02 12/18/01 1/14/02

Architectural Considerations

BEA WebLogic, Pramati Server, and now Macromedia JRun, are all built on flexible application server foundations that are based on the Java Management Extensions (JMX) specification. JMX is an emerging Java standard for configuration and management that has several architectural benefits. Application servers that provide Web, EJB, and JMS containers implemented as JMX MBeans let you partition, manage, and recycle these individual services independently of each other, ensuring high availability of the hosted J2EE applications. Unused functionality can also be unplugged to reduce unnecessary overhead. In addition, JMX offers virtually unlimited extensibility through the use of custom MBeans, whether they're developed in-house or purchased from various third party vendors.

Although JMX is quickly gaining ground, the market for third party plug-ins is still maturing. Several non-JMX products with equally compelling degrees of plugability are already available. Check out Borland's white paper on its "Application Server Partitioning" technology (at borland.com). This is an attractive feature that allows greater flexibility for fine-grained app component partitioning.

Sybase EAServer really shines in its support for hosting a variety of non-J2EE industry standard components including ActiveX, CORBA, C++, and even PowerBuilder NonVisual Objects (NVOs). BEA WebLogic Server 7.0 also stands out with its sharp, bi-directional, COM interoperability through its bundled WebLogic jCOM.

For best-of-breed environments, Borland's Enterprise Server provides full Web server integration based on Apache 1.3, Servlet 2.3, and JSP 1.2. This includes Apache Tomcat 4.0 integration, JMS support via SonicMQ (with optional adapters available for WebSphere MQ and TIBCO Rendezvous), and CORBA IIOP integration through Borland's VisiBroker for Java.

With Java Message Service (JMS) now a requirement in the J2EE platform, many organizations are discovering the benefits of integrating Message-Oriented Middleware (MOM) into their enterprise Java applications. JMS with EJB 2.0's MessageDrivenBean is a simple, powerful solution for introducing a Quality of Service (QoS) layer to improve application responsiveness and increase scalability. If you haven't already invested in an MOM vendor, but have already paid for an application server license, you'll benefit from Pramati's and BEA's integrated, 100-percent pure Java implementations of JMS 1.0.2. By building messaging-aware Java components to the JMS specification, you can port your app to another MOM vendor when your messaging demands outgrow the abilities of your current application server.

Performance And Scalability

Despite the lack of any hard feature requirements in the J2EE spec, many enterprises demand some form of clustering, HTTP session failover, Web server plugability, adjustable caching, distributed garbage collection, and extensible load balancing.

The products I tested offer myriad approaches to HTTP session failover, ensuring that state information is preserved if the Web server fails over to another container in the cluster. BEA, Borland, Sybase, Macromedia, and Pramati all provide in-memory replication, and IBM uses a persistent store for HTTP session failover recovery. Under the hood, Pramati and BEA use UDP multicasting, while Macromedia's JNDI replication relies on JINI technology to dynamically locate peers in a cluster.

Performance has, and will always be, an important differentiator for app servers. A popular metric that's designed to measure the scalability and performance of J2EE-compliant containers is ECperf (available at ecperf.theserverside.com). ECperf advocates argue that this metric uncovers critical total-cost-of-ownership issues by helping customers assess licensing fees while considering both software performance and hardware requirements. For example, IBM and BEA have been engaged in a heated ECperf battle since January. Current numbers show that WebSphere requires more hardware to achieve the same performance as a J2EE application running on WebLogic.

In an attempt to eliminate an inherent point of failure, BEA WebLogic server 7.0 introduces the concept of distributed JMS destinations. Administrators can create virtual destinations, which are mapped to multiple physical destinations (JMS topics or queues) deployed on various servers throughout a WebLogic Server cluster. When a message is sent to a virtual destination, WebLogic Server uses a configurable load-balancing algorithm to determine the actual physical destination. If a server fails, incoming messages are redirected to other physical destinations hosted on healthy servers.

Vendor Value-Adds

Each of the vendors mentioned has gone the extra mile to provide some additional proprietary features worth considering. The Java Architecture for XML Binding (JAXB) promised to offer a standard API for mapping XML documents to Java objects, and vice versa, in a declarative fashion. With the final draft of JAXB 1.0 targeted for the fourth quarter of 2002, customers who have been waiting for portable data binding since JAXB's announcement at JavaOne 2001, may take solace in Sybase EAServer's "Message Bridge for Java." This offers a no-code XML-to-Java binding solution with a simple, intuitive GUI mapping tool. This EAServer extension drastically reduces the time it takes to perform XML-to-Java and Java-to-XML transformations.

JRun 4.0 continues to support the popular JRun Server Tags (JST) library, which is a simple alternative to extending the J2EE tag handler API for those already familiar with JSP syntax. In response to the portability issues raised by using this proprietary extension mechanism, Macromedia has announced that a future release of JRun 4 will provide a utility for packaging JSTs into a tag library that can be used on any J2EE-compliant application server.

With the introduction of local interfaces in EJB 2.0, Pramati Server 3.0's Fast RMI technology, which optimizes access to J2EE components by bypassing the RMI and TCP/IP socket layers (while maintaining remote semantics), is a work-alike vendor extension of debatable value.

Pramati and BEA both offer optimistic concurrency control features in their EJB implementations. Entity Beans can be configured and redeployed as "ready only," so that they're concurrently available to multiple users performing non-critical operations. WebLogic also offers JDBC multipools, which essentially let a single JNDI DataSource provide extensible load-balanced access to a set of database connection pools.

Although J2EE 1.3's new Filter component makes it easier than ever to support multiple types of client devices, the extended support for pervasive devices that's built into WebLogic—and now WebSphere—is worth a second look for organizations considering integrating mobile client applications. Also note that IBM's and BEA's application servers will run on not only flavors of Unix and Windows platforms, but mainframes as well.

Web Services Support

In anticipation of J2EE 1.4's strong focus on Web services, I looked into the Web services features offered by each application server. As I expected, products with the poorest support required the highest user expertise in SOAP, WSDL, and XML to build simple Web services on their platforms. Pramati offers the most primitive Web services support, with just the basic JAXP support required by J2EE. All of the other Web services toolkits at least generate client-side JAR files.

Borland Enterprise Server 5.0 comes bundled with Borland's XML toolkit and an enhanced version of Apache SOAP 1.1. JRun's Web services functionality is built on Apache Axis, the third generation of Apache's SOAP engine. JRun also includes a comprehensive Web services tag library that lets developers invoke Web services from within JSPs, using a simple, convenient syntax.

WebSphere, WebLogic, and EAServer continue to lead the pack with their second generation of Web services offerings. IBM incorporated support for SOAP, UDDI, and WSDL into earlier versions of WebSphere, and now offers substantially improved support through a built-in SOAP Protocol Handler, WSDL Generator, and automated mapping of SOAP invocations to EJBs. EAServer provides similar WSDL generation utilities and a graphical tool to automate Web services management in a UDDI registry.

BEA WebLogic Server 7.0 lets Web Service endpoints be generated from EJBs by adding special comments to the source code in a Javadoc-like syntax. Using this meta information, WebLogic Server creates the necessary WSDL interface and facilities to marshall and un-marshall SOAP requests to EJB components. BEA's approach is also the foundation of its new Workshop development tool (formerly codenamed Cajun) and has been submitted to the Java Community Process as a proposed standard.

Not surprisingly, none of these Web services offerings use the JAXM or JAX-RPC technologies that are anticipated for J2EE 1.4. But with all of the vendors participating in the various J2EE Web services expert groups, there's sure to be fierce competition to release compliant implementations once these technologies have matured.

Ratings

 Installation Efficient Development & Ease of Use Architectural Considerations Performance, Scalability, & AvailabilityAdministration & Configuration Web Services Support Overall Score
BEA WebLogic Server 7.0 (beta) excellent * * * * * ** * ** * ** * *15
Borland
Enterprise Server
fine * * * * * ** ** ** * *13
IBM Websphere 5.0 (beta) fine * * * * * ** * ** ** * *14
Macromedia JRun 4.0 (beta) fine * * * * ** ** ** *11
Pramati fast * * * *** * 7
Sybase Enterprise App Server 4.1 complex * * * ** * ** ** *10

Excellent Choices

Since the J2EE 1.3 release in September 2001, we've enjoyed the most widely adopted, mature platform available for secure, scalable business applications. Five of the six application servers achieved J2EE 1.3 certification within one month of each other, and all of the products I evaluated offer features once characteristic of only one or two market leaders. With another half-dozen vendors already bringing products to market, the breadth of choice should make it easy to find a J2EE 1.3 application server that's in tune with your organization's requirements.

Those eager to start working with the latest standards should note that Sybase, Borland, and particularly BEA, have all made early adoption a priority. BEA has had support for EJB 2.0 (in all of its various forms) since May 2000. WebLogic 6.1 also provided an early implementation of the J2EE Connector Architecture, and subsequently updated it in WebLogic 7.0 to comply with the final version of the specification. Macromedia and IBM have, until recently, resided on the opposite end of the early adoption spectrum. Macromedia is now clearly ready to take on the competition with its welcome redesign of JRun, and IBM has finally broken free of its historical lag behind BEA, being the second vendor to achieve J2EE 1.3 certification. Pramati Server 3.0 was the first J2EE 1.3 certified application server to hit the market.

At this writing, WebSphere Technology for Developers was still in beta, making Sybase EAServer 4.1 the first production-ready delivery of a J2EE 1.3 application server from a major vendor. The J2EE application server market is alive and well.


You can contact B.J. at [email protected].


Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.