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.
* 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.
* use hierarchical module structure
* separate out pure (non-FFI) Haskell into a separate package
Ashley Yakeley, Seattle WA