Annotated edit history of
ClassFile version 3, including all changes.
View license author blame.
Rev |
Author |
# |
Line |
2 |
DavidHallett |
1 |
[ClassFile]s are the ByteCode form of [Java]. They are platform independant and one of the main reasons for the success of the Java language. They are normally distributed in JarFile, which is a specialisation of a [zip(1)] file. |
1 |
StuartYeates |
2 |
|
|
|
3 |
The ClassFile is built around a Constant Pool, which is rather like a symbol table in a [Fortran] library. |
|
|
4 |
|
|
|
5 |
A Number of key limitations are introduced into Java systems by the [ClassFile] format, including: |
|
|
6 |
# The per-class or per-interface constant pool is limited to 65535 entries |
|
|
7 |
# The size of code per non-native, non-abstract method is limited to 65536 bytes |
|
|
8 |
# The greatest number of local variables in the local variables array of a frame created upon invocation of a method is limited to 65535 |
|
|
9 |
# The number of fields that may be declared by a class or interface is limited to 65535 |
|
|
10 |
# The number of methods that may be declared by a class or interface is limited to 65535 |
|
|
11 |
# The number of direct superinterfaces of a class or interface is limited to 65535 |
|
|
12 |
|
3 |
DavidHallett |
13 |
These issues are not usually a problem for hand-written code, but [CompilerCompiler]s often generate finite state machines which run into these. The canonical reference for these issues is: [http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html] |