In this article, author Paul Perrone describes how services are provided to enterprise application components by application servers, and examines who fulfills what role in these application server architectures. The article specifically focuses on Enterprise JavaBeans (EJBs) and discusses how EJB application servers help to application-enable an enterprise.

This article contains excerpts from Building Java Enterprise Systems with J2EE.

Java enterprise applications built using such services run in a standalone
manner without the use of any container environment or enterprise application
framework. These applications are just plain old Java applications that you are
probably familiar with, and they operate using a JDK 1.1 or Java 2, Standard
Edition (J2SE) type of environment along with separately packaged standard Java
extension APIs and implementations. In fact, such standalone applications were
often the only option available to enterprise programmers using Java before the
birth of application server environments.

Standalone enterprise applications, however, can require a lot of coding
effort to make them fully functional in a multiuser, heterogeneous, distributed,
secure, and scalable enterprise environment. For example, use of distributed
communications-enabling technologies often requires an understand of a special
interface language, requires thread-safety design considerations, and requires
an understanding of how to create scalable server implementations. Use of JDBC
also requires careful consideration of which drivers to use and how to create
connection resources. This article explains how application server frameworks
provide an infrastructure for such services. Furthermore, I pursue this
discussion in the context of EJB application servers.