8 Java frameworks for embedded development

1 credit

The creators of Java had a vision that the language was “write once, run anywhere”, and their success couldn’t be more evident than in the embedded world.

Being able to write a single version of a Java program and run pretty much the same binaries everywhere is a big draw for teams building software for small devices and hidden computers. In many cases, these developers don’t know much about the processor that will be running in the final product, and they don’t need it.

Java’s flexibility to run anywhere also helps long-term product teams, because the second, third, or fourth generation of a product might run on different chips. Software can usually be adapted with little or no additional coding.

Today, many Java frameworks are used to create embedded Java applications. Some are general tools intended for use in many types of machinery. They are often the best starting point for teams building new applications.

Other frameworks have been developed for a specific device or family of devices. These can include both a programming base and features that support the devices or other products your app will run on. The most common example of this type of embedded Java framework may be Android, which developers use to build apps for Android phones, Chromebooks, and other devices like TVs.

Here are eight great built-in Java frameworks. Each of them takes advantage of the stability and breadth of the Java platform and third-party libraries for small devices and hidden computers. These frameworks adapt traditional Java techniques and approaches to work faster and easier in the embedded market.


Android is probably the best known embedded Java framework. It started as a base to build apps for the phones that Google was building to compete with Apple. Much of the original codebase was open source, and now many other types of devices (not just phones) support Android apps.

Google’s ChromeOS, used in Chromebooks, is just one example. Dozens of small boxes bring Android apps to large flat screens for the living room.

Writing Android apps is a simple way to target all of these devices. It also allows device makers to open their products to third-party developers.

Some developers only work with basic Android libraries, which are more than enough for many programs. Others use frameworks that rely on Android. Some of the most popular are Ionic, Flutter, and Framework7. A common feature allows developers to reuse the design for other platforms like iOS. Flutter, for example, targets six different platforms.

Java Integrated Framework

Java Embedded Framework makes it easier for developers to write high-level Java code that addresses common interfaces in embedded systems.

Popular examples are Raspberry Pi and Orange Pi. With this framework, you don’t need to master the low-level programming required to communicate with hardware interfaces such as SPI, I2C, Serial, GPIO, or One Wire. The framework developers have already handled most of this for you.

Java Embedded Framework is divided into several main modules. The main module connects directly to the layer of the Linux operating system that controls the board. It simplifies the use of pure Java to connect to many tasks on the operating system layer. There are also drivers for the major hardware components commonly found on these small boards.

Oracle event processing

One of the jobs of an embedded device is to capture data. Factories, for example, rely on on-board machines to track production and monitor anomalies. The Oracle Event Processing Framework is a lightweight version of Oracle Event Driven Server that enables devices to capture events, filter them, and forward them as needed.

Some of the configuration syntax is borrowed from SQL, which makes it relatively easy to understand. The framework’s event processing model can also dig into the event stream to look for correlations and other patterns in the data.


If a job requires programming an embedded device to respond to RESTful events, Jersey is a good option. It is optimized for juggling JSON packets coming and going by extending the JAX-RS toolkit. Architects like this solution because it can be one of the best ways to automate communication with the device.

Jersey offers a few extras, including the ability to “cut” responses. This means storing data and then sending it in one big chunk. Segmentation is particularly useful for devices that are not always connected to the Internet. It is also useful for reducing the load on any central server responsible for communicating with many devices.


Many people think of Vert.x as a framework for building complete web applications. The good thing is that it is divided into modules and you don’t have to use them all. The Vert.x core contains most of the important code for writing services that interact with the world and the machine.

Anyone building a basic tool can rely on the network and file system protocols of the Vert.x framework to set up streams that juggle incoming and outgoing requests.

Some of the Vert.x modules may be ideal for embedded tasks. The OpenAPI and API Service libraries, for example, perform many tasks to support an API. The GraphQL library includes the routines needed to support GraphQL calls. These libraries primarily focus on building web applications and web services, but they can also be used to handle simpler communication.


If the goal is to create a simple, powerful, and RESTful web service, many Java developers turn to Dropwizard. It is also an excellent choice for in-vehicle applications. You can use the Web Services API to control and configure devices, and other devices can access the service through its API. Humans can control the service through static HTML pages with some JavaScript.

Dropwizard is divided into a number of smaller modules which can be included or excluded depending on the functionality you need. The basic and database modules are suitable for basic tasks.

Humans interacting with your services can use Forms or Views modules. Authentication is generally a good idea, and Dropwizard’s authentication module supports both Basic and OAuth2 protocols.

Apache Mina

Any application that requires a robust network layer can use Apache Mina to juggle some of the various NDP (Neighbor Discovery Protocol) or TCP connections securely and reliably.

The code is built on top of the new IO (Java NIO) classes so that developers can process incoming or outgoing data in a more abstract way. The code is largely event-driven, so developers don’t have to worry about the network interface.

Java card

Some embedded processors are wrapped in additional layers of security to facilitate sensitive data such as financial transaction details. Oracle’s Java Card supports multiple applications running in secure enclaves such as tamper-proof chips. These processors are often slower and have less memory, and the Java Card framework is simplified to run smoothly with fewer resources.

What about Java web frameworks?

While this article sheds light on frameworks designed for embedded machines, the reality is that more and more developers are creating web applications for embedded devices.

Smaller devices may be less powerful, but often have enough RAM and CPU power to run a web server application for a few clients. An application that is not intended for a billion users on the open Internet can work very well in an embedded system.

This is often a good solution as it allows users to log into the device through a web application. Developers can take advantage of all the standard features of a basic website.

Many popular web application frameworks work remarkably well on small machines. This is partly due to the desire to reduce and simplify the server side of Java web applications. New lightweight frameworks like Spring Boot, Vert.x and Vaadin (see also Hilla) are all reliable choices. Some embedded developers even get by with older, heavier frameworks like Spring, Struts, or JavaServer Faces.

All of these frameworks date back to the years when servers were much less powerful. They can work well for scenarios where a user needs to interact with the software and the embedded device is relatively powerful.

Using standard Java for embedded applications

Some developers don’t need to use an embedded framework because they get the libraries and functionality they need from a standard Java release. Java Micro Edition (JME) comes in several flavors and some are explicitly designed for embedded systems. They provide important Java libraries, such as an OAuth library for authentication and a JSON library for message parsing and composition. In some cases, this may be enough.

Developers with larger, more powerful boards can even use Java Standard Edition for embedded applications on small devices. Oracle Java SE Embedded is a standard version of Java adapted to the embedded world.

Oracle supports many different device types by making standard binaries available. For example, Raspberry Pi and a few other small embedded systems come pre-built. Oracle also supports important market segments such as phones and televisions.

For basic embedded Java development projects, a standard download from Oracle may offer everything you need.

java software

Previous IFF CB Meeting news 5/2022: 17th General Assembly, strategy implementation and upcoming events
Next Space 4X/Grand Strategy Game Alliance Of The Sacred Suns will have a simplified tutorial after player feedback