J2EE Web Application Servers
J2EE application servers are Web application server products that adhere to standards and technologies advocated by Sun's J2EE specifications. They all offer a standardized development and runtime environment for application components.
Codes built on top of J2EE application servers are portable across one another. For example, a servlet developed over BEA's Weblogic server can be deployed in IBM's Websphere server without any code-level changes.
To ensure compatibility of application components across different breeds of servers, Sun has released a J2EE licensing scheme and a J2EE compatibility test suite (CTS). Vendors who have obtained the J2EE license and passed CTS can call their products "J2EE-certified."
Choice of Application Servers
Because it is a lucrative market with a growth potential of several billion dollars, almost all major IT companies have jumped onto the application server bandwagon. These companies include ATG, BEA Systems, Borland Corp, Broad Vision, Brokat, Compaq, Computer Associates, Fujitsu, Hewlett-Packard, Hitachi, IBM, Macromedia, NEC, Nokia, Oracle, SAP, Silver Stream, Sybase, TIBCO Software, WebGain... All of them are J2EE licensees, and many of them have rolled out their very own J2EE-certified application servers to the market.
Combine this list of J2EE licensee companies with other application server companies that are yet to join the licensing scheme, and you end up with a highly crowded market place, with each product trying to carve out its own niche segments.
According to various market survey reports, BEA's Weblogic server and IBM's Websphere dominate the J2EE application server market, followed by other players such as Oracle. Ironically, Sun's own J2EE application server product (called iPlanet, and now renamed as the Sun ONE application server) is yet to make a major impact in the application server arena.
One application server that is not yet J2EE-certified, but is well worth taking a look at is JBoss (http://www.jboss.org). This open source application server is making significant inroads into the enterprise environments.
How to Choose Your Application Server
Choosing a particular application server for a given enterprise environment is no easy task. With a rich set of development and runtime features, each application server vendor lures companies to adopt its own product.
In the following sections, we try to identify all major features of application servers that are important for an integrated, Web-based enterprise IT architecture. The relevance and importance of specific features in a given enterprise environment should ultimately dictate the choice of decision-makers.
Essential Features of Application Servers
Scaling is the capability of the application server to meet dynamic site traffic and serve the increasing number of client requests.
Ambiguous Web traffic volume is a potential problem for the server administrators. When not handled properly, it may well take the server to its limits, resulting in system crashes.
Load balancing is the capability to distribute the client requests to different servers under the same cluster. Simple hardware solutions are already available for less-intelligent request routing. In the case of application servers, however, we are talking about a much higher level of load balancing, in which distributed application components instead of client requests are load balanced.
Fault tolerance is the capability to resume operations in spite of component failures, network failures, and server crashes. In production environments, usually several servers are configured to work in orchestration with each other. Thus, when one server in the group fails, the other can take up the additional load.
Application servers should be capable of doing effective business transactions across multiple server instances and networks. Two-phase commit might be important for certain critical enterprise transactions.
How well the application server monitors and ensures transactions is an important feature to be considered.
Availability of Resources
An application server's resourcessuch as memory, computing power, components, databases, and other backend systemsshould always be available to serve client requests. It is the responsibility of the application server to ensure that no client request gets timed out due to the lack of computing power or components to service the request.
Performance can be generally thought of as the capability of the application server to attend to the client's request within the earliest possible timeslot. For this to succeed, the server must be capable of processing the transactions between the clients and back-end resources efficiently.
Some application server vendors and independent market watch firms have come out with their own benchmarks (for example, ECPerf) for measuring the performance of the application server. A typical benchmark is "so many thousand requests handled per second" under a given configuration.
Java- and J2EE-based servers naturally support more operating systems and platforms than other kinds of application servers. In enterprise server environments, UNIX flavors and Linux dominate, whereas developer platforms are often Windows-based.
Note that Microsoft's .Net architecture (a direct competitor to Java/J2EE) is available only in MS Windows platforms.
Tools and IDE Support
Many application servers come bundled with development tools and integrated development environments (IDEs) for developing and deploying applications with ease. The quality and ruggedness of the tool, as well as its integration with a given application server, are decisive factors for an application server choice.
Examples include IBM's VisualAge, which comes with the IBM Websphere application server; and WebGain Studio, which is the preferred IDE for BEA's Weblogic.
Development and Runtime Licenses
Certain application servers offer free development licenses, charging only for production runtime license. This option is more attractive to novice developers who want to get started with J2EE application servers.
When the size of the project is large, many development teams will be involved, and development-licensing charges could be significant.
Web Server Support
Quality of the HTTP Web server that comes bundled with the application server, and compliance and compatibility with other popular HTTP Web servers in the market is an important factor to be considered.
How secure are the transactions between the client and the server and across the tiers? What are the features of the product that specifically support this? What are the security standards supported by the product? Is there any security framework that is bundled with the application server?
These are all questions that should be asked to get an understanding of the security features supported by a given application server.
Back-End Systems Integration
Application servers link different kinds of back-end resources: mainframes, relational databases, ERP, CRM, and other legacy systems. If there is any built-in support available within the application server for a given back-end environment, then it can save the cost and effort required for systems integration.
Application servers should have user-friendly tools for day-to-day administration activities: resource monitoring, application health monitoring, deployment and replacement of components, and so on.
Although the quality and features supported by these tools vary widely, almost all of them have a visual console for performing basic operations. Most of them are empowered with remote administration capabilities so that system administrators need not be physically present in the server room.
One additional positive feature is the capability of the application server to escalate alerts, if any, to enterprise management tools, so that transactions are not adversely affected.
Site Monitoring/Analysis and Reporting
Some application servers produce standardized weekly and monthly reports on the number of hits, resource usage, etc. These are most useful for statistical purposes and site performance reporting.
Availability of Local Technical Support
Depending upon the technical expertise available within the enterprise, this feature also assumes importance. Expert advice that is available from visiting consultants and e-mail is not as good as having a strong local team to support the products. The emphasis is on the problem-solving capability of the local skill set.
Depending upon the budget and resources committed, pricing may become a constraint in adopting the right application server for the enterprise. For experimentation and proof-of-concepts, open source servers are better choices.