FLEX is a compiler infrastructure written in Java for Java.
Applications include a program analysis and transformation framework for
distributed and embedded systems.
Native backends exist for
the StrongARM and MIPS processors; it can also generate portable C code
that can run on any platform with gcc.
It supports both Boehm-Demers-Weiser conservative garbage
collection and our own precise garbage collector. We also support
region-based allocation via our implementation of the Real-Time
Specification for Java. It fully supports several implementations of
the standard Java threads package, including a standard heavyweight
threads implementation as well as a lightweight user-level
implementation. It provides a range of standard compiler analyses and
optimizations, as well as unique optimizations for embedded targets,
including space optimization.