Embedded Java refers to versions of the Java program language that are designed for embedded systems. Since 2010 embedded Java implementations have come closer to standard Java, and are now virtually identical to the Java Standard Edition. Since Java 9 customization of the Java Runtime through modularization removes the need for specialized Java profiles targeting embedded devices.
Although in the past some differences existed between embedded Java and traditional PC based Java, the only difference now is that embedded Java code in these embedded systems is mainly contained in constrained memory, such as flash memory. A complete convergence has taken place since 2010, and now Java software components running on large systems can run directly with no recompilation at all on design-to-cost mass-production devices (such as consumers, industrial, white goods, healthcare, metering, smart markets in general)
CORE embedded Java API for a unified Embedded Java ecosystem
In order for a software component to run on any Java system, it must target the core minimal API provided by the different providers of the embedded Java ecosystem. Companies such as Aplix, Google, IS2T, Myriad, Oracle, ... share the same eight packages of pre-written programs. The packages (java.lang, java.io, java.util, ... ) form the CORE Embedded Java API, which means that embedded programmers using the Java language can use them in order to make any worthwhile use of the Java language.
Java SE embedded API from ORACLE
Java SE embedded is based on desktop Java Platform, Standard Edition. It is designed to be used on systems with at least 32 MB of RAM, and can work on Linux ARM, x86, or Power ISA, and Windows XP and Windows XP Embedded architectures.
Java ME embedded API from ORACLE
Java ME embedded is based on the Connected Device Configuration subset of Java Platform, Micro Edition. It is designed to be used on systems with at least 8 MB of RAM, and can work on Linux ARM, PowerPC, or MIPS architecture.
The offering of Java for embedded devices is growing fast with a large ecosystem of companies that provide Embedded Java virtual machines for ARM MCU based Cortex-M series (such as ST, Freescale, Renesas, NXP) and MPU (such as TI, Renesas, Freescale).
Embedded Java minimal requirements start at 30KB of (internal) flash and less than 2KB of (internal) RAM. In order to save Bill Of Material, most Embedded Java engines execute code in place, which avoids copying the code in RAM.
- CEE-J (Skelmir) virtual machines for IoT and embedded systems
- Excelsior JET Embedded
- PTC Perc Virtual Machine for embedded and real-time systems from PTC, Inc.
- Sun SPOT Sun SPOT Project
- MicroEJ for wearables, appliances, medicals, meters, home and building automation, gateways, thermostats, ...
- Real-Time Specification for Java
- Azul Systems
- Embedded Device Configuration from ESR consortium
- STM32 STM32J part numbers. MCU that embeds an embedded Java engine
|Wikimedia Commons has media related to Java Embedded.|
- STM3220G-JAVA : STM32 F2 series Java evaluation kit.
- Java SE for Embedded : Java SE for Embedded technology from Oracle Corporation
- 28 Kbyte Java Virtual Machine Supports 32-bit MCUs : Embedded Java for Cortex-M3/4 MCU from IS2T Corporation
- Java SE for Embedded Development Made Easy : Webcast covering development, troubleshooting, deployment
- http://www.systronix.com/ - Systronix TStik, JStamp, JStik : Small embedded Java systems, some with deterministic/realtime capabilities
- Google Android project : Open source project to create software for mobile devices such as the T-Mobile G1 phone
- CEE-J VM : Skelmir's commercial clean room virtual machine technology for embedded systems running Java applications.
- JControl : Very compact Java Virtual Machine for Embedded Systems
- Mysaifu Java2 Virtual Machine
- MEJ32 : virtual machines for embedded systems, available for ARM (Cortex-M0+/M3/M4/M7/M8/A5/A7/A9/ARM7/ARM9), MIPS32, RX, TriCore, V850, Tensillica, ...
- Excelsior JET Embedded : Compliant Java SE Embedded 8 for x86, x64, and ARM, with AOT compiler
- PTC Perc : a cleanroom implementation of Java Standard Edition with patented deterministic garbage collection for running realtime and embedded Java programs.
- Parallax : Parallax's Javelin STAMP, similar to the Basic Stamp but utilizing object-oriented technology instead of Basic
- Azul Zulu Embedded : Open Source Java for IoT & Embedded Systems
- JamaicaVM : a cleanroom implementation of a virtual machine and build environment for running realtime and embedded Java programs.
- JwiK BriK™ : Open source Java programmable wireless microcontroller for embedded wireless applications