[ Index ]
[ Individual Project ]
[ Placement Presentation ]
[ Timetable ]
[ Index ]
[ Research ]
[ Schedule ]
Java Product Versioning Specification
Last Updated: 16th November 2001
This paper is part of the standard Java Standard Edition documentation. At the time of this writing it hasn't changed from 1.3 to 1.4, hopefully this will remain the same so any assumptions in previous work will still stand.
Notes
- Systems evolve, and not as a whole. A system needs to be able to upgrade a certain component in the system and it should continue to work.
- Java versioning is addressed by 'packages'. These are archive files that will store a java package (e.g. com.milesbarr.jvcs.*) and also include a manifest file. The manifest file identifies the contents of the package and its version.
- Contains requirements for end users, product support organizations, webmasters and administrators, and product developers.
- Problems can arise when classes are loaded dynamically. e.g. a java application is already running but then loads another class (from a website, via RMI, etc.) that is a different version to the other classes are currently running. The program may continue to run without any noticable errors, but computations may be incorrect. (see quote below)
- Describes what properties can be identified at runtime, e.g. JVM version number. Also give informatio regarding what packages have been loaded into the JVM.
- Format of the JAR Manifest Format. (see below)
- Version numbers are used to identify given implementations. The rationale behind this is to allow developers to track bugs in different versions. If the design contract of a package was sufficient to identify a package then version numbers would not be necessary. Since bugs do occur (i.e. the contract is broken), we need the numbers to inform us which implementations contain a bug.
Quotes
"These probelms cannot be prevented or solved directly because they arise out of inconsistencies between dynamically loaded packages that are not under control of a single system administrator and so cannot be addressed by current configuration management techniques."
Extracts
Example manifest entry:
Manifest-version: 1.0
Name: java/util/
Specification-Title: "Java Utility Classes"
Specification-Version: "1.2"
Specification-Vendor: "Sun Microsystems Inc.".
Implementation-Title: "java.util"
Implemenation-Version: "build57"
Implementation-Vendor: "Sun Microsystems. Inc."
Miles Barr <miles@milesbarr.com>