MicroEJ Virtual Execution Environment

MICROEJ VEE is an application container dedicated to embedded systems. VEE stands for Virtual Execution Environment, and embeds a 32-bit virtual processor (MEJ32), a smart memory usage optimizer, along with a wide range of libraries.

MICROEJ VEE runs on any OS/RTOS commonly used in embedded systems (FreeRTOS, QP/C, ucOS, ThreadX, Mbed OS, VxWorks, PikeOS, Integrity, Blackberry QNX Neutrino, Zephyr Project, Linux, etc.) and can also run without RTOS (bare-metal) or proprietary RTOS.

MICROEJ VEE is compatible with all processor architectures available on the market (ARM Cortex-M/A, Renesas RX and V850, MIPS, Infineon Tricore, x86, Tensilica Xtensa, etc.), and supports C toolchains such as GCC, IAR, Keil (Arm compiler), Clang and GreenHills.


More info:


Implementations on Real or Virtual Devices


VEE Implementations for Target Hardware

MICROEJ VEE implementations can run on a multitude of hardware and software combinations used for building embedded devices.

It offers support from the tiniest MCU core to the more complex multi-core SoC. MICROEJ VEE also leverages Abstraction Layers to simplify port of the foundation libraries on middleware commonly found in embedded systems such as Ethernet, Wi-Fi/BLE, HAL, File System and more.


VEE Implementations for Virtual Devices

MICROEJ VEE makes it possible to prototype electronic products on virtual devices, that reacts like a digital twin of the real device. These Virtual Devices include physical peripherals simulators called (peripheral) mocks.

Virtual Devices are commonly used to prototype, design, test, improve and maintain embedded applications even when the target hardware is not available.

Mono-Sandbox versus Multi-Sandbox


MICROEJ VEE Mono-Sandbox

MicroEJ Virtual Execution Environment makes it possible to build a monolithic embedded software organized in three separated layers to provide separation of concerns:

  • (1) BSP layer (drivers, RTOS/OS, low-level stacks,etc.)
  • (2) MICROEJ VEE secure container (MEJ32 and foundation libraries)
  • (3) Binary portable applications

The safe virtual layer provided by MicroEJ enables:

  • Safety and Security: reliability is enforced by design
  • No need of MMU (Memory Management Unit): MICROEJ VEE works on any SoC, MCU, MPU
  • Collaboration between different teams is enforced (hardware engineers, UX designers, graphic designers, drivers/BSP engineers, software engineers, etc.)

Choose what is best for your application and implement parts in C/asm/C++ and other part in Java/JavaScript etc. (UI, Cloud connectors, edge computing).

VEE Tiny is a shrinked version of VEE Mono-Sandbox, it is optimized for size (applications smaller than 256KB) without sacrifying speed. VEE Tiny is suitable for environments requiring a small memory footprint. More information about VEE Tiny.


MICROEJ VEE Multi-Sandbox

MICROEJ VEE Multi-Sandbox is similar to any execution environment that power smart mobile devices (cellphone/tablets), with similar primary features, such as a dynamic application loader or application life cycle management.

With a small footprint of 25KB in static memory (flash), a MICROEJ VEE Multi-Sandbox environment enables:

  • Dynamic updates during product life time
  • Modular design emphasizes separating the functionality of an application with independent, interchangeable modules (= applications): each module contains everything necessary to only execute one aspect of the desired functionality.
  • Modules are sand-boxed at runtime: bugs and malfunctions are localized and cannot jeopardize the full system
  • Modules are stored and distributed to teams as building blocks: binary tested, certified (no recompilation needed to run the module)
  • Use of trusted module/APP repositories, and trusted secure distribution means

API for Embedded Software Application Development

MicroEJ APIs to Build Software Applications

Explore the largest standard open source set of APIs available for embedded applications engineers.


Embedded Systems Abstraction Layers


Abstraction Layers

MicroEJ’s Abstraction Layers ease port of foundation libraries on various Board Support Packages (BSP) usually provided by silicon vendors or OS vendors.

MicroEJ provides Abstraction Layers for each foundation libraries and examples for several underlying native libraries use.


How Can I Know My Hardware Is Supported?

MicroEJ offers plenty of MICROEJ VEE implementations for popular hardware architectures.
Follow the link below in order to find out if your hardware is supported and which MICROEJ VEE implementation is right for your project according to your processor core architecture and C toolchain.

Supported Hardware

Get Started with MicroEJ SDK for fast embedded software development

Get Started

Get access to our featured starter kits to let you try and evaluate our technology for IoT applications.

Happy coding!

Get Started


MICROEJ VEE implementations have been created for many architectures and microcontroller families. MicroEJ has a strong relationship with many silicon vendors and technology providers in the embedded industry. MicroEJ VEE allows their hardware and products to shine by easing the creation of rich applications to meet our mutual customer’s needs.