CECS Home | ANU Home | Search ANU | Search FEIT | Feedback
The Australian National University
Department of Computer Science (DCS)
Towards High-performance and Fault-tolerant Distributed Java Implementations (UNDER CONSTRUCTION)
Printer Friendly Version of this Document

Towards High-performance and Fault-tolerant Distributed Java Implementations.

Downloads

Currently there are two downloads available. The first a patch against the Jikes RVM cvs-head to incorporate Apache Jakarta BCEL. The second is an early prototype dJVM (very naive).

BCEL Patch

The Apache Jakarta BCELenables parsing/manipulation and generation of Java class files. The BCEL patch script (gzipped) applies a patch that enables the use of BCEL both for class loading and to enable "Just-In-Time" class transformation at build and runtime. This now applies to the Jikes RVM cvs-head of the 03/03/2005.

This is in its early stages and has not been extensively tested. However, several regression tests have run correctly with both the baseline and optimizing compilers.

To use the script you must first have the Jikes RVM installed and the the $RVM_ROOT environment variables set correctly.

dJVM prototype v1.1

A second version of the dJVM is now available. The dJVm can be downloaded from DJVM-1.1.0.tar.gz. The download includes the JikesRVM (C) IBM and MMTk code version 2.4 which is available from Jikes RVM.

The prototype is not complete, so is a work in progress, but will allow for execution of simple programs across a cluster of computers. The build process is the same as that of the basic JikesRVM only the current set of configurations is limited to BaseBaseMarkSweep and BaseBaseSemiSpace. During the build process the appropriate version of the GNU Classpath library, Apache BCEL and REGEXP will be downloaded and built.

dJVM prototype v1.0 (early)

An early prototype dJVM is provided as a patch (1.0.2) to the Jikes RVM v2.2.0 and its source libraries, see the README fole below). The install script should download the correct versions of the Jikes RVM and GNU Classpath libraries. However, the Jikes RVM and GNU Classpath libraries can be downloaded explicitly:

  • Jikes RVM (version 2.2.0) source and libraries can be obtained from IBM's Developer Works
  • Jikes RVM library source (version 2.2.0) can also be obtained from IBM's Developer Works
  • The GNU Classpath libraries can be obtained from GNU's Classpath Project Site. The current version of GNU Classpath is version 0.1, however the dJVM uses version 0.0.5.
This file describes how to create the Distributed Jikes RVM
source tree from the standard Jikes RVM distribution, related packages
and patch files. A copy of this document can be found in:

    ${RVM_ROOT}/rvm/src/vm/cluster/

This tar archive includes most of the files necessary to build the
Distributed JVM.  Those files NOT included will have to be downloaded
subject to the user agreeing to the licensing conditions.

The necessary files, some of which may not be included, are:
    
1.  license.txt The (CPL) terms under which the software may be used.
    
2.  necessary installation scripts: DJVMinstall, DJVMbuildClassPathJAR.
    Copies of these and other scripts can also be found in the unpacked
    ${RVM_ROOT}/rvm/bin/.

3.  DJVM_VERSION a text file, used by DJVMinstall, which contains the 
    version of this software package. (e.g. "1.0.4").
    
4(a). jikesrvm-cluster-extns-.tar.gz - the file containing the new
    source directories and patch files, where  is the current version. 
    (example: jikesrvm-cluster-extns-1.0.1.tar.gz)

4(b). jikesrvm-reliable-extns-.tar.gz - the file containing the new
    source directories and patch files, for the reliability extensions to
    the Distributed Jikes RVM.  The license which covers these is different
    to the Common Public License, so they may not be included.

5.  DJVMmakepatch, the file which created jikesrvm-cluster-extns-.tar.gz
    This file is NOT necessary for the install, but may be useful as a 
    reference if problems are encountered.

6.  jikesrvm-2.2.0.tar.gz - the archive of the source code for the standard
    Jikes RVM version 2.2.0. This can be obtained from:
    
    http://www-124.ibm.com/developerworks/downloads/index.php?group_id=95

7.  classpath-0.05.tar.gz - the source file of the GNU ClassPath library 
    version 0.0.5.  NOTE that the most current version is 0.1.
    
8.  jlibraries.tar.gz - the runtime libraries for the Jikes RVM.  These 
    can be obtained at:
    
    http://www-124.ibm.com/developerworks/downloads/index.php?group_id=95
       
9.  jlibsource.tar.gz the source files for the runtime libraries.  These
    can be obtained from:
    
    http://www-124.ibm.com/cgi-bin/jikesrvm/jlibsource?rev=R-2002-11-21-19-57-19.src&jrv=2.2.0
    
    Note that the source and binary libraries must match with the correct 
    release date.

To build the Distributed Jikes RVM source tree:

1. set all required environment variables, as specified in the
   dJVM manual.  The parent directory to $RVM_ROOT should exist.
   	
2. from the directory in which the above mentioned files are located
   run DJVMinstall	

3. ensure that jikes version 1.18 (the most current version) is available 
   and used in the install and in all subsequent builds of the Distributed 
   JVM.  If not, the script 'DJVMbuildClassPathJar' will display an error message and stop execution.
   
4. If the reliability extensions, referred to in 2(b) earlier, are incuded, 
   the user will be prompted as to whether she wishes for those extensions to 
   be added.  
   
5. run ./DJVMbuildClassPathJar.

After these steps are completed the distributed Jikes RVM can be built using 
the normal 'configure' (jconfigure) and 'build' (jbuild) commands --
see the dJVM manual.

Why are the dJVM extensions NOT in a separate package?
------------------------------------------------------

The short answer is that we didn't have enough time to create a separate
package, say, au.edu.anu.dJVM.  In order to do so, we would have had to 
either:

1. Declare a lot of methods and fields public.  Although many already are
   this in not good from a design point of view because the internals of
   the dJVM should not be readilly accessible by the application 
   programmer.
   
2. Include, in the com.ibm.JikesRVM package, classes to access the 
   methods and fields of classes within package au.edu.anu.dJVM.
   
In time we intend to adopt the second of the above alternatives.
   
James Sinnamon - 16 December 2003