The importance of being embedded
Java as a “global language” for embedded solutions
JAXenter met with Régis Latawiec, COO of embedded systems solutions providers IS2T, at embedded world this spring to discuss, among other things, the evolution of embedded technology, why Java was their language of choice for in-device software solutions, and what the company envisions for the future of the IoT.
JAX: What kind of services does your company offer?
Latawiec: IS2T is a software editor that provides solutions for embedded system software development. Our flagship product is the MicroEJ® virtual platform, which provides a unified execution environment across a wide range of processors for the embedded world. Of course, virtual platforms could be using other languages than Java, but we have chosen Java technology because it is one of the “world languages for applications”, with a large community of more than nine million engineers. We believe that Java, in synergy with C - its native companion language - is a good choice when providing virtualization in object-oriented programming.
When did you start your business?
We started in late 2005. Fred Rivard (CEO of IS2T) previously worked at OTI and was part of the Eclipse Java compiler team. A few years later, in the IBM Java virtual machine team, he got again deeply involved in the Java technology design. Having generated one million euros with an initial round of fundraising, we designed the MicroEJ technology and our first products to offer customized Java platforms to the Industry.
In 2009, we began to form partnerships within our embedded ecosystem (software & silicon vendors) and to deliver ready-to-use standard platforms. The embedded market is very fragmented as there are lots of different microprocessors, RTOS, communication stacks, user interface stacks, linkers… and to simplify this complex world in order to reduce the difficulties met when developing a new product, customers from various vertical markets asked for generic standard software platforms.
Soon, we had to quickly design different Java platforms, based on Java Virtual Machines (JVM) that could run on any kind of microprocessors or microcontrollers. To do so, we internally developed tools, processes, and software components. Today we have more than 20 different Java Virtual Machines adapted to each market but still providing the very same unique interface to develop embedded Java applications. Although we mainly target embedded processors, we can make new ready-to-use Java platform (not a “port”) for any kind of architecture within few months only. This is unique in the industry: as far as we know, none of our competitors can do that.
With how many people?
Not many, just a few. It depends on the microprocessor architecture, the RTOS complexities, and the hardware IP blocks (such as bus accelerators, DMA, pipelines,) that are included in the chip.
How do you do that?
When you design software, the expressive power of the language you use is a key. Take a look at other famous software companies: they all have their own - and sometimes several - languages: Oracle with Java, Microsoft with their Java-like C#, SAP with Abab, etc...
We followed a similar strategy, and wanted to control our programming language to develop our Java Virtual Machines. Today, it allows us to have high productivity and tremendous execution performance. Not surprisingly, it is an extension of both C and Java languages, combined together in a unified language.
Can you tell us more about this language?
Not at this point. It is one of the assets of the company. We will release it one day.
What are your markets?
We focus on design-to-cost embedded systems, from small connected devices with HMIs, to more complex IoT solutions. We don’t provide any virtual platforms for PCs or servers, but we can address a multitude of market segments because our technology is so small that we can fit it onto any kind of microprocessor. We also compete with our challengers on smartphones and tablets.
In the past, companies built their own software platforms, but everything in their system was tightly coupled and hard to maintain. Today, things have changed and companies can buy ready-to-use platforms to save time and resources. The market is now mature enough and ready for outsourcing strategies when it comes to quickly launching embedded devices onto the market. Built upon customers’ request, the MicroEJ solution finally came right on time.
Did you see this coming when you started?
Yes. We did spot the trend. The Java language was really popular when Java application platforms emerged in the early nineties. Not only because it is an object oriented programming paradigm and offers a virtual machine, but also because of its productivity and scalability. Since then, the embedded market has evolved and today’s ARM Cortex M4, for example, has roughly the same CPU power as PCs at that time. The design process that everyone uses for PC or servers worlds is now available for embedded software design: virtual application platforms are now a commonly used technology.
Thanks to the Java portability, IS2T provides the ability to make a simulation system for prototyping and validation. Usually, once a customer has prototyped their system on a PC, the are not able to simulate the sensors or actuators implemented by the embedded system. IS2T provides the ability to extend the simulator with virtual sensors or actuators to fully test software applications on PC before deploying it onto the embedded system.
The simulator also provides the memory footprint required for the software, so that the most suitable hardware system can be selected to run the functionalities expected by marketing teams. If prototyping is possible and if the technology that is used for prototyping stays the same until the end of the process (this is the case with MicroEJ), software and hardware systems may be designed in parallel. This allows switching to Agile processes like Extreme Programming, Scrum etc. MicroEJ is not only a technology, it also includes a fast go-to-market development process with the just-needed-Bill-Of-Material for the device.
OK, so aside from your thoughts on embedded Java, what’s your stance on the IoT in general?
IS2T’s vision of IoT is driven by portability and ubiquity. “Compile once, run anywhere” is fine as long as your hardware runs Java. This is what we saw coming: every device can run Java technology, from the one-dollar microcontroller to the fifteen-dollar one. Once you know every device can run Java technology, you can deploy a Java program in the Cloud, on a gateway or on edge devices.
Today we work with gateways just this size [shows a square of the size of two credit cards], which you can connect any device from home with. It works the same way in wearable devices. You’ve got Nike here [at embedded world], or Adidas. Data is collected when a device is being used. Complex data fusion is then needed to integrate to provide consistent data to help you to monitor your activity.
Unfortunately this cannot be remotely controlled by your smartphone because it has to be instantaneous, immediate and may use wired communication with textiles. That’s why a wearable gateway is needed. So to make this happen, we focus on small memory footprints… And you probably know about OSGi?
Yes, I remember reading that you’re an OSGi Alliance member.
The OSGi framework is a great software component with a large community of engineers (all Eclipse plugins are OSGi based components). But it has to rely on an infrastructure that provides secured control of the resources that a service can use (RAM, CPU load, data, IOs access). Either you use a lot of cryptography means which are very complicated (code size, logistics) or you provide a Java Virtual Machine that allows to identify each vendor service, every object's owner, every task's owner, and so on...Therefore you regulate the services with a built-in hypervisor. This is what we actually do.
Can you elaborate on this?
The Java Virtual Machine can run services in a protected way. The kernel of the Java Virtual Machine keeps track of all the services called “Features” (a group of OSGi bundles). When a Feature needs to access to another Feature, this will be handled by the kernel. The kernel rules everything. It’s like a hypervisor. If a feature starts to behave very strangely, the kernel can kill it and roll back to the previous state, like OSGi does, but in a safe way. MicroEJ has all the power of OSGi, but safely and at a price of less than an extra 20K for the built-in hypervisor.
What do you think about the future of Java in general? Last year it was announced at JavaOne that JavaSE and JavaME are going to be unified. What are the consequences of this for Java and the Internet of Things?
Oh, this is very good for the entire Java ecosystem. We are very happy that Oracle decided to unify everything into a unique set of core APIs that can be used across all devices from Java SE for PC to MicroEJ based devices.
So you think Java is finally going to fulfill its promise to “Write once, run anywhere”?
This is why we are here. Our first Virtual Machine ran on an 8-bit microcontroller. We expanded to the 32-bit core architectures like ARM Cortex M series which are now very common. Our starting point was a very restricted hardware, and we tried to come up with an architecture that could be ported everywhere. Now we are on Cortex M0+ to Cortex A8 and massive multi-cores.
Today ARM was awarded embedded award for its new technology the V8R which can run multiple operating systems. How do you think that’s going to affect the embedded community as a whole?
This will change the way people will program things. It’s very good news for IS2T actually because a Java Virtual Machine basically aims at simplifying software design approaches that are getting more complex with multi cores. With a Java Virtual Machine, developers don’t have to know anything about the hardware. IS2T is involved in many projects with 256 to 1024 cores within one chip. For these particular projects IS2T can provide a unified programming model even if it deals with a very complex (under the hood) system.
What are the biggest challenges for the embedded market at the moment?
Bringing Java developers to the embedded field – and bringing embedded developers to Java. [laughs]