AnvilJ is a code generation technique developed in the Real-Time Systems Group at York that aims to greatly simplify the development of Java for embedded hardware architectures. It uses a unique form of virtualisation to hide the complexities of multicore embedded hardware with complex memory in a way that doesn't require lots of runtime overheads and is suitable for use in real-time environments.

AnvilJ allows the programmer to write Java code for a 'standard' desktop computer without having to consider the true target hardware. The programmer then 'deploys' their code by writing a simple text file that places some of the threads and object instances onto the processors of the target hardware. AnvilJ then works out the rest. The architecturally-neutral input code is automatically translated to output code, according to the provided mappings, to work on the target hardware. The output code is standard Java (so no new compilers or debuggers are needed) and it is supported by an automatically-generated, minimal-overhead, runtime that avoids the code size increase of many existing middleware and virtualisation technologies.

AnvilJ is distributed as an Eclipse plugin and is integrated fully into the Eclipse environment. It was developed with funding from the EU FP7 MADESproject and will be released very soon as an open source tool, licensed under the GPL. Contact Ian Gray for more information.

AnvilJ Documentation and Download