There have been a number of significant developments in the enterprise software infrastructure market in the past several years. The application server market in particular, has been impacted and application server architectures are responding to new requirements. This article takes a look at a new breed of application server that is emerging.
It’s been about ten years since the Java application server emerged in response to the need for serving up dynamic content on the web. During that time, Java has become ubiquitous - estimates are that there are now three to five million Java developers word-wide, and the Java EE standard, now 10 years old, is complete and mature. The enterprise software industry has become crowded and the players compete aggressively to differentiate their offerings. Although the Java to EE application server market has consolidated considerably, the remaining vendors compete aggressively to differentiate their products through quality of service and extensions to the standard.
While the Java EE standard and the application servers that support that standard have matured, the industry has continued to evolve. Java developers are beginning to experiment with new programming models including frameworks and dynamic languages. Developers have also started looking for lighter-weight containers that can improve developer productivity.
Service Oriented Architecture (SOA) has also driven a number of new requirements onto the application server, including increased demand for specialized, loosely-couple, course-grained service endpoints, and event driven architectures.
Hardware commoditization has driven demand for horizontally scaled and grid architectures. And finally, data center consolidation has driven demand for virtualization and elastic computing.
All of these trends have had in impact on enterprise software designs, but in particular, the maturation of the Java EE standard, SOA, and data center consolidation have each had a profound effect on application server architectures. In the following sections we will take a look at how the convergence of these trends has influenced application server architectures and the application server market.
The Maturation of Java EE
As the Java EE standard has evolved and matured, the API has become increasingly rich and also increasingly complex. The application server vendors all participate in the standards process and they constantly jockey for competitive advantage by promoting standards that will create competitive advantage for their product. As a result, more “stuff” (API’s) keeps getting added to the spec and the standard has become overloaded. The result of that has been that the application servers that implement the standard have become bloated. WebLogic and WebSphere both have in-memory footprints of around one gigabyte!
As a result of the increasing complexity of the Java EE standard and the ever-growing footprint of the Java EE application servers, recently, Java developers have begun looking at alternate programming models and containers. Frameworks such as Spring, Struts and Hibernate have become popular. The Apache servlet container Tomcat, has also become very widely deployed. Tomcat is attractive to developers because it is open source and free, but also because it is lightweight, fast and easy to use.
In response to the demand for lighter-weight containers, Sun has proposed breaking up the Java EE standard into “profiles” Three profiles are proposed for Java EE 6. Each profile will include a subset of the Java EE technology. For example, the Web Profile is a subset targeted at web application development.Certification will be available at each profile level.
Recently, many of the Java EE vendors have begun to tackle the problem of complexity and footprint. Presumably, they are also preparing for the Java EE 6 profiles. A common approach has been to modularize the code base and to make the server configurable to run only specific containers and services.
However, the challenges in getting from a one-gig monolithic architecture to a modular, configurable architecture are significant. Compounding the problem is the requirement for the servers to preserve backwards compatibility for the installed-base applications. We will take a look at some of the approaches that the various vendors are taking in the following sections.