JavaTM Product Versioning SpecificationEvolution in open distributed systems needs to be managed carefully because correct operation dependson a number of dependencies between packages. Changes within a distributed system canhave a significant impact on many groups of individuals, including users, support organizations,web administrators, and developers. Packages within a distributed system need to operate correctlywith only partial knowledge about the state of the whole system. The difficulty level increases becausethe packages of the system must be able to evolve at different rates. Evolution in such a systemis made possible by explicitly managing the dependencies between the packages usingtechniques of object oriented design to govern how individual packages evolve. The Java languagedefines packages that are a natural for the consistent unit of update, packages that expose only publicinterfaces and that consume only public interfaces of other classes.IntroductionIn any system, support must be provided for the system to evolve over time. Most existing systemshave conventions and mechanisms that specify how change is accommodated. These systems havebeen based on the model where software programs are installed on a computer. Typically, developersspecify what versions of other packages are required and the installation process verifies andconfigures the system.In open distributed systems, however, the static assumptions of existing systems do not work. Evolutionis more difficult because it is not possible to control how or when packages change. Correctoperation depends on a greater number of dependencies between packages. There is a real need foran updated set of conventions and mechanisms which specify how packages of a system shouldevolve so that the goal of an open reliable scalable distributed system can be achieved.This document specifies the following:· How classes, resources, and files that make up a Java package are versioned. Packages define a consistentunit that can be developed, packaged, verified, updated, and distributed. Per package manifest informationidentifies the contents of the package.· Products are distributed by putting packages into archive files. Archives include a manifest, to identify theproduct version and packages it contains.· The standards and conventions used by developers and administrators to build and deploy products thatoperate reliably as their packages and the packages they depend on are upgraded.