Main Page | Namespace List | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals | Related Pages

This implementation of the Java Virtual Machine corresponds roughly to these various source files for the overall structure. Details not found in them are located throughout the body of the source code. The following table shows this overall code structure. It is based upon the table of contents to the above JVM specification document. Where a .h C header file name is listed, the corresponding .c C source file is of less interest to this structure than the header that publishes it to the major subsystems, which are listed by their .c C source file names. Across the top of each page of documentation in most formats is is a line containing links to key indices across the documentation. Other formats may not have the links, but will have the same pages available. These categories are:

The following table shows the JVM specification section number in that document and a general location at which to start when looking for its functionality. Any sections not listed below are likely to not have yet been implemented here or are more applicable to the class library and/or compiler.

The garbage collection system is designed to be configurable like the heap is (see comments above on section 3.5.3). Its interface is defined in gc.h and a sample stub implementation is found in gc_stub.c . The choice of implementation is done at configuration time using config.sh . A generic "roll your own" option is available for those who are implementing garbage collection modules.

(The following description of source code directories is also found in README for display as a simple text file.)

Several directories are provided within the source tree:

With the exception of the Java test classes in test/src all source code is found in jvm/src and in the directory tree jni/src/vendor/product/version . The purpose of libjvm and main is for demonstrating various possible organizations for the source code, namely for building a static library archive and for linking it.

There are a few references to JNI (Java Native Interface) in the outline above. The following subset of java.lang classes are directly implemented in the interior of this JVM:

This JNI subset is implemented here in the following groups of source files:

The JVM specification is available from Sun Microsystems' web site at http://java.sun.com/docs/books/vmspec/index.html and may be read online at http://java.sun.com/docs/books/vmspec/2nd-edition/html/VMSpecTOC.doc.html

The Java 5 class file format is available as a PDF file separately at http://java.sun.com/docs/books/vmspec/2nd-edition/ClassFileFormat-final-draft.pdf and was the basis for the ClassFile structure of this implementation.

Attention:
For those who want to get started immediately and without benefit of seeing the overall structure of the system, please at least take a look at the INSTALL file at the top of the installation tree. Between this file and the README file, a quick startup is possible.
Todo:
An enhanced startup narrative on the main page might be useful.
Attention:
There are many to-do items in the README file at the top of the installation tree. These items has been specifically reserved for the project team to work on in order to gain experience with this code and provide a forum for JVM architectural discussions as well as to implement in their own right as a part of a working JVM.
Todo:
Section 2.6.6, value set conversions of floating point numbers are not implemented. See note in table in this section. Likewise for section 2.18, FP-strict expressions, and section 3.8, floating point arithmetic.
Attention:
The virtual execution engine is still under development as this initial contribution is being made. While the project team is working on learning what is inside the code, this final module will be completed. The relevant code is found in opcode_run in source file opcode.c
Todo:
The virtual execution engine is still under development as this initial contribution is being made. While the project team is working on learning what is inside the code, this final module will be completed. The relevant code is found in opcode_run in source file opcode.c
Bug:
The virtual execution engine is still under development as this initial contribution is being made. While the project team is working on learning what is inside the code, this final module will be completed. The relevant code is found in opcode_run in source file opcode.c

Generated on Fri Sep 30 18:59:18 2005 by  doxygen 1.4.4