Interesting experiment: micro-libgcj.

micro-libgcj is a lightweight version of the GCJ project’s runtime library (libgcj), intended to provide a usable subset of Java’s features while remaining small and self-contained. Whereas libgcj is intended to be a complete J2SE implementation based on GNU Classpath, micro-libgcj provides only enough functionality to support core Java language semantics.

We started this project with the goal producing small, self-contained executables from a mix of Java and C++, targeting four platforms: Win32 (i386), Mac OS X (PPC), and Linux (i386 and amd64). GCC is an ideal tool for this purpose, since it is widely ported, and its Java and C++ compilers produce ABI-compatible object code.

We consider micro-libgcj to be reliably usable on all four supported platforms, but it has not had enough exposure to be considered stable. We hope to make a stable release once the current beta distribution has seen use in non-trivial applications.

Should be fun to experiment with. See also the gcj mailinglist thread.