Java for micro controllers
HomeGetting StartedDownloadsTrac


Darjeeling is a Virtual Machine (VM) for Micro Controller Units (MCU). It can execute a large subset of the Java language on 8- and 16-bit platforms, such as Atmega128 or MSP430.

Features and limitations

We designed the VM from the ground up for extremely limited devices. Where other JVMs often require at least several hundreds kB of RAM, Darjeeling can run meaningful programs in as little as 2kB. In order to achieve this we dropped several features from the Java language.


  • Precise, compacting garbage collection
  • A 16-bit instruction set to reduce stack space consumption
  • Threads with ad-hoc stack space allocation (linked stack) and synchronisation
  • A simple method for calling with native C code from Java
  • Uses a static linking model to reduce code footprint


  • Does not support reflection
  • Does not support 64-bit and floating point types
  • No support for multi-dimensional arrays
  • Does not call static class initialisers in lazy order
  • Supports a limited subset of the Java class library