0.1.0 / December 11, 2018
|Written in||C, Java|
A micro Java Virtual Machine (uJVM) is open source Java Virtual Machine implementation specifically developed for use on embedded systems with low RAM and persistent storage available (e.g., a variety of boards based on ARM Cortex-M processor cores (M3, M4F, M23) and Atmel AVR microcontroller boards with at least 64 kB of Flash memory). Developers intend to follow The Java Virtual Machine Specification Java SE 7 Edition. While the amount of H/W resources available on embedded systems necessarily constrains size of executable code and libraries available, uJVM provides interfaces that let Java applications interact with H/W devices (timers, GPIO interfaces, etc.).
Implementation overview[edit | edit source]
uJVM was designed in accordance with overall architecture described in Java Virtual Machine Specification Java SE 7 Edition. So basically it can be divided into 3 parts:
- Class loader
Class loader of uJVM can load contents of classes stored in .class or .jar files into memory, perform linking and initialization.
- Managed memory areas
uJVM supports thread specific register storage, memory allocation for heap and thread-specific stacks and garbage collection.
- Execution engine
Due to severe memory footprint restrictions, uJVM has only bytecode interpreter as execution engine - implementing JIT compiler would greatly increase memory consumption. uJVM execution engine gives Java code access to JNI methods; however, as of January 2019 Java classes that directly contain native C code are not supported yet.
Supported platforms[edit | edit source]
- x86_64 Linux
- Arduino MEGA 2560
For every supported platform there's quick start guide and working source code examples.
Future plans[edit | edit source]
As of January 2019, uJVM is used as bare-metal application that does not require any OS for H/W interaction; however, there are plans to make it usable as framework that enables execution of Java applications for RTOSes, e.g., FreeRTOS, NuttX or Zephyr.
See also[edit | edit source]
Others articles of the Topic Java (programming language) : AdoptOpenJDK, Apache Commons DbUtils
Some use of "" in your query was not closed by a matching "".Some use of "" in your query was not closed by a matching "".
References[edit | edit source]
This article "UJVM" is from Wikipedia. The list of its authors can be seen in its historical and/or the page Edithistory:UJVM. Articles copied from Draft Namespace on Wikipedia could be seen on the Draft Namespace of Wikipedia and not main one.