UJVM
Preview release | 0.1.0
/ December 11, 2018 |
---|---|
Repository | github |
Written in | C, Java |
Engine | |
Available in | English |
License | Apache License |
Search UJVM on Amazon.
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[1]. 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]
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]
- x86_64 Linux
- STM32F103-BluePill[2]
- STM32F4Discovery[3]
- STM32F429I-DISCO[4]
- Arduino MEGA 2560[5]
- MSP-EXP432P401R[6]
- EK-TM4C1294XL[7]
- NuMaker-PFM-M2351[8]
For every supported platform there's quick start guide and working source code examples.
Future plans[edit]
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]
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]
- ↑ "The Java Virtual Machine Specification Java SE 7 Edition" (PDF).
- ↑ "STM32F103-BluePill". 2018-10-29.
- ↑ "STM32F4Discovery" (PDF). 2017-05-31.
- ↑ "STM32F429I-DISCO".
- ↑ "Arduino MEGA 2560" (PDF).
- ↑ "MSP-EXP432P401R". 2018-03-08.
- ↑ "EK-TM4C1294XL".
- ↑ "NuMaker-PFM-M2351" (PDF). 2018-08-29.
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.