CleanJ is a project for running Concurrent Clean programs on Java VM.

Concurrent Clean is a pure and non-strict functional language whose syntax is similar to that of Haskell. It is characterized by uniqueness typing to allow side-effect.

CleanJ's approach is to translate ABC code into Java program. ABC code is a intermediate language generated by Clean compiler. CleanJ system consists of a ABC-Java translator and translated runtime libraries.


The behaviour of the program generated by CleanJ is a little different from the original one. The main difference are listed below:

The original Clean generates very efficient code but CleanJ generates very inefficient code. Currently CleanJ cannot use for a practical use.
representation of char type
The char type of the original Clean is represented by one byte sequence with no encoding. That of CleanJ is represented by two byte sequence with unicode encoding.


CleanJ version 0.9 is released on 17/Sep 2006.

The distribution package is available at http://sourceforge.net/projects/cleanj/.


Snapshots are available at http://svn.sourceforge.net/viewcvs.cgi/cleanj/snapshots/.

File naming format consists of [package name]_[create date].zip.


ABC machine instructions
The document is based on the experience of developping CleanJ. Some entries of instructions are blank but this is sufficient to develop such a program as CleanJ.


I note down the flow of ideas and concerns on imeplementing cleanj and its runtime environment.