Newsletter sign-up
View all newsletters

Enterprise Java Newsletter
Stay up to date on the latest tutorials and Java community news posted on JavaWorld

Sponsored Links

Optimize with a SATA RAID Storage Solution
Range of capacities as low as $1250 per TB. Ideal if you currently rely on servers/disks/JBODs

Alternative deployment methods, Part 1: Beyond applets

Examine the software deployment problem and the requirements that a good deployment solution must satisfy

  • Print
  • Feedback

Page 3 of 3

Incremental updates

Application deployment is never a one-shot affair. As we all know, vendors release new versions of applications to correct defects and introduce new features. If the application is large (and even if it's not), the solution should allow us to replace only those components that change.

Versioning

Applications are often built on top of existing libraries and frameworks that have a life cycle independent of the life cycle of the application. Furthermore, two installed applications may require different versions of the same library. The solution should manage a library's multiple versions in a transparent fashion.

Automatic installation and configuration

The solution should require as little manual installation and configuration as possible -- preferably none.

Centralized inventory

Even though application installation is distributed, it's often useful to maintain a centralized inventory detailing the types and locations of software installed, and the version of each component. The solution should support this functionality.

Security

The issue of security can be broken up into two distinct but related concerns. First, only authorized users should be able to install an application. Second, the end user must feel confident that the application he or she installs is the application he or she intends to install (i.e., it hasn't been tampered with during transit or at some other point).

Scalability

The solution must not run out of steam just because the application doubles in size, or the user population grows larger.

Support for heterogeneous environments

Thanks to Sun's firm grip on Java, the language and associated libraries constitute a largely homogeneous platform. The environment in which Java exists, however, is not nearly as homogeneous. Any deployment solution must recognize and deal with the differences that do exist from environment to environment. Consider the question of where configuration information is stored. I can think of nothing more irritating than installing a Java application on a Unix box that insists on installing itself as if it were running on NT.

Live updates

Strictly speaking, live updates aren't a firm requirement, but still remain useful in some situations, typically when the client requires business logic that must be updated. Live updates may include the update of Java code as well as auxiliary resources.

Licensing

In the real world, applications consist of licensed code or contain components governed by license. The solution must, at the very least, include provisions to monitor the installation of licensed components.

Conclusion

I hope I've shed light on the topic of deployment and the attraction that applet-based deployment strategies hold. I also hope that I've presented a strong case for the importance of looking beyond applets, towards solutions and strategies that overcome applets' difficulties and limitations. Next month, we'll look at designs that meet subsets of the requirements mentioned above.

About the author

Todd Sundsted has been writing programs since computers became available in convenient desktop models. Though originally interested in building distributed applications in C++, Todd moved on to the Java programming language when it became the obvious choice for that sort of thing. In addition to writing, Todd is a Java architect with ComFrame Software.

Read more about Core Java in JavaWorld's Core Java section.

  • Print
  • Feedback

Resources