Application servers are the one category of software product that seems to be on everyone's mind these days. No longer is there any doubt in my mind that n-tier applications are the future. Certain applications will benefit from a heavy-client architecture, such as desktop publishing, but most will have at least some portion of their logic running on the middle tier.
While data-intensive tasks will still run more efficiently in the database tier, key business rules and HTML-client generation will undoubtedly be handled by the application server. Every major software vendor has thrown the proverbial hat into the app server ring. Leaders are starting to emerge, but it's important to note that the market penetration for application servers is still less than 10%.
We learned a valuable lesson counting votes in Florida: it's not smart to declare any winners until more precincts have turned in their totals. However, IBM is aggressively targeting the application server market with their WebSphere line of products, which is how I came to spend the past several weeks working with their WebSphere Advanced Server and WebSphere Studio.
IBM WebSphere Editions
IBM sells a fairly large number of technologies under the WebSphere marketing umbrella, which are bundled into three versions of the application server:
WebSphere Standard Edition competes directly with other low-end dynamic Web server technology such as iPlanet's recently announced Web Server Enterprise Edition and Application Server 6.0 Standard Edition. WebSphere Standard Edition and WebSphere Advanced Edition are based on the same code line and are written in Java. While the Enterprise Edition shares many of the same features, it's constructed from a different code line that's based on IBM's Component Broker technology. The WebSphere Advanced Edition version 3.5 is likely to be the most popular of the three packages, and this is the software I took a look at.
- Standard Edition: Supports static HTML pages, servlets, JavaServer Pages, and XML
- Advanced Edition: Standard Edition features plus Enterprise JavaBeans
- Enterprise Edition: Advanced Edition features plus CORBA
IBM WebSphere Advanced Edition
Although IBM offers an enterprise-class Java development environment in the form of VisualAge for Java, JSP developers and Web site designers may find VisualAge a little difficult to learn. To address this market requirement, IBM provides a simpler development environment for Web site development called WebSphere Studio.
The reviewer's guide for WebSphere discusses both products in detail, and I recommend that you use WebSphere Studio if you plan on working with the WebSphere Server. WebSphere Advanced Edition and WebSphere Studio are packaged as separate installation kits on individual CDs. WebSphere's installation program allows you to accept a default installation process, or you can choose custom installation. The former overwrote my existing Apache Server installation on port 80 - which is my biggest gripe with every application server I've ever worked with.
Despite this small hiccup, the installation was painless and simple. The only problem I encountered was that the installer failed to create the administration user ID and password for the server. I was able to correct the problem right away by reviewing the installation manual. In fact, the most obvious improvement in this release of WebSphere is the enhanced installation and administration tools. The IBM HTTP server that comes with WebSphere can be managed through a browser interface that's crisp and well organized, as shown in Figure 1.
Both IBM and Oracle are embracing the Apache server as the HTTP server of choice for their application server products. While the choice is excellent, configuration isn't always easy. The browser-based administration tools make the management task relatively simple, compared to using Apache's arcane configuration files and syntax.
IBM also supports other popular HTTP servers, including iPlanet Enterprise Web Server, Microsoft Internet Information Server, and Lotus's Domino Application Server. Once I had the Apache server configured, I installed WebSphere Studio, which is tightly integrated into the WebSphere Server. I highly recommend that you use these products in tandem, as it's much easier to work with WebSphere through the Studio interface.
The entire application server market has rallied around the J2EE platform, and IBM WebSphere is no exception. Despite IBM and Sun's much publicized spat over J2EE licensing, I fully expect IBM to tackle J2EE certification for the WebSphere Application Server. The J2EE is chockful of required programming interfaces, but most developers will be concentrating on the big three: JavaServer Pages, Java servlets, and Enterprise JavaBeans.
The WebSphere Advanced Edition is all about J2EE programming. If you haven't had much experience working with J2EE, you may find it easier to start with JSP and servlets. Through them you get access to application data within a relational database using a simple programming paradigm. JSPs and servlets generate standard HTML pages from this data, so the resulting applications are compatible with even the lowest-common-denominator Web browsers. (You can even use servlet technology to generate browser pages for wireless devices using WML.)
IBM organizes logical groups of similar content into WebSphere "applications," which can consist of servlets, JSPs, or Enterprise JavaBeans. According to the J2EE specification, servlets and JSPs are used as the tools for generating the user interface layer of the application.
Core business rules and transactions are implemented by using Enterprise JavaBeans - session beans and container beans. The former handle the business rules and transaction logic; the latter handle the data persistence (e.g., storing records in a database).
While Sun's J2EE specification describes the various Java APIs that a vendor is required to support, actual implementation is left to the individual application server vendor. For example, vendors are required to support "stateful" session beans to implement transactions, but the actual transaction layer is up to the vendor. The speed and robustness of a vendor's EJB implementation is completely dependent on the transaction layer that the application server is based on.
WebSphere 3.5 offers a strong transaction layer on which its J2EE foundation is based. IBM supports both bean-managed persistence for EJBs - which leaves the detailed programming in the hands of developers - and container-managed persistence for DB2, Oracle, and Sybase. WebSphere 3.5 leverages JDK 1.2 and transaction enhancements such as failover and load balancing.
WebSphere supports additional standards in this release, such as LDAP (Lightweight Directory Access Protocol), and a copy of IBM's SecureWay Directory Server is bundled into the Advanced Edition to support LDAP. IBM's goal is to provide a complete, integrated stack of products from the database to the application server all the way to application development tools.
In order to manage application servers more carefully, WebSphere 3.5 includes Tivoli Ready modules that allow the server to be managed by IBM's Tivoli tools. IBM has made improvements in other areas of the server in this release as well, including integration with Domino, VisualAge for Java, and WebSphere Commerce Suite.
Choosing an Application Server Platform
Overall, WebSphere's biggest strength is probably its integration with the DB2 database and the rest of the IBM product stack. While the ultimate goal of the J2EE is standardization and interoperability, the reality of this vision as far as commercial products is concerned tends to vary. Vendors such as IBM that market a database, application server, and development tools will tend to have greater integration within their own stack. It's the classic "best of breed" versus "integrated suite of products" problem.
That's why I recommend that any organization looking to standardize on an application server take a very close look at the various products on the market. While they all tend to have the same set of features, implementation of those features tends to vary widely, even within the realm of the J2EE. For example, IBM provides the WebSphere Studio product that features a simplified interface for developing servlet-based Web applications. Developers who are looking for a simple platform for managing servlet-based applications will likely find the combination of WebSphere Studio and WebSphere Advanced Edition to be compelling.
Conversely, programmers who are building cross-database applications may find BEA's WebLogic more compelling, and corporations that want to leverage their PL/SQL programming skills will lean toward Oracle's 9i Application Server.
I don't mean to suggest that these are the only reasons to select one particular product over another, and there are lots of reasons for choosing IBM's WebSphere product line. However, I highly recommend working with these products for a while before you make a selection. The devil is definitely in the details.
IBM offers the Advanced Edition for most of the popular server platforms, including AIX, Solaris, Windows NT/2000, and HP-UX. If you're looking for an enterprise-class application server, IBM has put together a comprehensive package worth considering under the WebSphere umbrella. However, if you're interested in building JSP/servlet applications and don't need directory services integration, EJBs, mainframe access, and advanced failover capabilities, WebSphere Advanced may be more than you're looking for.
Jim Milbery, a software consultant with Kuromaku Partners LLC (www.kuromaku.com), based in Easton, Pennsylvania, has over 17 years of experience in application development and
relational databases. He is the applications editor for Wireless Business & Technology and the product review editor for Java Developer's Journal. [email protected]