A project to learn Java and create software for Mindstorms Robots using hardware supported by EV3Dev & the LeJOS way.

1. Introduction

Lego Mindstorms ecosystem is a fantastic educational way to learn Java, Linux and Robotics to develop your creativity using your favourite Bricks. In the the third generation of the product Lego Mindstorms EV3, others companies like Dexter Industries & Mindsensors has released boards combining the power of Raspberry Pi 3 with the usage of Sensors & Actuators from Lego Mindstorms ecosystem. The result is very healthy for the Community but…​ some questions appear in the air:

  • How to manage the hardware in an easy way?

  • How to continue using Java with all boards?

  • What happen with amazing LeJOS libraries about local-navigation in this context?

The answer is this project, EV3Dev-lang-java.


2. Project architecture

The project has been designed with the following solution in mind:

Layer Option 1 Option 2





BrickPi BrickPi3 PiStorms



Debian Jessie

Debian Jessie/Stretch


OpenJDK 11

OpenJDK JRI 11/12 ea

EV3Dev Kernel

4.4.47-19-ev3dev-ev3 4.4.47-19-ev3dev-rpi2


Note: At the moment, the whole solution is scalable until the next LEGO Mindstorms product estimated for next January of 2020.

3. Features included

Java features

  • OpenJDK Java 11/12 ea support for EV3 Brick, Brickpi+/PiStorms + Raspberry Pi 3

  • Java profiling tools Support (Oracle mission control & JConsole)

  • Logging support based on SLF4J

  • Centralized logs with Kibana

Platform features

  • Support for EV3 Brick, PiStorms v1/v2, BrickPi+ & BrickPi 3

Lego Mindstorms features

  • Regulated Motor Support

  • Unregulated Motor Support

  • Sensor Support (EV3 sensors)

  • Sounds Support

  • EV3 LCD Support


4. Subprojects

Stable projects:

Incubator projects:

  • lejos-navigation: LeJOS navigation stack

  • Usb Devices: A library to use Arduino, Grove Sensors, GPS, IMU, LIDAR, and more devices…​

  • ROS: A library to publish Sensor data to ROS for SLAM purposes

5. Competitive advantages

The competitive advantages of this project are:

  • Development Java robots with modern Java versions

  • Support for Multiple Bricks like EV3 Brick, BrickPi & PiStorms

  • Support for USB Connections for Sensors like 2D LIDARs, IMU & GPS & Arduino Boards

  • Usage of LeJOS interfaces

If you analyze the hardware, any EV3 Brick uses a SoC: Sitara Processor AM1808 (from year 2010) to manage Sensors & Actuators but now with the usage of a BrickPi/PiStorms unit, it is possible to use the power of a Raspberry Pi 3 increasing the possibilities to develop complex projects which require por Computational consumption.

Element LEGO Raspberry Pi 3 Model B+





EV3 Brick

BrickPi+ BrickPi3 PiStorms


Sitara Processor AM1808

Broadcom BCM2837 RISC de 64 bits


ARM9 300MHz / 456 Mhz

4× ARM Cortex-A53, 1.4GHz


16KB of Instruction Cache, 16KB of Data Cache, 8KB of RAM (Vector Table), 64KB of ROM

1GB LPDDR2 (900 MHz)




6. Timeline of the project

In 2015, EV3Dev was born to offer a solution to install a complete Linux Debian Operating System on EV3 Brick, BrickPi Series & PiStorms Series. The project provides an agnostic Linux interface to unify the way to interact with Mindstorms Hardware too.

At the end of the same year, EV3Dev-lang-java was born with the idea to continue developing Java robots on Lego Mindstorms and providing a port of LeJOS libraries like the local-navigation stack.

In the future, we will add the remote support and ROS support.

7. Evolution of Java on Lego Mindstorms ecosystem

LeJOS project is the unique Open Source project available for every Lego Mindstorms generations of the product. In any generation, the project had to find a solution for the following layers:

  • Runtime

  • JVM

  • Robotics libraries

This premise was solved in every Mindstorms generation:

Product RCX NXT EV3 + LeJOS EV3/BrickPi/PiStorms + EV3Dev-lang-java

Last release






Custom firmware

Custom firmware

Busybox + Native libraries

Debian Jessie/Stretch


Custom JVM

Custom JVM

Oracle JRE 8

OpenJDK 11/12 ea

Robotics libraries

Initial libraries

local-navigation, remote, ros

local-navigation, remote