- Application Servers Aren't Difficul
- Application Servers Are Software Platforms
- Application Servers Are Component-Based
- Application Servers Provide Software Interoperability
- Application Servers Have High Levels of Abstraction
- J2EE Is Separate and Distinct from Sun's Application Server
- Application Servers: A Window on the Future of Software
Application Servers Are Software Platforms
Application servers tend to reduce the amount of middleware required in organizations—because they are middleware! In just the same way as Windows now includes a rudimentary firewall, application servers are likely to soak up the role filled by some existing middleware products. This is because application servers are platforms in their own right onto which software is deployed for multiclient use. Software destined for use in an application server environment has a distinct lifecycle that includes the following:
- Application or component creation by developers
- Packaging into deployable elements
- Deployment onto the application server platform
- Utilization by end users
- Update with new features or fixes by developers followed by redeployment
- Retirement after the application reaches the end of its useful life
In many ways, this is not dissimilar from the way "normal" application software is managed. This is particularly so for multitier distributed software systems, where client users interact with backend server applications. The major difference between application servers and multitier software application suites is that the former provide a great deal of shrink-wrapped support for software. In other words, application servers provide a great deal of runtime support for areas such as thread management, database connection, network access, and so on. These facilities come for free with application servers, whereas they often have to be hand-coded in traditional software suites.
In short, application servers provide a useful separation between the host platform and the so-called business logic of the application software. By providing much support for software, application server technology allows software designers and developers to focus on solving their particular domain problems. Properly used, application server technology has the potential to reduce the cost of software development.
Standard application server tools (such as ones based on ant) as well as proprietary tools are used during the above software lifecycle. Other applications that are bundled with the application server part of J2EE are the following:
- Admin console
- Deployment tool
- Debugging facilities
- J2EE compliance checker
The Admin console is used to manage the software executed on the application server; for example, activation/deactivation, listing components, and so on. The deployment tool is used to actually prepare software for the application server environment. Debugging facilities are used to assist in troubleshooting problems as and when they occur. J2EE compliance checking is very important for the authors of new software because J2EE components differ from standard Java classes.
Sun's documentation (see Reference ) indicates that the application server software production process tasks can be divided among specialists. Programmers write and test the source code, which is then passed off to deployment personnel. The deployment person (who might be called a build manager) prepares and packages the software for use on the application server. At this point, the software could be passed back to the programmers for debugging and integration testing. Another specialist could also check the software for J2EE compliance. The important point is that one or more suitably qualified people can carry out these various complex tasks.
Data center managers get greater control over applications that are run under the umbrella of an application server. This means that the software running in an enterprise can be centrally administered and deployed from a single platform. In some ways, application server technology moves us back toward the old mainframe style of software deployment! An opposing view is that this model frees client machines from having to host and execute a lot of code that can be more efficiently accommodated on one or more application servers. Also, given the proliferation of broadband networks, bandwidth constraints are diminishing in importance.