Welcome to EverybodyWiki ! Nuvola apps kgpg.png Sign in or create an account to improve, watchlist or create an article like a company page or a bio (yours ?)...


From EverybodyWiki Bios & Wiki
Jump to navigation Jump to search

Preview release
0.1.0 / December 11, 2018 (2018-12-11)
Written inC, Java
    Lua error in Module:Wd at line 162: attempt to index field 'wikibase' (a nil value).
Available inEnglish
LicenseApache License

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 | 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
  • 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 | 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) : GWT Highcharts, 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]

  1. "The Java Virtual Machine Specification Java SE 7 Edition" (PDF).
  2. "STM32F103-BluePill". 2018-10-29.
  3. "STM32F4Discovery" (PDF). 2017-05-31.
  4. "STM32F429I-DISCO".
  5. "Arduino MEGA 2560" (PDF).
  6. "MSP-EXP432P401R". 2018-03-08.
  7. "EK-TM4C1294XL".
  8. "NuMaker-PFM-M2351" (PDF). 2018-08-29.

Category:Java virtual machine

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.

Compte Twitter EverybodyWiki Follow us on https://twitter.com/EverybodyWiki !