Embedded Java



    This project develops technical solutions that increase the useability and attractiveness of the Java programming language as a programming language for embedded software development. The principle aim of this effort is to offer tools that will increase productivity and quality of software development for embedded platforms.

    The experimental work is embodied in the HVM (Hardwarenear Virtual Machine). The HVM is a lean Java virtual machine for low-end embedded devices. It is a Java-to-C compiler but it also supports interpretation. The main distinguishing feature of the HVM is its ability to translate a single piece of Java code into a self contained unit of ANSI-C compatible C code that can be included in an existing build environment without adding any additional dependencies. The raison d’etre of the HVM is to support the stepwise addition of Java into an existing C based build and execution environment for low-end embedded systems. Other important features of the HVM are,

    • Intelligent class linking. A static analysis of the Java source base is performed. This computes a conservative estimate of the set of classes and methods that may be executed in a run of the program. Only this set is translated into C and included in the final executable.

    • Executes on the bare metal (no POSIX-like OS required). The generated source code is completely self contained and can be compiled and run without the presence of an OS or C runtime library

    • Hybrid execution style. Individual methods (or all methods) can be marked for compilation into C or interpretation only. Control can flow from interpreted code into compiled code and vice versa. Java exceptions are supported and can be thrown across interpretation/compilation boundaries

    • 1st level interrupt handling. The generated code is reenterable and can be interrupted at any point to allow for the immediate handling of an interrupt in Java space

    • Hardware object support. Hardware objects are supported.

    • Native variable support.

    • Extreme portability. Generated code does not utilize compiler or runtime specific features and can be compiled by most cross compilers for embedded systems e.g. GCC or the IAR C Compiler from Nohau.

    • The HVM supports the SCJ specification level 0 and 1. It does not support garbage collection but relies on the SCJ scoped memory model for memory management. The HVM can execute the miniCDJ benchmark
    Effektiv start/slut dato01/08/10 → …