ANN (bis): Release 0.1 of Haskell/Java VM Bridge

Ashley Yakeley
Tue, 18 Dec 2001 22:24:24 -0800

OK, the SourceForge file release system bug has been fixed, so I put the 
release files up there. Please download from there rather than from


Revised, expanded announcement...

The first release, 0.1, of Haskell/Java VM Bridge is now available.

Haskell/Java VM Bridge allows Haskell programs access to the Java Virtual 
Machine. Features include:

  * Calling of Java methods, access to fields, array-handling;

  * Integration of garbage collectors;

  * Reconciliation of exception models;

  * Reconciliation of thread models, including 'synchronized'
    monitor support and the ability to fork Haskell actions as 
    Java threads;

  * Strong typing for Java classes and method argument lists
    (as tuples), and use of Haskell lists as arrays;

  * Creation of Java classes 'on the fly' (using DefineClass and 
    the Java Class File Format) that can have Haskell callback 

  * Lifted monads which do all the necessary JNI class and 
    method/field ID preloading and 'JNIEnv'-pointer variable 
    handling for you -- these can be automatically generated via 
    a tool (MakeJVMModule);

  * Layered design includes lower-level IO-based interface;

  * Automatic generation of modules for Java API classes;

  * All relevant imports, flags and libraries etc. handled by
    a single GHC package 'javavm';

  * No 'unsafe' Haskell calls or pure function FFI anywhere.

This release should be 'beta' quality, but has undergone little testing.

You will need:

  * An x86 machine running some form of Unix;

  * GHC 5.02 or later;

  * The appropriate JVM, installed in the appropriate place:

 		 - IBM JDK/JRE 1.3 for x86, installed in /usr/lib/ibm-java/IBMJava2-13/

 		 - Blackdown Port of Sun's JRE 1.3/Sun JDK 1.3 for x86, installed in 
      /usr/lib/j2sdk1.3/ and /usr/lib/j2re1.3/

No documentation is currently available, sorry. Two examples have been 
included: a trivial "hello world" program, and a program that shows a 
Java Frame containing an instance of a Haskell-defined subclass of Canvas 
that has a Haskell 'paint' method that draws an oval. You should be able 
to figure out most of it from that... and of course the source is 
available from SourceForge CVS.


Be sure to download the correct .tar.gz file for your Java VM. Simple 
installation instructions are included in the file.


Haskell/JVM Bridge and source code is licensed under the GNU Lesser GPL.


Future plans:

  * documentation

  * port to Cygwin

  * port to Darwin/OS X (waiting on GHC)

  * use of Java 1.4 API (waiting on Sun, though use of beta 
    versions is possible)

Ashley Yakeley, Seattle WA