JanosVM: A Resource-aware Java Virtual Machine ---------------------------------------------- JanosVM is part of the Flux Research Group's Janos Project at the University of Utah's School of Computing: http://www.cs.utah.edu/flux/janos/ Send any bugs, comments, or questions to: janos-discuss@flux.cs.utah.edu. (You can subscribe to this and other Janos mailing lists from the Janos web page.) Overview: This distribution contains JanosVM, a virtual machine which supports multiple, separated Java-bytecode applications. See the file ANNOUNCE for a good overview of the system. There is also a JanosVM manual, tutorial and API documentation in the doc/janosvm subdirectory. JanosVM is based on Kaffe and KaffeOS [1], and is licensed under the GNU General Public License, as they are. JanosVM is up-to-date with the Kaffe public CVS repository as of July 2, 2002. We have avoided making gratuitous changes to the Kaffe sources and file layout, so there are a lot of original Kaffe files that we left in place but have been made obsolete in JanosVM. For more information on Kaffe, visit the Kaffe web page: http://www.kaffe.org/. Note that while the original Kaffe is very portable and runs on a large number of platforms, JanosVM only runs on Linux, FreeBSD, and Moab/OSKit[**] on x86 platforms. A bit of work on porting the write-barrier code in the JIT would have to be completed for JanosVM to function on other architectures. Also, the Kaffe interpreter hasn't been maintained with respect to JanosVM changes, so only the JIT works in this release. Many of the threading support libraries have also not been updated for JanosVM; specifically, only the jthread and nodeos-thread threading systems in Kaffe have been extended to support JanosVM extensions. [**] see http://www.cs.utah.edu/flux/janos/ for more information on Moab/OSKit. Building JanosVM: To build JanosVM, just follow the regular Kaffe build instructions (see doc/kaffe/INSTALL). Here's a quick summary: ./configure make all make install make check Run './configure --help' to get a list of all the configure-time options. The default build (no configure options) should work on Linux/x86 and FreeBSD/x86. Building JanosVM for the Utah NodeOS: JanosVM can also be configured and built for the Utah NodeOS, Moab, by using the configure script located in, `janosvm/config/i386/nodeos/nodeos-configure', and giving it these options: --srcdir = The JanosVM source directory --oskitdir = The location of an oskit install --localkaffeh = A previously compiled version of kaffeh --nodeosdir = The location of a Moab install --clickdir = The location of a Click install (not required) --nodeosunix = Indicates that Unix is underneath the nodeos layer instead of just a bare machine Also, two environment variables need to be set at configure-time: JNODEOS_CLASSES_ZIP = The location of a Moab configured jnodeos jar file (usually named jnodeos-moab-debug.jar) JANOSVM_CLASSES_ZIP = The location of a jar file containing the janosvm specific classes (usually libraries/jvmlib/JanosVM.jar) Read the README in config/i386/nodeos/ for more information. Please ask any questions you may have on the Janos mailing list. Testing JanosVM: 'make check' will run most of the standard Kaffe regression tests, and a suite of JanosVM-specific regression tests. Using JanosVM: There is a lot more documentation and a modest tutorial reachable at file:doc/janosvm/manual.ps Let us know what you think! janos-discuss@flux.cs.utah.edu [1] KaffeOS: http://www.cs.utah.edu/flux/papers/kaffeos-osdi00-base.html * Java is a registered trademark of Sun Microsystems, Inc. * Kaffe is a registered trademark of Transvirtual Technologies, Inc. HISTORY ------- May 3, 2001 (v0.5.0): Initial Release. June 1, 2001 (v0.5.1): Minor update. Includes JSR-121 Isolate "straw man" implementation; more robust code re-loading and Team termination; minor profiling configuration changes; add ability to change per-team classpaths at run-time; specify native libraries on a per-team basis; a cross-team-safe hashtable implementation, Mar 17, 2002 (v0.6.0): Major update. More documenation has been added and latex'd; Numerous termination bugs have been fixed; The java.security package has been fleshed out enough to support the bouncycastle crypto library; Resync'ed with kaffe; Fixes to comply with mauve; Added a few more tests; JSI for java; Updates to comply with the latest moab. July 31, 2002 (v0.8.0): Major update. This release includes a new user level thread system that supports stride scheduling, optimized packet handling when using moab, a port of xprofiling to the nodeos/oskit, a resync with kaffe v1.0.7, an experimental java wrapper for the lmsensors library, an alpha version of the PowerPC jit3 back end for Mac OS X (darwin), a test suite for basic jitter operation, and the usual bug fixes. February 13, 2003 (v1.0): Major update. This release includes the first publically available prototype of an emerging part of the Java standard, JSR-121 (Isolates), which provides an API for reliably controlling separate computational entities. This release also include a basic web server that uses Isolates, lazier class loading, stricter class file checking, stack overflow detection using guard pages, run-time access checking, a resync with the current CVS version of Kaffe, tests for class file integrity, chroot()'ing for teams, and the usual bug fixes.