java.class.version is wrong?

Jiro KANAYAMA majiro at
Fri Mar 12 07:57:29 PST 1999


gback> > Jiro KANAYAMA writes:
gback> > > Hello,
gback> > > 
gback> > > gback>  If you start kaffe -D, as in "kaffe -Djava.class.version=46"
gback> > > gback> you can set it to whatever you want.
gback> > > 
gback> > > So, in kaffe, has java.class.version different definition from JLS?
gback> The JLS does not specify a value to my knowledge.  The JLS as well as
gback> the JDK doc only say that this property is defined.  At least, from my
gback> reading.  I'd appreciate a pointer if it does.

Sorry about my inaccuracy explanation.

gback> I haven't seen the value for java.class.version published anywhere.  Has 
gback> anybody? Note that this is a version number for the class library, not for
gback> the class file format.

See The JavaTM Virtual Machine Specification, 4.1 ClassFile.

A class file contains a single ClassFile structure: 

    ClassFile {
        u2 minor_version;
        u2 major_version;

The items in the ClassFile structure are as follows: 

       minor_version, major_version

       The values of the minor_version and major_version items are the minor and major version numbers of the compiler that produced this class file. An
       implementation of the Java Virtual Machine normally supports class files having a given major version number and minor version numbers 0 through
       some particular minor_version.

       If an implementation of the Java Virtual Machine supports some range of minor version numbers and a class file of the same major version but a higher
       minor version is encountered, the Java Virtual Machine must not attempt to run the newer code. However, unless the major version number differs, it will
       be feasible to implement a new Java Virtual Machine that can run code of minor versions up to and including that of the newer code.

       A Java Virtual Machine must not attempt to run code with a different major version. A change of the major version number indicates a major
       incompatible change, one that requires a fundamentally different Java Virtual Machine. 

       In Sun's Java Developer's Kit (JDK) 1.0.2 release, documented by this book, the value of major_version is 45. The value of minor_version is 3. Only
       Sun may define the meaning of new class file version numbers.

Also, see JLS1.0, 20.18 The Class java.lang.System.

Key                      Description of associated value
java.class.version       Java class format version number

And JDK1.0.2 and JDK1.1.7B return value 46.3 about java.class.version.
Then, I 'expected' "Java class fotmat version" mean measure version
and minor version in ClassFile structure.

Please tell me your opinion.


More information about the kaffe mailing list