J2EE Application Servers: What Makes a Good Product
This article looks at J2EE application servers, which are commercial J2EE implementations available in the market. We explore the evolution of application servers and commercial products that are available in the market today, and discuss various features that characterize a good application server. Finally, we help you choose a particular product for a given enterprise environment.
Web Application Servers
Web application servers (or simply application servers) are distributed middleware software implementations that interface between various types of clients on one end, and back-end system resources on the other end.
When a medium or large-scale enterprise migrates to the world of e-commerce and Web-based transactions, it needs to reorganize its systems in three-tier or multitier application architecture in which Web application servers are the essential middleware components.
A thematic definition of an application server has been provided by Forrester Research:
"An application server is a software server product that supports thin clients with an integrated suite of distributed computing capabilities. Application servers manage client sessions, host business logic, and connect to back-end computing resources, including data, transactions, and content."
Application servers offer several benefits to the enterprise. They provide
A single robust platform over which all kinds of applications can be built and deployed.
Support to a wide variety of component models, resulting in compact system designs and code reusability.
Platform/OS independence (applicable mainly to Java-based application servers).
Linkage to different breeds of established enterprise information systemssuch as mainframes, ERP, databases, and file systemsto distributed application middleware.
Clustering over a host of hardware, and treating it as a single pool of resources. When one box goes down, the other takes up the additional load, thus ensuring continuous availability of services. This reliable back-end runtime environment is important for all Web-based applications.
Monitoring services over sensitive database transactions, thus increasing security and control over the existing database applications.
System resilience and application performance by caching, pooling, allocating resources, and load balancing.
Efficient remote administration and management capabilities to the system.
Flexibility and openness in the overall enterprise system architecture because each and every resource can be "plugged in" or "plugged out" of a single backbone.
A single robust gateway to access all types of EIS resources.
Application and component scaling to meet the increasing traffic.
Historically, Web application servers emerged from different breeds of middleware products and technologies.
During the initial days of the Web, HTTP servers were mostly used to serve static HTML pages to the clients. As the Internet matured, several proprietary technologiessuch as CGI/Perl scripts and Coldfusion programsoffered business logic and database-access capabilities to Web servers. The limitations of these technologies, the demanding needs of Web-based transactions, and the overall growth of e-commerce spearheaded several traditional middleware vendors to offer solutions for the Web.
They combined their traditional strengths in areas such as transaction monitors, CORBA Object request brokers and low-level database handling to evolve a new breed of server-side infrastructure solutions called Web application servers. Around this time, Sun released J2EE standards, with a vision of evolving a standard middleware infrastructure and environment from several proprietary technologies.
The new breed of J2EE Web application servers was born.