ClassFiles 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.
The ClassFile is built around a Constant Pool, which is rather like a symbol table in a Fortran library.
A Number of key limitations are introduced into Java systems by the ClassFile format, including:
These issues are not usually a problem for hand-written code, but CompilerCompilers 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