Application server

From Wikipedia, the free encyclopedia

An application server is a software engine that delivers applications to client computers or devices, typically through the Internet and using the HyperText Transfer Protocol. Application servers are distinguished from web servers by the extensive use of server-side dynamic content and frequent integration with database engines.

An application server handles most, if not all, of the business logic and data access of the application (a.k.a. centralization). The main benefit of an application server is the ease of application development, since applications need not be programmed; instead, they are assembled from building blocks provided by the application server. For example, a Wiki is an application server that allows users to build dynamic content assembled from articles. Moreover, Wikipedia is an assembled Wiki that delivers an encyclopedia stored in a filesystem, with changes to the encyclopedia stored in a database.

Application servers run on many platforms, and the term colloquially applies to two different software applications. The term is used to refer to servers of web-based applications, such as integrated platforms for e-commerce, content management systems, and web-site builders. Alternatively, the term is used as a synonym for web application framework.

Contents

[edit] Common features

Application servers typically bundle middleware to enable applications to intercommunicate with dependent applications, like web servers, database management systems, and chart programs. Some application servers also provide an API, making them operating system independent. Portals are a common application server mechanism by which a single point of entry is provided to multiple applications.

Programming is minimized because the application server has the user interface instructions already built in. The instructions are contained in output objects, and database datatypes are preassigned to output objects. Configuring the application means the developer is assigning elements of the application to database datatypes. When the server is running, data is requested by the client, causing the assigned user interface instructions to be sent to the client along with the data. Client-side data integrity is refined by programming hook functions, which are simultaneously sent to the client.

[edit] History

Applications historically were stored on mainframe computers and delivered to computer terminals. Only large institutions — such as governments, banks, and large corporations — could afford the facilities, equipment, and staff to support mainframes. The 1960's saw the introduction of the mini computer. Mini computers are much smaller, less powerful, and much less expensive than mainframe computers. However, computer terminals were still used to interact with the application.

Following the introduction of the personal computer in the 1980s, and more specifically the graphical user interface in the 1990s, the client-server computing paradigm was developed. In the client-server architecture, applications are stored on the server computer and the personal computer serves as the user interface. In this architecture the user interface is a computer program running separately from the database server program. While this freed the database server from managing both the data and the user interface, it required the system administrator to update the client software on each personal computer individually when changes were made.

Following the introduction of the World Wide Web in the mid-1990s, the application server paradigm was developed. Application servers are a throwback to mainframe computing in that both the application and user interface are stored on the server computer. The difference, though, is the client is now a thin client or a personal computer running a browser. The server sends both the instructions for the user interface along with the data to the client. The client then uses its own processing power to format the data using the instructions received. Application servers store the user interface instructions in interface modules which are then assigned to database datatypes. When a database element of a particular database datatype is requested, the application server sends the module's instructions along with the requested data to the client.

[edit] Java application servers

Following the success of the Java platform, the term application server sometimes refers to a Java Platform--Enterprise Edition (J2EE) or Java EE 5 application server. Among the better known Java Enterprise Edition application servers are WebLogic Server (BEA), JBoss (Red Hat), WebSphere Application Server and WebSphere Application Server Community Edition (IBM), JRun (Adobe), Apache Geronimo (Apache Software Foundation), Oracle OC4J (Oracle Corporation), Sun Java System Application Server (Sun Microsystems), SAP Web Application Server and Glassfish Application Server (based on Sun Java System Application Server).

JOnAS application server was the first open source application server to have achieved official compliance with the Java Enterprise Specification. BEA delivered the first Java EE 5 certified application server followed by Sun Microsystems' reference implementation GlassFish.

The Web modules are servlets and JavaServer Pages, and business logic is built into Enterprise JavaBeans (EJB-3 and later). The Hibernate project offers an EJB-3 container implementation for the JBoss Application server. Tomcat from Apache and JOnAS from ObjectWeb are typical of containers into which these modules can be put.

A Java Server Page (JSP) is a servlet from Java that executes in a Web container—the Java equivalent of CGI scripts. JSPs are a way to create HTML pages by embedding references to the server logic within the page. HTML coders and Java programmers can work side by side by referencing each other's code from within their own. JavaBeans are the independent class components of the Java architecture from Sun Microsystems.

The application servers mentioned above mainly serve Web applications. Some application servers target networks other than the Web: Session Initiation Protocol servers, for instance, target telephony networks.

[edit] Microsoft platform

Microsoft's contribution to application servers is the .NET Framework. This technology includes the Windows Communication Foundation, .NET Remoting, Microsoft Message Queuing, ASP.NET, ADO.NET, and Internet Information Services.

[edit] Other platforms

Open source application servers are available from other vendors. Examples include Appaserver, Base4 and Zope.

Non-Java offerings typically have no interoperability specifications, like the Java Specification Record. As a result, interoperability between non-Java products is poor compared to that of Java EE based products. To address these shortcomings, specifications for enterprise application integration and service-oriented architecture were designed to connect the many different products. These specifications include Business Application Programming Interface, Web Services Interoperability, and Java EE Connector Architecture.

[edit] Advantages of application servers

Data and code integrity 
By centralizing business logic on an individual or small number of server machines, updates and upgrades to the application for all users can be guaranteed. There is no risk of old versions of the application accessing or manipulating data in an older, incompatible manner.
Centralized configuration 
Changes to the application configuration, such as a move of database server, or system settings, can be done centrally.
Security 
A central point through which access to data and portions of the application itself can be managed is considered a security benefit, devolving responsibility for authentication away from the potentially insecure client layer without exposing the database layer.
Performance 
By limiting the network traffic to performance tier traffic, it is perceived that the client-server model improves the performance of large applications in heavy usage environments.
Total Cost of Ownership (TCO) 
In combination, the benefits above are considered to represent a cost saving to a company when developing enterprise applications. In practice, however, the technical challenges of writing software that conforms to that paradigm combined with the need for software distribution to distribute client code somewhat negate these benefits.

[edit] See also

[edit] References