by Matt Gillespie
The application server is a software platform that sits on top of the operating system and provides an array of services to support applications. This article describes what industry-leading application server implementations share in common, specifically calling out points of similarity and difference among Microsoft .NET*, BEA Web Logic*, and IBM WebSphere*. It targets IT managers and decision makers, and to a lesser extent, solutions architects and developers, building familiarity with application servers generally and with these three products specifically. The paper also shows, at a high level, how each of these application servers target implementation on Intel® architecture, building upon Intel's strategic alliances with Microsoft, BEA, and IBM.
Intel has worked closely with major producers of application servers to ensure that the full range of these software platforms take advantage of the architectural features of Intel processors. Commercial application servers of particular note for the purposes of enterprise applications include Microsoft .NET on Windows* Server 2003, BEA WebLogic Server 8.1, and IBM WebSphere Application Server 5.0.2.
In simple three-tier application architecture, the application server makes up the middle tier:
Figure 1: Placement of the Application Server tier in a three-tier application architecture.
As the middle tier, the application server interoperates directly with both of the other tiers:
- Front End (User-Interface Tier): the application server must support front-end connectivity, including user input, session management, and display management. That connectivity may include support for various HTTP servers, as well as proprietary rich clients or interfaces to third-party applications.
- Business Logic (Application-Server Tier): core application-server functionality consists of process-management services, including the development, resourcing, and monitoring of processes. For enterprise applications in .NET, this functionality is carried out primarily by the .NET Framework and COM+ components. In Java*, this functionality is carried out primarily by Java Server Pages*, Servlets*, and Enterprise Java Beans*.
- Back End (Database-Management Tier): the application server must provide database interconnectivity, including data interchange and ensuring data consistency throughout a distributed environment, by means of mechanisms like data locking and replication.
Components written in Java can interoperate in the same application with components written in .NET. The standards-based nature of Web services also makes this interoperability practical in the form of solutions that incorporate services from a variety of providers over the Internet. All three of the application servers discussed here provide robust, standards-based functionality for Web services, and components developed using the Web services model on any or all of the three platforms work together smoothly.
Intel's commitment is to work with the largest number of provider s possible, to ensure ongoing optimization of those environments on the latest generations of Intel® architecture. Enterprises and end-users will also benefit from the fruits of the recent announcement* by Microsoft and Sun to work together in improving interoperability between .NET and Java. By continuing to support future optimizations for .NET and Java application servers on Intel architecture, Intel provides the hardware platforms that put the results of Sun and Microsoft's cooperation to work.
Microsoft .NET Application Server
Microsoft .NET's application-server environment primarily targets Windows Server 2003 as an implementation OS. In fact, the application-server functionality is highly integrated into that operating system, in the same way as is Microsoft's Web server, Internet Information Services (IIS)*. The current version of the .NET Framework, version 1.1, also supports Windows XP and previous versions of Windows.
Source code is compiled by a development tool such as Visual Studio .NET to produce architecturally neutral IL (Intermediate Language) for the .NET environment. Regardless of the original source-code language or the choice of development tool, the IL representation of the source code is identical. The .NET JIT (Just-In-Time) compiler transforms the IL into platform-specific code that is executed by the CLR. The .NET application-server environment also provides additional required services, associated with tasks such as garbage collection, security, and thread management.
Figure 2: Simplified view of code execution in the .NET application server.
Outside the Windows environment, the .NET CLI (Common Language Infrastructure)* and C#* programming language have been ratified as standards* by the ISO. Microsoft has also provided a shared-source version of the CLI to developers and ported the CLI to UNIX*. These steps make a "substantial subset" of the functionality of the .NET Framework available on a non-proprietary basis.
The CLR (Common Language Runtime)*, a superset of the CLI, manages execution of .NET applications; the role it plays within the .NET Framework is roughly analogous to that played by the JVM (Java Virtual Machine)* in the Java world.
Note that, while JVMs support only the Java language, the CLR supports all .NET languages, which include any language that can be represented in IL. Native .NET languages include JScript .NET*, Visual Basic .NET*, Visual C++ .NET*, and Visual J# .NET*, as well as a large number of CLR-compliant languages have been produced by third-party vendors. Java developers expanding their skill sets into the .NET technologies will be particularly interested in pursuing Visual C# .NET*. Microsoft no longer supports the www.gotdotnet.com website. The following partial list  of third-party .NET languages provides a representative sample:
- Component Pascal*
- Standard ML*
- TMT Pascal*
Since both the .NET CLR and Windows Server 2003 are optimized for both the Intel® Xeon® processor and the Itanium® processor, the Microsoft .NET application-server environment gives world-class performance on servers based on Intel architecture. Microsoft and Intel are both committed to continuing that strategic alliance, looking forward to future versions of both the software and the hardware.
Robust integration between the .NET Framework and the .NET Compact Framework (the latter is almost entirely a subset of the former) provides .NET developers with a simple means of porting .NET client applications between Intel architectures, including desktop, laptop, PDA, cell phone, and embedded processors.
A Generic Java Application-Server Environment
Before turning to specific Java implementations, this section examines a generic Java application-server environment to illustrate the similarities and differences between it and the .NET application-server environment. As a managed runtime, Java provides similar services to .NET, as illustrated in Figure 3:
Figure 3: Simplified view of code execution in a generic Java application server.
Source code written in the Java language is compiled by a Java compiler to produce architecturally neutral byte code. That byte code, which can be run on any hardware platform and operating system for which a Java runtime exists (all major platforms), is interpreted by a JVM running on the server. Just as in the .NET environment, Java application servers provide a large number of additional services, such as garbage collection, security, and thread management.
Intel works with major producers of Java application servers, including BEA, IBM, and Oracle, to help enable those application servers to best use of the hardware features of Intel architecture. The JVMs that provide clie nt-side support for Java applications run on all Intel platforms: servers, desktops, laptops, PDAs, cell phones, and embedded devices. This breadth of compatibility and optimization between the Java platform and Intel architecture-based hardware positions ISVs, enterprises, and end-users for success.
The Model-View-Controller (MVC) design pattern, which is illustrated in Figure 4, provides a useful means of understanding the three-tiered application-server model.
Figure 4: The Java Application Server Model-View-Controller Design Pattern.
This structural model consists of three pieces of functionality:
- A Model uses Enterprise Java Beans to represent the business logic through which an application interacts with enterprise back-end resources such as databases.
- A View typically uses Java Server Pages to render the presentation of a specific information set to a user by means of user-interface logic, which may also incorporate Servlets.
- The Controller coordinates traffic and translates information between the forms required by the user interface, the Model layer, and the View layer.
Thus, the business logic (represented by the Model layer) is separated from and independent of both the application structure (represented by the Controller layer) and the data presentation to the user (represented by the View layer). This modularity increases the flexibility of application components, creating loosely coupled subsystems and enhancing their reusability, extensibility, and maintainability.
BEA WebLogic Server 8.1
The BEA WebLogic application server provides a fully J2EE (Java 2, Enterprise Edition)*-compliant* environment. Intel has a long-standing history of working with BEA to ensure that the application server is highly optimized for Intel architecture, providing high performance for mission-critical applications deployed by enterprises of all sizes.
BEA WebLogic uses Java Servlets, JSPs (Java Server Pages), or a combination of both to build presentation-layer components, manifested as dynamic Web clients. It also supports a wide variety of rich clients written on platforms that include Java, ActiveX*, and Visual Basic by means of CORBA (Common Object Request Broker Architecture), Java RMI (Remote Method Invocation)*, IIOP (Internet Inter-ORB Protocol), and COM+*.
Servlets are used to communicate between HTTP clients and the underlying business logic, which is typically represented by EJBs (Enterprise Java Beans). They can also access databases, messaging APIs, and other server resources as required by the application. JSPs allow Java code and XML to be embedded directly into HTML to access server-side resources from a Web browser.
The WebLogic server-side business logic is independent of the user-interface, and it is built with EJBs, according to the EJB 2.0 specification. That compliance makes the EJBs that make up the core application logic highly portable. It can be deployed to any J2 EE-compliant hardware and operating-system platform.
Like the .NET and WebSphere application-server environments, WebLogic abstracts infrastructure services such as garbage collection, security, and threading support away from the business logic, handling those services behind the scenes so that developers can focus on the core functionality of their applications, leaving the housekeeping to the application server itself.
WebLogic supports JDBC (Java Database Connectivity)* for secure database access, using JDBC APIs to incorporate database services directly into applications. By that means, WebLogic abstracts the details of database connectivity away from the developer, adding efficiencies by handling plumbing and allowing developers to concentrate on solution-specific functionality. That abstraction also makes applications largely independent of specific database architectures, further increasing the portability of solutions.
Further sophistication is added to the WebLogic database-connection model by means of "connection pooling." Using this feature, the application server opens a developer-specified number of database connections when the application starts. Those connections remain open for the life of the application execution. The application can then request one of those connections from the pool when it needs it, and when the applications is done with the connection, it releases it, making it available for a new process. Since the connections do not need to be opened and closed as often, both stability and efficiency are greatly enhanced.
Operating-system support for the BEA WebLogic application server provides broad coverage, including Windows, Linux*, HP-UX*, and others. The value proposition associated with deploying BEA WebLogic on Intel architecture will long endure. BEA and Intel have formed a strong strategic alliance, which virtually ensures that future versions of WebLogic and associated tools will be optimized for Intel architecture.
IBM WebSphere Application Server, 5.0.2
The IBM WebSphere application server, like BEA WebLogic, provides a J2EE-compliant environment. The platform is powered by a single core Java runtime engine that has been enabled, optimized, and validated on Intel Xeon processor-based servers. Intel continues to support the high degree of optimization IBM has already achieved for Intel architecture and their dedication to ongoing development in that area.
IBM WebSphere application server is complemented by IBM WebSphere Studio, a suite of integrated developer tools in configurations that span development for the Web, the enterprise, and wireless devices. The WebSphere Studio development environment is based on the Eclipse Platform, an open universal platform for tools integration.
The WebSphere application-server environment is similar to the WebLogic environment in that it uses a combination of Servlets and JSPs to provide access between the user-interface layer and the business logic, and the business logic itself is comprised of Enterprise Java Beans. IBM WebSphere incorporates the IBM HTTP server, which provides deep integration between business logic and the user-interface tier.
The application server accesses enterprise data by means of EJ Bs, which allow back-end business data and applications to be extended to clients through the Internet. IBM WebSphere supports JDBC and Connection Management for secure database access to IBM DB2*, SQL Server* 2000, Oracle 9i*, IBM Informix*, and Sybase*.
Java Message Service (JMS)* message-driven beans provide standards-based application connectivity. IBM WebSphere also provides full integration support for the Microsoft component object model (COM and COM+), which provides rich interoperability with .NET client and server resources.
Like WebLogic, IBM WebSphere targets a wide array of operating systems, including Windows, Linux, HP-UX, and others. The relationship between IBM and Intel represents another strong, long-standing strategic alliance. The level of optimization that WebSphere has achieved today will almost certainly continue (and continue to be enhanced) with future generations of hardware and software.
The .NET application server, BEA WebLogic, and IBM WebSphere provide core services and functionality that support the full range of business deployments on Intel architecture. Intel has a long-standing history of working with all three of these vendors (and others) to ensure that enterprise application servers provide high performance on Intel processor-based servers. The .NET application-server environment has matured into a pan-language and substantially shared-source platform that has also evolved beyond its original Windows-only implementation. BEA WebLogic and IBM WebSphere provide world-class, J2EE-compliant application-server environments that provide best-of-class performance on Intel architecture.
All three of the application servers examined here provide for robust scalability, both in terms of "scaling up" and "scaling out." The former refers to the practice of increasing the number of applications or components that can be hosted on a single server by increasing the physical resources on that machine, such as RAM and CPUs. The latter refers to hosting the same application or component on multiple servers in order to increase user and/or data-processing capacity associated with that application or component. B2B connectivity is supported by means of standard technologies such as RosettaNet and exposing components as Web services on all three of these environments.
Since Intel has forged ongoing strategic alliances with Microsoft, BEA, and IBM, it is safe to say that the high level of optimization these application servers exhibit on Intel architecture will continue with the next generations of hardware and software architectures for the foreseeable future.
Reference and Resources
 Thuan Thai and Hoang Q. Lam. .NET Framework Essentials, 2nd ed. (Sebastopol, CA: O'Reilly & Associates, 2002).
The following resources provide more information about the application servers discussed in this article:
- Microsoft Inc., "Windows Server 2003: Technical Overview of Application Services*”
- BEA Systems Inc., "BEA WebLogic Server*”
- IBM Corporation, "WebSphere Application Server*”
Intel Developer Centers
- Integrating Java* and Microsoft .NET*
- Migrating Java* Applications to C# on the .NET* Platform
- Java* and .NET* Both Bring Something to the Party
- What Managed Runtime Environments (MRTEs) Mean To You
- Optimizing .NET* Performance with Unmanaged Code
- Why Optimization Matters
About the Author
Matt Gillespie is an independent technical author and editor working out of the Chicago area and specializing in emerging hardware and software technologies. Before going into business for himself, Matt developed training for software developers at Intel Corporation and worked in Internet Technical Services at California Federal Bank. He spent his early years as a writer and editor in the fields of financial publishing and neuroscience.