The Internet of Things (IoT) with more and more interconnected products promises to change our world by developing new usages and offering new business model opportunities. The embedded software complexity increased significantly and traditional C code for embedded systems development has reached some limits. Being thought from the very beginning with networking functionalities. Java has now established itself as one of the solution to address the growing software complexity. Today, millions of developers in the world use Java in embedded systems. Discover the top reasons for using Java in embedded systems.


High performance & small footprint

It initially took time for Java to be adopted by the embedded market because of heavy processing and large memory resource requirements (A typical Java Platform had a memory footprint as high as 5 Mbytes and processing requirements of 400 MHz).

To address these limitations and meet embedded systems’ needs, some companies offered reduced libraries with preselected functionalities. The applications developed with this kind of environment are limited and offer poor functionalities. To answer the problem, IS2T invented a completely different solution called MICROEJ VEE. MicroEJ Java platforms and their consistent set of libraries were structurally thought and built from scratch for constrained embedded devices. MicroEJ is by design dedicated to embedded systems and that changes everything. MicroEJ on Cortex-M has a boot time of just 2 ms at 120 MHz and an advanced, fully functional Graphical User Interface requires from 90 Kbytes to 140 Kbytes of memory program. Things have changed!


Write application once, run it on any other hardware platform

One of the major benefit of Java is the code porting. With traditional embedded development means, the release of a product can lead to costly additional developments to adapt the application to a new architecture. With the Java technology, no need to proceed to any code rewriting. Hardware and native code can change but software is left unchanged. One Java code will behave the exact same way on a 32-bit ARM cortex-M microcontroller with no OS, than on a more complex ARM Cortex-A running Linux, or on an Android or iOS smartphone. No code modification will be required. This definitely leads to reduced development time and avoids unexpected errors.


Object-Oriented Programming (OOP): A revolutionary concept that makes developers’ life easier

Java is based on Object Oriented Programming (OOP) which is a revolutionary concept that perfectly fits to software modularity and loose coupling between software entities. OOP makes software management easier: clear program organization, heritage and code reuse are some of the many advantages of OOP. Actions are not described through linear code anymore but through a coherent set of rules called “objects”. Thus it’s easier to develop compact and robust software programs even with a minimum experience. Let’s take the context of a product’s upgrade: With OOP it is possible to safely add new features or extra pieces of code. The existing software will be left unchanged thanks to loose software entity coupling, and new features will rely on unchanged legacy implementation.


Standard class libraries: Don’t spend time rewriting existing functionalities

Java has a huge set of class libraries covering a lot of functionalities like connectivity, sensors etc. These libraries were built to simplify developers’ lives because they can be reused by several embedded applications and thus, functionalities that already exist elsewhere don’t have to be written again for each new application. Development productivity is much greater with Java than with any other language.


A more reliable code? Java handles the problems for you!

Java relies on a virtual processor for code execution that automatically manages many things for you. Memory allocation for example: The Garbage Collector handles memory allocation by automatically freeing memory when no longer used. This enables to optimize the memory usage which is key in memory-constrained systems. Java also has mechanisms to handle runtime errors such as outbound array access detection or hardware resource access hazards. It allows to develop a more robust and reliable code. The Java technology really makes developers lives easier by managing the problems for them.

Additional Resources


Go further! Download “Software Factory” white paper

Download White Paper


Discover Kifaru, MicroEJ’s JavaScript Development Environment for Embedded Systems