[Haskell] ANNOUNCE: JVM-Bridge 0.3 released

Ashley Yakeley ashley at semantic.org
Mon Apr 19 00:48:40 EDT 2004

Release 0.3 of Haskell/Java VM Bridge is now available in source-code 

New in Version 0.3:

    * Windows support (thanks to Thomas Pasch)

    * Can now work with third-party Java libraries

    * Minor bug fixes

Haskell/Java VM Bridge allows Haskell programs access to the Java 
Virtual Machine. It comes in two parts: the 'Native' part, that 
abstracts away differences in the various Java VMs, and the 'Haskell' 
part that provides a Haskell API. The Native part is not 
Haskell-specific, and could potentially be used by other languages 
wishing to access the Java VM.

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 methods;

* 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;

* Easy to port to new Java VMs.

You will need:

* An x86 machine running some form of Unix, or a Mac OS X machine, or a 
Windows machine with MinGW installed (see Building.win32 for notes on 

* GHC 6.2.1 or later;

  Earlier versions of GHC may work, but there's a bug in ghc-pkg in GHC 
6.2 that causes package problems and may necessitate editing your 
package.conf by hand. Use 6.2.1 instead.

* A Java VM.

Haddock documentation is available by running "make doc". There are 
currently no annotations however.

Some simple examples have been included such as 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.

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


Future plans:

* use hierarchical module structure

* separate out pure (non-FFI) Haskell into a separate package

Ashley Yakeley, Seattle WA

More information about the Haskell mailing list