Welcome to EverybodyWiki 😃 ! Nuvola apps kgpg.png Log in or ➕👤 create an account to improve, watchlist or create an article like a 🏭 company page or a 👨👩 bio (yours ?)...


From EverybodyWiki Bios & Wiki

Preview release
0.1.0 / December 11, 2018 (2018-12-11)
Written inC, Java
    Available inEnglish
    LicenseApache License

    Amazon.com Logo.png 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]

    Other 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 "".

    • List of Java virtual machines


    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.

    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.