Application servers in 1999: Persistent objects are knocking at the door

Among the keystone technologies associated with enterprise application integration today are application servers. At first glance, they would seem to be nifty black boxes that simplify that mysterious middle or 'n-tier' layer
of modern computing. Of course, at second glance, the application server becomes something more of a cipher -- a secret collection of services meant to be understood only by those who have the key.

That the application server's definition is indistinct should not be too surprising -- it is evolving from at least two directions. On one hand, the application server comes from the Web application space. In this case, it is an increasingly sophisticated gateway -- a means of bringing state to the stateless world of HTTP computing.

On the other hand, it is a new generation of client/server system that provides a middle- or logic-level layer between front-end presentation and back-end data source layers.

Although elements of the two styles are converging, the application server that occurs in a big Internet commerce site -- where networking and load-balancing issues become dominant -- will, for the time being, continue to look different than the application server serving a modest corporate intranet.

And whether the direction of development comes from the Web or from traditional client/server technology, the number and complexity of transactions also influences the choice of application architecture.

Stanley steaming

If the software industry can come up with the right combination of elements in an application server for distributed computing, the effect could be like that of Henry Ford's machines on the infant auto industry. Definition and simplification will drive great growth.

While such analogies can be stretched only so far, it may be fair to say that the industry today is at a 'pre-Ford' stage. Variety still rules. The moment is akin to the early automotive moment when unique designs such as the Stanley Steamer vied to define what was an automobile. The Stanley Steamer was a steam-powered vehicle with a number of beneficial traits, not the least of which was its ability to run on a variety of fuels; its one principal drawback was that it took a good 20 minutes to warm up -- a far cry from gas-powered autos.

A few years ago, there was just such a chasm between the Web-spawned application server of a Web start-up like Kiva Software, and the middle-tier services generated by development tools like those from client/server start-up Forté Software.

Observers expect this will change, and that elements of the different breeds of application servers will blur; recent product enhancements from the varied camps tend to confirm this view. Standards would help to ensure that today's application servers are not -- like the Stanley Steamer -- apparent technology dead-ends; today, Enterprise JavaBeans (EJBs) and CORBA are standards that seek to address this issue.

The first Web application servers were spawned from the requirement to improve upon basic CGI connections between a database and a Web server. They have come a long way, increasingly coming to resemble application servers that were designed to run middle-tier components. Meanwhile, both Web application servers and client/server
application servers are taking on more aspects of traditional transaction servers.

Although they have yet to generate a great deal of revenue, application servers have spawned a lot of interest within the last year. Netscape's purchase of Kiva started something of a trend, with Sun Microsystems buying NetDynamics (which started life as Spider Technologies), and transaction and ORB house BEA purchasing WebLogic for its application server prowess. Among the early application server makers that remain independent are Bluestone, Haht, Novera, SilverStream and others. Several of these have made a commitment to EJBs as a cross-industry standard component format. Meanwhile, 4GL forces like Forté, Progress, Sybase, Inprise, Neuron Data, Compuware and Unify (and others) have not been slow to endorse the application server concept, or EJB. The application server and EJB have also been central to database leader Oracle's Web computing strategy.

Heavyweights IBM and Microsoft have taken different tacks, but each remains true to recent strategy. And both companies' moves re-enforce the trend toward a blurring of categories. IBM, summarizes Joe Damassa, IBM vice president, application development marketing, has incorporated a number of its enterprise computing elements under its new WebSphere umbrella. These include VisualAge tools, transaction services, object request broker services and messaging services. Top this off with IBM's declared support for Enterprise JavaBeans.

For its part, Microsoft, while eschewing Java and CORBA as platforms, is offering up Windows NT as tomorrow's state-of-the-art application server. Elements of the firm's tools, middleware (COM), Microsoft Transaction Server (MTS) and MSMQ are in the process of becoming an app server that could prove quite competitive.

Can COM be called an application server? When matched with a few other services, yes, sort of. What is being called a server today, as in the recent past, is really a bunch of services. [And it is not getting any easier -- the term "Web application server" has begun to crop up lately to describe a combination of Web-oriented Web-server-like functions and application server tasks!] Some day, the public may come to call the proper combination of various key services "an application server" just as, in our automotive analogy, a certain group of functions came to be described as a "car."

Thus, arguably, the traits of application servers today are Web page generation, session management and threading, business logic process management, auto-recovery, load balancing [both on the front (Web) end and back (data source) end], object brokering, data caching, connection to data sources, security and transaction management. If an object architecture is employed, various elements might combine to represent another perhaps distinct functionality -- persistent object services. In many cases, Java support has come to be an essential application server ingredient.

What they're saying

Like only a few others (IBM and Forté, for example), the Uniface 4GL IDE from Compuware, Farmington Hills, Mich., can claim one of its application servers runs on a mainframe. Dirk Gorter, director, product marketing at Compuware, said Uniface's initial application servers were "the thing you needed to run middle-tier components.

"Right now, we don't consider the 'Web application server' vendors as primary competition," said Gorter. "A lot of them take more of a middleware approach. We still position our server as part of an IDE. We partner with BEA and IBM [with Transarc] for transaction services. We are talking with Microsoft about MTS."

A gating factor on Java application server acceptance, at least in Gorter's view, is the Java language's status as a 3GL environment. For large-scale projects, at least, it has some of the same production drawbacks as C++, indicated Gorter. "Java is still not completely settled on how that's going to evolve. We provide productivity and maintainability. C++ is becoming standard, but at the end of the day it's still a 3GL," he said.

Gorter was also asked about Enterprise JavaBeans. "EJB is on our radar screen," he said. It solves problems similar to those solved by the firm's Uniface server at the moment. "If it becomes accepted, it could become the default component model," he said.

One of the sticking points leading up to the first EJB spec was the Entity bean aspect of the standard, which is still under discussion. Handling software objects throughout the system life cycle is an important task for an enterprise-class application server. "We all have something extremely similar to an Entity bean. We call them data objects. It allows you to take care of your objects, and we try to make this separate from the database system," said Gorter.

"Application servers are becoming required to interoperate with a variety of applications," said David Butler, vice president of marketing for Novera Software Inc., Burlington, Mass. "EJB has arisen as the de facto application interface standard for doing end-to-end application management."

One of the first application server makers, Bluestone Software, Mount Laurel, N.J., which was also one of the first to support EJB on the server, has been early to
endorse XML as a means of automating
information-integration-related data exchange. The firm has suggested that EJB support will soon be a commodity. "XML has the capability to bring the component model to the fore," said John Capobianco, the firm's senior vice president, marketing.

And at one of the most visible app server newcomers, it has been business as usual for Mountain View, Calif.-based NetDynamics since its purchase by Sun Microsystems, said Zack Rinart, VP of Sun's NetDynamics unit. The firm now positions its products as 'the power behind the portal,' referring to the now fashionable intranet portal architecture. Its new product, NetDynamics 5, is said to continue to provide COM interoperability. It also supports Java 2, JDBC, SSL and HTML caching.

Persistent objects

Among services that distributed system developers now wrestle with is what can be called application server caching, data object handling or persistent object storage. This problem can be especially pressing in volatile, high-transaction e-commerce sites where scalability is a challenge. As in advanced client/server computing, one of the associated issues developers must confront is mapping between object and relational data domains.

One of the main voices of what it calls 'container-managed persistent objects' is Persistence Software, San Mateo, Calif. With Sun Microsystems, the company last year released an application server benchmark showing what it described as the value of an advanced caching server architecture vs. a fully cached (in-memory) relational-data-based approach to transaction electronic commerce. Solaris-based application server caching can deliver 490 complex-transactions per minute performance, according to the company.

Analyst John Rymer, president of Oakland, Calif.-based Upstream Consulting, said there is a great market opportunity for Persistence-style app servers, which he places in the category of second-generation application servers.

Others might add companies like GemStone Systems Inc., Beaverton, Ore., and Cleveland-based Secant Technologies to this second-generation application server category. In December, Rogue Wave Software, Boulder, Colo., joined the battle with RW-Metro, a mapping solution for unifying object and relational models. Rogue Wave describes its method as a custom approach to application servers in which component-based elements are the building blocks for an enterprise solution.

A big separation between the Persistence and GemStone approaches is that the former works as a mapping from the object to the relational domain, while the latter is distinctly object-oriented, although it has some requisite relational hooks.

In mid-April, Persistence Software introduced PowerTier 5 for EJB. It is said to provide stateful load-balancing and fail-over, as well as EJB interoperability via RMI/IIOP. With the product's PowerSynch cache replication feature, multiple appli-cation servers can reportedly maintain a
consistent set of application information within a server's shared object cache.

In late April, GemStone released GemStone/J 3.0, which integrates a Java Servlet engine and Java Server Page (JSP) implementation. Also new are Java Security Architecture (JSA) and Java Cryptography Architecture (JCA) security standard support. With GemStone/J 3.0, customers can implement configurations that include a load-balanced group of Web servers, each of which can run multiple instances of the servlet engine running Java Servlets, while accessing EJBs, CORBA objects and pooled relational database connections running in load-balanced Java 2 Virtual Machines.

Anne Thomas, an analyst with Boston-based Patricia Seybold Group, said there are three levels of persistence: straight mapping into an object store, object persistence involving storing objects in an object database, and object-relational mapping in which a persistent object layer is graphed to a relational database. Most often, people are using relational mapping because it may be simpler than writing connections for all of the front-end applications to the back-end databases, she said. But, Thomas maintained: "When you convert objects into relational structures you end up losing a lot of information about the relationships between the objects."

Thomas added that the Object Management Group is finalizing work on persistence services that will provide a standard mechanism to persist objects for developers.

Enabling multitiers

David Norris, president and CEO of Dallas-based ObjectSpace, said interoperability between implementations of persistent object services is important because it will enable multitier applications to be built. These will communicate with multiple middle-tier application servers that, in turn, can share and access different kinds of back-end data.

"Today, this is difficult because there are so many ways to define components. It is not a big deal yet because there are not many applications servers out there," he said. The ObjectSpace product line currently has an application server product, under the Voyager product umbrella, that supports Java, DCOM and CORBA, said Norris. "It can be used to create a persistence object layer to support access to relational databases and a variety of app servers."

Scott Dietzen, CTO of BEA Web Express said that every Enterprise JavaBean has persistence associated with it, which allows the developer to define how it represents a back-end data source. "You can also have the container or application server do the mapping for you," he noted.

Kevin Dick, an analyst with Kevin Dick Associates, said a distinguishing feature about persistence implementation is the whole notion of caching. "It is very inefficient to request the same data over and over again," he said. "Things like persistence remember what you asked for; and when you ask again, give it to you straight up."