Recommended: Sing it, brah! 5 fabulous songs for developers
JW's Top 5
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
Page 3 of 3
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.
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.
The solution should require as little manual installation and configuration as possible -- preferably none.
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.
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).
The solution must not run out of steam just because the application doubles in size, or the user population grows larger.
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.
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.
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.
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.
Read more about Core Java in JavaWorld's Core Java section.