During the last couple of years there have been several developments in the application server environment. Nineteen ninety-nine truly was the "Year of the Application Server." The evolution of the application server market has been influenced by several factors. The term application server almost always refers to Java application servers (Microsoft's MTS and COM+ notwithstanding), i.e., application servers based on the J2EE platform.
The main developments in the Java application server market have been:
Application server vendors have expanded their product lines by means of acquisition, innovation and conglomeration. Application servers now address application development and integration issues in enterprise-level e-business applications. In that sense vendors have expanded beyond their realm of runtime execution environments to e-business solution environments.
- Stabilization of the J2EE platform
- Acceptance of the EJB object model
- Maturing of application server vendor offerings
The terms XML or XML support are invariably found wherever e-business and enterprise applications are mentioned. XML (eXtensible Markup Language), the new technology that's rapidly changing the way Web developers design and build their e-business applications, is an open standard for defining and sharing data on the World Wide Web. XML finds application in several e-business applications such as supply chain management, customer relationship management and content management by enabling proprietary systems to more easily exchange structured information. In the last year XML technology has gained a lot of ground and momentum.
As application server vendors expand their offerings into e-business solution suites, XML plays a crucial part in enabling them to interchange data between the various components of the suite. This article examines current trends in the application server market and the role of XML in application server suites.
Application Server Overview
An application server, by definition, is a computer server that serves applications. More precisely, it serves up application services. Its main purpose is to reduce the workload of applications by taking over the responsibility of mundane activities involved in executing the application and making the application's services available to external modules in a reliable manner.
I'll take a stab at defining an application server as follows:
- An application server is a computer program that resides on a server in a distributed network whose main function is to provide the business logic for an application program.
- An application server provides a customizable and flexible execution environment for hosting business logic components, thus providing distributed services and integrity for application execution.
- An application server provides an execution environment that decouples front-end clients from back-end data access. The execution environment is supported by an infrastructure that enables integration among different applications. Application servers enable this integration by offering software components that can be used to create business logic for an enterprise application. The supporting infrastructure may include architectural frameworks such as messaging systems, transactional managers and database accessors.
Application servers came into existence because of a need in the market for flexible, robust, extensible and standards-based enterprise applications developed at Internet speeds. The Internet is the most powerful phenomenon driving application development and deployment today. Internet applications are shared among multitudes of parties participating in e-business transactions. This results in the need for standard architectures and frameworks that allow application hosting. Application servers provide the execution environment for Internet applications. Vendors in the application server market add value to the equation by taking over the burden of application hosting and offering commodified products that enable organizations to concentrate their resources on building the applications themselves. In some ways the application server market is moving toward the space currently occupied by operating systems. Operating systems are developed and maintained by third-party vendors. Companies use OS services to develop applications in their business niche. Similarly, application server vendors can provide third-party services for use by distributed application developers.
The benefits to an application development vendor of using a third-party application server are:
- Better product focus
- Application interoperability
- Better resource utilization
- External support and maintenance
Java application servers are a by-product of Java's increasing presence in server-side middleware and the definition of Java Enterprise APIs by Sun Microsystems in collaboration with its industry partners. Java Enterprise APIs define enterprise-level services for server-side deployments. As described earlier, application servers started appearing in the market when the concept of multitiered computing became popular. These servers provided a hosting environment for middleware components. However, before the stabilization of Java Enterprise APIs, the definition of middleware components for a ubiquitous software platform was not uniform across operating systems. Hence, application servers were operation-system specific, each providing middleware services in a proprietary way, making portability and reuse of the components a difficult task. Emergence of the Java Enterprise APIs has enabled definition of a standard architecture for middleware components that comprises business objects. This architecture clearly defines well-formed interfaces between the application server's object containers and the objects or components themselves.
In Java this is made possible by:
These form the components for a basic Java application server, as illustrated in Figure 1.
- A standards object model (EJB) for designing business objects
- Uniform APIs for accessing business objects (remote interfaces via RMI)
- Container APIs for interacting with vendors' mechanisms to access system resources (EJB home interfaces)
- APIs for finding business objects (JNDI)
- Standard means of accessing these components through a distributed protocol (Java Servlets, RMI)
- Standard APIs for connecting to back-office data sources (JMS/JavaMail, JDBC, JTS)
- Secure access and data interchange (Java security API)
Developing E-Business Solutions
E-business drives the Internet economy, which is dependent on technology for modeling real-world businesses. Products offered by various vendors now need to provide functionality to realize different components of an e-business application including procurement services, business transaction services, security, order processing and purchases. Most enterprises look to vendors for value-added solutions that can provide these services in the form of out-of-the-box product suites.
Until recently, application server vendors provided the technical infrastructure to build enterprise applications. Their focus has been on the middle tiers of a distributed application. This middle tier can be split into two layers - the presentation layer that deals with getting input from the client tier and the business logic layer that is responsible for processing the data and providing connectivity to back-office systems such as ERP systems and databases. The application server product cycle is following the same trend as the operating systems product cycle did several years ago. Operating systems provided an abstraction on top of system services. Now operating system vendors have been reduced to the few that survived the OS wars. Application servers are the "operating systems" of e-business. However, they're more complex because they span several hardware and software platforms.
The application server market is at a stage where a large part of the paradigm has already solidified. Standard Web and Internet protocols (HTTP/TCP), object models (EJB/COM/CORBA) and distributed communication protocols (RMI/IIOP) have matured and are being accepted globally. In the next few years the application server market will mature to a level similar to that of the OS market today. The market is already looking toward application server vendors to see what type of integration alternatives they offer to fit in with the other building blocks of an e-business application. How do they integrate with content management systems? How do application servers work across different computing platforms? How do they offer commerce services like procurement and buying and selling services? How do they connect to logistics providers? How do application servers talk to legacy systems?
Figure 2 illustrates some of the other layers required to complete an e-business application.
Application servers provide development and execution environments for business applications. This is the core from which they started. However, complete solutions require integration with other environments such as ERP systems. This integration falls under the umbrella of enterprise application integration (EAI). The EAI space has been evolving too. Some vendors have concentrated on solving the EAI issues for integrating legacy applications into the new Internet paradigm. Organizations building e-business solutions prefer buying third-party products to meet time-to-market pressures. They count on application server vendors to integrate with these products. This has led to partnerships and acquisitions that couple app servers with integration servers. The combined product suite is often called an e-business server. E-business servers offer a variety of services including CRM, content management, personalization and trading community services. These suites offer development environments in several facets of e-business development. Figure 3 illustrates these development environments.
So where can XML be leveraged for e-business application development? The answers are:
Figure 4 illustrates the areas where XML can be used to support integration between different e-business application servers and between application components.
- Wherever data is transported between distributed processes
- Wherever data is presented to the user
The current market trend for application server vendors is to claim that they have "XML integration support." What exactly does this mean? XML can be used in several different application development components.
Integrating with XML means that app servers should support the following:
- The presentation logic should be able to serve up XML to a variety of clients.
- Business logic should be able to extract XML, process it internally, package it for external processing and feed back the results to the client.
- External applications must be able to create and manage dynamic, secure business relationships across the Web using XML as the exchange format.
- Enterprise business systems should be able to handle XML-based transactions.
- Application servers should integrate with technologies including DOM, SAX, DTD, XSD, XPointer, XLink, XPath, XSL and XSLT.
One of the first uses of XML in conjunction with J2EE-based application servers was to create deployment descriptor documents for Enterprise JavaBeans. Since XML is an elegant format for expressing data, it's ideal for expressing configuration of the transaction and security properties or server-side Java components.
I've recently seen the terms XML application server, XML-oriented application server, XML integration server and XML B2B server in different places. In fact, if you go to Yahoo's site and look for XML servers, these terms will show up in the results of your search. So there are a couple of questions to be answered before you go any further. What is an XML application server? Frankly, I don't know. Going by a traditional application server definition, an XML application server should be able to serve up XML documents in a robust, secure, scalable environment. Thus, if you add XML processing tools to any standard application server, you should be able to have an XML application server. In Java terms this means that, on the client side, customized Servlets and JSPs should be able to accept, process and generate XML. On the other side, it should be possible to have business objects that extract information from the XML document that comes from the client and package it into some message format using JavaMail or JMS to send it to back-office systems. Other business objects should get XML from back-office sources, process it and serve it up to the client.
However, there's an independent XML server market evolving outside the realm of standard application servers. These XML servers address integration issues with legacy systems. Vendors are entering this application space from different origins. Some of the areas in which XML servers contribute to enterprise applications are:
- Web catalogs
- Knowledge management
- Supply-chain integration
- EAI, data integration
- Data aggregation
- Business workflow
- Content management and publishing
Nowadays several application server vendors are including an XML server in their product suites. This allows them to extend traditional app server offerings of a robust and secure execution environment to a product suite that enables integration with EIS (Enterprise Information Sources). Examples of some of these product suites are given below. This is not an exhaustive list, but merely some examples of XML application server combos available in the market.
Total-e-B2B allows automation of your supply chain, enhancement of logistics operations and extension of e-business relationships with customers, suppliers and business partners. It uses XML technology to enable cross-platform communication, solving logistical and back-end business-to-business challenges. Bluestone offers this XML server in addition to a suite of products - Total-e-B2C for CRM and Total-e-Server, which is Bluestone's Java application server (formerly known as Sapphire/Web).
The xCommerce server is designed specifically to permit business analysts and software engineers to rapidly enable their proprietary systems for XML integration, map the data flows of those systems to other XML-enabled applications, and manage the runtime environment through which integrated applications interoperate. xCommerce enables B2B connections between Internet commerce applications, Web portals and vendor packages. SilverStream's corresponding application server offering is their SliverStream application server, which is J2EE compliant.
These are just two examples of combinations of XML servers and Java application servers. The XML server market itself has several products to offer in the XML server market, such as eXcelon Corp.'s B2B Integration Server, WebMethod's B2B and Microsoft's BizTalk Server.
The application server market is stabilizing with the acceptance of a few distributed object models and distributed platform technologies. The XML server market is rapidly evolving and offering solutions in the e-business space. Alliances between these two markets are taking place today and will continue to do so in the future. Vendors are offering "total e-solutions" that include bundling a Java application server with an XML server into one product suite. The integration between these products is not necessarily tightly coupled or even complete. Other vendors are partnering with complementary products to offer complete e-business solutions. The focus of application server vendors seems to be shifting from product providers to e-business solution providers.
Ajit can be contacted at: [email protected]