# Appendix 2: Sun-Supported `Specification-Version` and `Implementation-Version` Formats

`Specification-Version` and `Implementation-Version` follow these rules for Sun products, and third-party products must follow the same rules for Java Plug-in to make reliable decisions about whether an extension is up-to-date or not:

The `Specification-Version` string will be of the form:

> `n1.n2[.n3]`

where`n1`, `n2`, and `n3` are integers, `n1.n2` is the major version number, and optional `n3` is the minor version number (also referred to as the maintenance version number).

The `Implementation-Version` will be of the same form initially but may:

- append with a preceding underscore("`_`") `n4n5` to indicate a patch version number (also referred to as the update version number)
- or append with a hyphen ("`-`") a milestone name (`ea` , `alpha`, `beta`, `rc` ...), which may also include a trailing integer number (`ea1`, `beta2`, `rc1` ...).

Both patch version number and milestone name may not be used together in the `Implemenation-Version` string.

The general form is as follows:

> `n1.n2[.n3][_<patch_number>|-<milestone_name>]`

Integers (`n1`,`n2`, `n3` ...), letters, dots, hyphens, and underscores , may be used in the version format as described above; no other characters ("`*`", "`+`" ...) are allowed.

Note that the `Specification-Version` and `Implementation-Version` numbers are in theory independent, though in practice they are often in sync with each other.

Examples:

`Specification-Version` examples: `1.3`, `1.4`

`Implementation-Version` examples: `1.3.1`, `1.4.0_02`, `1.4.0-beta3`

While these are the rules, it is always a good idea when using a third-party extension `JAR` to examine its `MANIFEST.MF` file to see what actual values are in it. If it does not follow these rules, you may need to change your applet `JAR` `MANIFEST.MF` accordingly or alter the extension `JAR`.