The Kernel Java classes are those classes which are tied to the structure of the VM, or whose structure is known by the VM. Most of these classes are defined by the Java 1.4.2 API specification. The IBM VM implementations of these classes are provided in open source. The IBM implementations rely on the presence of (typically) VM specific natives to implement the required Java APIs. Other VM writers can choose to use these implementations, but this forces the writer to use the reference design and the writer must then implement the natives, for which minimal documentation is provided.
All but two of the kernel classes are defined by the public Java 1.4.2 API. These classes, described further in the doxygen class list, belong to the following packages:
The other two classes are currently in the com.ibm.oti package, which will be renamed at some future time for Harmony.
Some of the documented classes must be entirely implemented by the VM writer. For other classes the implementation is mostly provided. Some classes are documented so the implementation details can be used by the VM writer. Below is a summary of all the Kernel classes.
The VM writer is expected to entirely implement the classes below. A small number of non-public methods must be implemented in these classes to support other classes (such as java.lang.SecurityManager) as documented in the method descriptions.
The implementation of com.ibm.oti.vm.VM must be provided by the VM writer. This class provides class loading and stack walking methods that are not available in the public Java API such as a method which enables its caller to obtain the caller's class loader. The package will be renamed in the Harmony project.
The class com.ibm.oti.lang.SystemProcess is implemented, but is documented so the VM writer can use this class to implement java.lang.Runtime.exec().
The class java.lang.ref.ReferenceQueue is implemented, but is documented so the VM writer can use the non-public fields and methods in the implementation of java.lang.ref.Reference and its subclasses.
The following classes are implemented, but require a small number of methods to be implemented by the VM writer to complete the implementation. Alternatively, the VM writer can provide their own implementations of these classes.
The class java.lang.StackTraceElement is implemented, but is documented so the VM writer can use the non-public fields and methods in the implementation of java.lang.Throwable.
The implementation of java.lang.String is provided, but the VM writer must implement the java.lang.String.intern() method to complete the implementation of this class.
The implementation of java.lang.ThreadGroup is provided. Certain non-public methods are documented as they are used by the VM when booting the class libraries.