An application server is a server program in a computer in a distributed network that provides the business logic for an application program. It is a component-based product that resides in the middle-tier of a server centric architecture.
INTRODUCTION TO APPLICATION SERVERS :
The term 'Application Server' was originally used when discussing early client-server server systems. In the past most IT systems were deployed over two primary tiers-a client which ran the applications i.e, sent requests and a server which hosted the database and other services. For number of reasons including security a new tier has been included between client and server. This middle tier(Application server) hosts a variety of services that function as intermediaries between clients and the data they use. These services include virtual machine that run Business logic, infrastructure services. Application servers are the programs that are generally written to satisfy Business needs. It provides the core functionality for the development and deployment of business driven applications. Main aim of Application server is to seperate the presentation, business logic and the data.
It is generally viewed as part of a three-tier application, consisting of a graphical user interface (GUI) server, an application (business logic) server, and a database.
Graphical User Interface(GUI) server runs on the client machine.
Application server is the program which runs on server.
Database is used to store the data that is required by the middle tier.
Presentation Application Server Data
1st Tier (Business logic) 3rd Tier
An application server is considered when there is a need for integration with existing sytems and the database. The basic job of Application server is to retrieve, process and present data to user interface. Processing data again includes validation, verification and other security checks.
An example that depicts job of Application Server more clearly is the Internet Search engine.
Here the client machine is the computer which logs on to the search engine's website and the search becomes the data input. Now Application server processes the input i.e, performs various operations on the input. Then queries are made to search the database and the required data is ordered and sent to client machine. Other examples include Online Banking, Online Booking systems.
Â The presentation has pretty much been decided with browsers now being the dominant interface. This is why a Web server is paired with or included in an application server. An Application server collaborates with web server to return dynamic customized response to client request. Here, the client's request first goes to the web server, which sends the required information to the application server. The application server then sends back the response to the web server after taking an appropriate action. The web server further sends the processed information back to the client. Web server use different approaches or technology for forwarding or receiving back processed information. Some of the most common approaches are CGI (Common Gateway Interface), ASP (Active Server Pages), JSP(Java Server pages), Java Servlets, Java Script etc.
EVOLUTION OF APPLICATION SERVERS :
Long before application servers existed, there was already a need to service transactions in distributed systems. At the same time, pressure was increasing for applications to share more of their data and sometimes functionality with other applications. More applications were either located on a network or used networks extensively. Some pioneers wrote their own set of reusable resources like database connections, state management, results formatting and packaged them so developers could be more productive than they had been with ad hoc code libraries.
Initially, most of these products were sold as tools for Web developers. Some of the earliest examples include Allaire ColdFusion, HAHT Software HAHTsite and Netscape LiveWire.
Meanwhile, people and business were flooding onto the Web and recognizing the incredible opportunities offered by applications deployed on it. As a result, the developers quickly moved beyond simply generating dynamic pages. To ease this transition, they wanted tools that could help them build full-fledged applications with much more complicated requirements. It seemed logical to have some kind of program residing on the network that would help share application capabilities in an organized and efficient way -- making it easier to write, manage, and maintain the applications. To respond to these demands, software companies began to expand the range of plumbing they provided. To increase scalability and performance, they incorporated design principles and technology from TP (transaction processing) monitors.Â
The transaction monitor was originally created to provide a two-phase commit, assuring that transactions were made real only when they were committed on two different platforms. Examples of transaction monitor include CICS(from IBM) and Tuxedo(originally developed by AT&T and then acquired by BEA).
Tuxedo evolved in 1983 and it made use of a middle tier so as to reduce the workload from transaction processing databases. Following the introduction of internet in mid 1990s application server paradigm was developed. Other functionalities like security, load balancing, fault tolerance were added to the middle ware tier.
APPLICATION SERVER ARCHITECTURE: (THREE TIER ARCHITECTURE)
Using JDBC with Application Servers:
JDBC is generally considered the most common way people expect to provide persistence to the J2EE. Because of the issues related to multiple mappings of Java objects to tables and vice versa, it is best to use JDBC with Java application servers when the data being mapped is quite simple. For example, JDBC would be an excellent way to look up simple account information based on an account number. There would be little mapping of data needed in this case.Â When you use JDBC, the data conversion (or mapping) from tables to objects and back will need to be performed in the application or the application server.
Using SQLJ with Application Servers :
SQLJ stands for "SQL-Java," and is a multi-part(3 parts) specification for using SQL with Java. SQLJ is an alternative to using JDBC for providing persistence to the J2EE application server platform. Because it is built, in part, on JDBC, it shares many of the same issues JDBC has with data conversion. Here there are however Java structures that do not map exactly to SQL structures.Â SQLJ uses the embedded database sublanguage approach when using the Java programming language.Â
Embedded SQL statementsÂ :
Host language statement
Host language statement
Embedded SQL statement
Host language statement
Embedded SQL statement
Host language statement
LIST OF FEW APPLICATION SERVERS:
Following the success of java, some of the java application servers include:
Websphere Application Server(IBM)
Apache Geronimo(Apache Software Foundation)
Glassfish Application Server(Oracle Corporation)
MAJOR COMPANIES AND THEIR PRODUCTS INVOLVED IN DEVELOPMENT OF APPLICATION SERVERS:
Each oracle database implementations were deployed on mini computers but many customers began exploring distributed databases. At about the same time first application server appeared to manage these transactions. Oracle's strategic application server, Oracle WebLogic Server, together with GlassFish, provide world class Java EE infrastructure.
The oracle's 11g application server is the industry's most comprehensive java platform for developing, deploying, integrating enterprise applications.
PRODUCTS OF ORACLE CORPORATION: GLASSFISH APPLICATION SERVER
Oracle GlassFish Server delivers a flexible, lightweight and extensible Java EE 6 platform. It is part of the Oracle Fusion Middleware application grid portfolio and is ideally suited for applications requiring lightweight infrastructure with the most up-to-date implementation of enterprise Java. Oracle GlassFish Server complements Oracle WebLogic Server, which is designed to run the broader portfolio of Oracle Fusion Middleware and large-scale enterprise applications. It includes Oracle GlassFish Server Control (formerly Sun Glassfish Enterprise Manager) for improved manageability and performance visibility of GlassFish production deployments. Also helps in Enabling feature-rich applications based on industry standards.
INTERNATIONAL BUSINESS MACHINES(IBM):
Â IBM designed WebSphere to set up, operate and integrateÂ electronic applications across multiple computing platforms, using Java-based WebÂ technologies.Â
PRODUCT OF IBM: WEBSPHERE APPLICATION SERVER
WebSphere Application Server provides the availability and security, business depends on while optimizing cost. It efficiently develops innovative applications by using programming models that include XML, Web 2.0. Only WebSphere Application Server has three foundational attributes to enable robust applications: Simplified development, high performance, intelligent management. WebSphere Security Domains deliver greater granularity, flexibility and control over users and infrastructure to increase administration efficiencies.
The latest version of WebSphere is version 7 which was released on September 9, 2008. It helps in flexible management of large number of WebSphere Application Servers and network topologies that might be geographically distributed. It supports the broadest range of platforms in the industry, helping provide assurance that your applications can be built to run on the platform that most makes sense for your business.
APACHE SOFTWARE FOUNDATION:
The Apache Software Foundation provides support for the Apache community of open-source software projects. The Apache projects Â are characterized by a collaborative, consensus based development process, an open and pragmatic software license, and a desire to create high quality software that leads the way in its field.
PRODUCT OF APACHE SOFTWARE FOUNDATION : APACHE GERONIMO
Apache Geronimo is an open source application developed by theÂ Apache Software FoundationÂ and distributed under theÂ Apache license.Â The goal of the Geronimo project is to produce a server runtime framework that pulls together the best Open Source alternatives to create runtimes that meet the needs of developers and system administrators. The most popular distribution is a fully certified Java EE 5 application server runtime. It is easy to use and integrates with best open source tool available like eclipse. It also provides frequent releases of software so that users can experience newest features and have access to latest bug fixes.
COMPARISION BETWEEN GLASSFISH, WEBSPHERE AND APACHE GERONIMO :
Integrated Development Environment
Oracle launched GlassFish in june 2005
GlassFish 2 was launched in September 2007
JEE 5 Certified.
Excellent support for dynamic languages.
Good support for emerging standards.
helps in Enabling feature-rich applications based on industry standards.
IBM launched WebSphere in june 1998
WebSphere V7 was launched in September 2008.
J2EE and Eclipse Framework.
Applications can run in reliable, secure environments and business opportunities are not lost due to application downtime.
It helps in flexible management of large number of WebSphere Application Servers and network topologies that might be geographically distributed.
Apache Software Foundation launched Apache Geronimo in October 2005
JEE 5 Certified.
Certified on Java 5 works with Java 6.
JEE certified with full EJB 3 support.
produces a server runtime framework that pulls together the best Open Source alternatives to create runtimes that meet the needs of developers and system administrators
DIFFERENT TECHNOLOGIES USED IN APPLICATION SERVER :
Application Server technology we choose is so important -- it will likely become the foundation for the next generation of mission-critical applications. For building application logic on Windows NT, or Windows 2000, the default choice is the application server technologies that shift with the system.
Java EE, once known as J2EE, is a platform that has become a benchmark for application server developments. Not a standard as such, still compliance with Java EE requirements grants a product significant value status. As a result, Java is widely used as the language of choice for application servers. However, Microsoft's ASP.Net platform is also powerful and commonly used, and many developers still use CGI and PERL. The choice of platform for an application server may have technical constraints, and it is down to system analysts and developers to make the choice of suitable solution.
Tuxedo  based on ATMI Standard and Tntnet  are Web Application Server in C++. Â Tntnet comes with a template engine, which allows the programmer to embed C++-code into HTML pages.
Core Server is the Common- LISP Application Server in Linux.
Seaside Software - Â A continuations based web application server based on Smalltalk.
Zend Server  is a PHP based Application Server.
APPLICATION SERVER A FAD OR SHIFT IN TECHNOLOGY?
Considering application servers as fad would be in appropriate. Like all fads, they've been the subject of a good deal of hype, most of which suggests that application servers are the most important thing to happen in system software for the last several years. However, selection of technology is the important decision as it likely becomes the foundation for next generation of mission critical applications. Hence shift in technology if needed should be carefully analyzed. They cannot be considered as fad because most of the companies depend on these application servers to run the program or share data. Security of data is the key area in any industry and in application servers security is provided by encrypting the information, checking authorization etc. Also, by centralized approach all the updates would automatically reach the users. So without Application Servers, applications lack security which is again a serious issue.
Thus application server cannot be considered as fad.
ADVANTAGES OF APPLICATION SERVERS :
It provides middleware services for security and state maintenance, along with data access and persistence.
Data and Code Integrity :
By centralizing business logic on an individual server or on a small number of server machines, updates and upgrades to the application for all users can be guaranteed.
Centralized configuration :
Changes to application configuration such as move of database server can take place centrally.
There may be requirements to secure or encrypt information between the database server and the application server and/or the application server and the client computers. Also file permissions for developers and clients must be controlled.
Total Cost Of Ownership :
The above benefits may lead to cost saving to an organization developing enterprise applications.
By limiting the traffic to performance tier traffic the client-server model improves the performance in heavy usage environments.
Transaction support :
AÂ transactionÂ represents a unit of activity in which many updates to resources (on the same or distributed data sources) can be made atomic (as an indivisible unit of work). End-users can benefit from a system-wide standard behavior, from reduced time to develop, and from reduced costs. As the server does a lot of the tedious code-generation, developers can focus on business logic.
KEY TECHNICAL ISSUES:
There are three technical issues that are to be resolved.
Because of centralized processing, if servers go down then clients cannot access the application.
The reliance on network connections, including internet, exposes the vulnerability that any outside network also chokes all access to the application.
Finally, security, since data which may be sensitive could be transferred over public networks.
The way to tackle the first two problems is to provide adequate redundancy of resources. So back-up servers, network connections and internet are needed. It is almost impossible to cover all angles in this, as most of WAN is out of management control and steps taken to cover outer risk depends on how critical the application server's availability is.
Tackling security issuesÂ Â is always difficult. However, there are a number of methods, encryption and secure connections for instance, that are applied across all forms of sensitive web interaction.
MAJOR PLAYERS IN FIELD OF APPLICATION SERVERS :
IBM: In todays market the the major share is help by IBM in terms of application servers. Since Java based application servers have become a mainstay for IT infrastructures.
BEA: BEA had been a major share market holder for application servers but lost its appeal as it had been bought by Oracle which completed its acquisition on April 2008. For now its stands as the subsidiary of Oracle.
Oracle: It became the first platform designed for grid computing used for service oriented architecture. After the acquisition of BEA, Oracle intends to introduce WebLogic with seamless migration.
Apache: Apache Software Foundation developed the Apache Geronimo application server which is also compatible with the Java Enterprise edition 5.0 version and being open source. This is the reason for which IBM introduced a free version of its application server Web sphere.
FUTURE OF APPLICATION SERVERS :
Application servers have been successful because they evolved with new technology, changing needs of developers and supported new types of applications as they emerged. Even as application servers continue to change, the market is already entering its next phase - the expansion of the application server into a full Internet business platform.
Just as developers learned that many of the most common tasks involved in Web development could be packaged in a reusable fashion. Companies building their businesses on the Web have recognized that many of the most common applications can be bought and customized instead of built from scratch. In the next few years we will see application server vendors building suites of applications that meet the most common needs of businesses.
There are certain changes that application server will undergo in near future. Few changes being, application server will become more responsive, flexible. Rising application stack complexity problem will be solved. Distributed virtualization of application servers is expected in future. Then application server would look like elastic application platforms. As the new generation of application servers rises, today's generation of application servers will continue to evolve and improve.
An application server is a server program in a computer in a distributed network that provides the business logic for an application program. Also the presentation logic is separated from business logic and data. It collaborates with web server to return dynamic customized response to clients. Hence application servers play a major role in today's industries.