 Jelatine 0.9.4
 ==============

 Jelatine is a Java virtual machine written against the Connected Limited
Device Configuration specification of the Java 2 Micro Edition body of
standards. Jelatine was designed to work in very small, memory-constrained
embedded environments, it needs just 32 KiB of RAM for running non-trivial Java
applications. Jelatine is an interpreted VM and it is fairly fast compared to
other interpreted VMs.

 Requirements
 ============

 Jelatine should run on 16-, 32- and 64-bit processors with at least 32 KiB of
available RAM for the heap. 64-bit processors may need a slightly larger
minimal heap, 64 KiB will probably suffice. Jelatine is written in ANSI C and
uses only a minimal amount of C library functions, and a couple of POSIX ones.
Thread support requires either POSIX threads or GNU/Pth. It should be easy to
replace it on architectures which do not support it, overall all Unix-like
architectures should be enough for running Jelatine. For building the classpath
you need version 1.4 or above of Sun's JDK or the ECJ compiler and the zziplib
library if you want JAR file support.

 Building and installing
 =======================

Please see the INSTALL file for full instructions.

 Feedback
 ========

Jelatine is still in an early stage of developement, it has already been tested
with fairly complex Java code but it still needs a lot of testing. All feedback
on its compatibility, stability, performance, bugs, etc... is welcome; feel
free to contact me at the following address: gabriele.svelto@gmail.com

 Features
 ========

- Very small memory footprint and high allocation efficiency, designed for
  heaps below 1 MiB of RAM

- Single word object header, all allocations (including C allocations and Java
  objects) have only 4 bytes of overhead (on 32-bit architectures). Permanent
  C allocations do not have any overhead

- Multiple threading systems are available: no threading, soft-threads using
  GNU/Pth and OS-based threads through POSIX threads

- Finalizers are fully supported

- Stop the world mark-and-sweep garbage collection

- Unified heap, C and Java objects are allocated from a signle
  garbage-collected heap

- Compact class and bytecode representation in memory

- Fine-grained lazy binding and unloading of single-use methods saves memory
  and makes VM bootstrap very fast

- Switched and threaded interprers are available depending on compiler features

- Code is documented using Doxygen

- Includes a modified version of Sun's tool for preprocessing classes to be
  used in a J2ME CLDC environment
