An application server can be either a software framework that provides a generalized approach to creating an application-server implementation, without regard to what the application functions are, or the server portion of a specific implementation instance. In either case, the server's function is dedicated to the efficient execution of procedures (programs, routines, scripts) for supporting its applied applications.
Most Application Server Frameworks contain a comprehensive service layer model. An application server acts as a set of components accessible to the software developer through an API defined by the platform itself. For Web applications, these components are usually performed in the same running environment as its Web server(s), and their main job is to support the construction of dynamic pages. However, many application servers target much more than just Web page generation: they implement services like clustering, fail-over, and load-balancing, so developers can focus on implementing the business logic.
In the case of Java application servers, the server behaves like an extended virtual machine for running applications, transparently handling connections to the database on one side, and, often, connections to the Web client on the other.
The term "application server" was originally used when discussing early client–server systems to differentiate servers that contain application logic SQL services and middleware servers as distinct from other types of data-servers.
In the late 2000s, because of the ubiquity of the web-browser as an application deployment strategy, there is a mistaken belief that the term refers to a web application environment. However they do not realize that such applications are within the scope of application-server technologies.[clarification needed]
Java application servers
Java Platform, Enterprise Edition or Java EE (was J2EE) defines the core set of API and features of Java Application Servers.
The Web modules include servlets, and JavaServer Pages. Enterprise JavaBeans are used to manage transactions. According to the J2EE blueprints the business logic of an application resides in Enterprise JavaBeans - a modular server component providing many features, including declarative transaction management, and improving application scalability.
Some Java Application Servers leave off many Java EE features like EJB and JMS including Tomcat from Apache, and Jetty from Eclipse Foundation. Their focus is more on Java Servlets and JavaServer Pages.
There are many open source Java application servers that support Java EE including JOnAS from Object Web, JBoss AS from JBoss (division of Red Hat), Geronimo from Apache, TomEE from Apache, Resin Java Application Server from Caucho Technology, Blazix from Desiderata Software, Enhydra Server from Enhydra.org, and GlassFish from Oracle.
A Java Server Page (JSP) executes in a Web container. JSPs provide 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.
The application servers mentioned above mainly serve Web applications, and services via RMI, EJB, JMS and SOAP. Some application servers target networks other than web-based ones: Session Initiation Protocol servers, for instance, target telephony networks.
Microsoft positions their middle-tier applications and services infrastructure in the Windows Server operating system and the .NET Framework technologies in the role of an application server. The Windows Application Server role includes Internet Information Services (IIS) to provide web server support, the .NET Framework to provide application support, ASP.NET to provide server side scripting, COM+ for application component communication, Message Queing for multithreaded processing, and the Windows Communication Foundation (WCF) for application communication.
- Mono (not fully .NET compatible), developed by Novell, Inc., licensed under GPL
- Base4 Application Server, an open source project
- TNAPS Application Server, freeware application server, developed by TN LLC
PHP application servers
appserver.io, built by TechDivision GmbH is a multithreaded application server for PHP written in PHP.
Open-source application servers also come from other vendors, such as Appaserver.
Non-Java offerings have no formal interoperability specifications on par with the Java Specification Request. As a result, interoperability between non-Java products is poor compared to that of Java EE based products.
Advantages of application servers
- 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. 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 take place centrally.
- A central point through which service-providers can manage access to data and portions of the application itself counts as a security benefit, devolving responsibility for authentication away from the potentially insecure client layer without exposing the database layer.
- By limiting the network traffic to performance-tier traffic the client–server model improves the performance of large applications in heavy usage environments.
- Total Cost of Ownership (TCO)
- In combination, the benefits above may result in cost savings to an organization 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.
- 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 behaviour, 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.
- Client–server model
- Comparison of application servers — a list of Web application servers listed by programming language.
- Stand-alone server
- Web server
- IBM WebSphere Application Server
- "What is an App Server?". http://www.theserverside.com/. Retrieved 2010-02-28. "Chances are good that the average reader thinks a Java application server basically provides an implementation of the servlet specification, probably an implementation of JavaServer Pages, and perhaps some more services like database connection pooling. An application server is more and less, at the same time: an application server provides an environment where applications can run, no matter what the applications are or what they do."
- Stefano Ceri, Piero Fraternali, Aldo Bongio, Marco Brambilla, Sara Comai, Maristella Matella. "Designing Data Intensive Web Applications, 2Q03".
- "Analysis in the Application Server Environment". Microsoft Corporation. 1 June 1997.
- TechNet: Application Server
- TechNet: Application Server Role