Optional Package Versioning

Optional Package Documentation

Note: Optional packages is the new term for what used to be known as standard extensions or just extensions.

Version 1.3 of the Java2 Platform introduced support for an expanded set of Jar-file manifest attributes that enable applets to specify version and vendor information for the optional packages that they require. The manifests of Jar-packaged applets can specify a URL at which the latest version of the optional package the Java Plug-in can download if

The manifest attributes that can be used to specify version and vendor information are described below.

Manifest Attributes for Use by Installed Optional Packages

The following portion of a sample manifest file illustrates the attributes that are available for use by optional packages.
Extension-Name: javax.help
Specification-Version: 1.0 
Implementation-Vendor-Id: com.sun 
Implementation-Version: 1.0 
The attributes in this example are:

Extension-Name

This attribute specifies a name for the optional package contained in the Jar file. The name should be a unique identifier such as the name of the main package comprising the optional package.

Specification-Vendor

This attribute identifies the company that originated the specification to which the optional package conforms.

Specification-Version

This attribute specifies the version number of the specification to which the implementation conforms.

Implementation-Vendor-Id

This attribute's value is a unique identifier for the company that produced the optional package implementation contained in the Jar file.

Implementation-Vendor

This attribute's value is the name of the company that produced the implementation of the optional package. This attribute should be used only for such purposes such as user feedback, and the Java Plug-in software does not use it to identify the optional package vendor. Rather, the Java Plug-in relies on the Implementation-Vendor-Id attribute to provide unique vendor identification.

Implementation-Version

This attribute indicates the vendor's version number for the implementation of the optional package.

Each optional package installed in the Java runtime environment can use these manifest attributes to identify itself. When the Java Plug-in is running an applet that requires an optional package, the plug-in can access these attributes to determine if the installed optional packages match the vendor and version criteria specified by the applet. The applet specifies such information by using the manifest attributes described in the following section. Note that all of the above manifest attributes should be included in an optional package's manifest. If the plug-in looks for but doesn't find one of these attributes in an optional package's manifest, it will assume that the optional package is not suitable for the applet.

Manifest Attributes for Use by Applet Jar Files

The following sample manifest file illustrates the attributes that are available for use by Jar-packaged applets. (This sample is for illustrative purposes only. No actual optional packages are available at the URLs mentioned in this example.)
Extension-List: javahelp java3d 
javahelp-Extension-Name: javax.help 
javahelp-Specification-Version: 1.0 
javahelp-Implementation-Version: 1.0.3 
javahelp-Implementation-Vendor-Id: com.sun 
javahelp-Implementation-URL: http://java.sun.com/products/stdext/javahelp.jar 
java3d-Extension-Name: javax.3d 
java3d-Specification-Version: 1.0 
java3d-Implementation-Version: 1.2.1 
java3d-Implementation-Vendor-Id: com.sun 
java3d-Implementation-URL: http://java.sun.com/products/stdext/java3d.jar 
The attributes used in this example are:

Extension-List

This attribute indicates the optional packages that are needed by the applet. Each optional package listed in this attribute will have a set of additional attributes that the applet uses to specify which version and vendor of the optional package it requires.

<extension>-Extension-Name

This attribute is the unique name of the optional package. The Java Plug-in will compare the value of this attribute with the Extension-Name attribute in the manifests of installed optional packages to determine if the optional package is installed.

<extension>-Specification-Version   (Optional)

This attribute specifies the minimum optional package specification version that is required by the applet. The Java Plug-in will compare the value of this attribute with the Specification-Version attribute of the installed optional package to determine if the optional package is up to date.

<extension>-Implementation-Version   (Optional)

This attritute specifies the miminum optional package implementation version number that is required by the applet. The Java Plug-in will compare the value of this attribute with the Implementation-Version attribute of the installed optional package to see if a more recent implementation needs to be downloaded.

<extension>-Implementation-Vendor-Id   (Optional)

This attribute can be used to identify the vendor of an optional package implementation if the applet requires an implementation from a specific vendor. The Java Plug-in will compare the value of this attribute with the Implementation-Vendor-Id attribute of the installed optional package.

<extension>-Implementation-URL

This attritute specifies a URL that can be used to obtain the most recent version of the optional package if the required version is not already installed.
The Java Plug-in performs the following determinations when loading an applet whose manifest indicates that it needs one or more optional packages:

If the applet's manifest doesn't contain one or more of the optional attributes, the plug-in will accept any value of the corresponding attribute in the optional package's manifest.

Download and Installation of Optional Packages

The following considerations pertain to optional packages that are downloaded by the Java Plug-in.

The optional package download URL as indicated in the applet manifest's <extension>-Implementation-URL attribute need not be limited to the Applet codebase.

All downloadable files should be signed using a DSA or RSA certificate. Any optional packages not so signed will not be installed but instead will be treated as a bundled optional package and loaded through the applet class loader, sharing the applet security attributes.

When the Java Plug-in retrieves an optional package from the URL indicated in the applet's manifest, it will check the optional package's manifest for a Main-Class attribute after verifying the optional package's signature. If the optional package's manifest file does not contain a Main-Class attribute, the Java Plug-in will simply drop the Jar file into the optional packages directory of the runtime environment (jre/lib/ext in the Java 2 SDK and lib/ext in the Java 2 Runtime Environment).

Some optional package Jar files may contain their own installer programs in either native code or as applications written in the Java programming language. Such an installer program may be necessary for purposes such as installing native libraries or accessing the Microsoft Windows registry, for example. If the Java Plug-in finds a Main-Class attribute in the optional package's manifest, it will assume that it indicates a class that serves as a Java-language installer and will invoke the main() method of that class.

An optional package's manifest may alternatively contain a Extension-Installation attribute. The value of this field will point to a native installation application that is to be used by the Java Plug-in to install the optional package.

The URL of an optional package as specified by the <extension>-Implementation-URL must point to a JAR-file. The plug-in will not download and install optional packages packaged as .exe or .bin files.

Some optional packages come packaged in different Jar files for different operating systems. Such cases can be accomodated by the <extension>-Implementation-URL attribute by using the $(os-name)$ construction in the attribute's value. Here is an example.

javaExt-Implementation-URL: http://.stdext/javaExt-$(os-name)$.jar
Here, $(os-name)$ is the name of target operating system as defined by the os.name system property.

Copyright © 1999

Java Software