As I reported before, this year’s ARM TechCon’s main theme was low-power computing. The ARM chip consumes less power and realizes low-power computing. Low-power computing is not realized with a chip alone. It needs collaboration from the OS, utilities/middleware software, and applications. And one more thing that is important is a development platform for software.
At the ARM TechCon, I interviewed four companies that contribute to low-power computing from the perspective of various kinds of software. IS2T is based in France and provides very small footprint Java development and execution platforms. They announced two new products at the show. One is called MicroEJ and the other is MicroJvm Virtual machine . Java environments exist for enterprise (standard edition, SE) and embedded systems (micro-edition, ME). Java ME is further divided into Connected Device Configuration (CDC) and Connected Limited Device Configuration (CLDC) flavors. IS2T supports Java ME with the CLDC flavor that is suitable for very low power computing.
The spokesperson I interviewed was Regis Latawiec. Although his title is executive VP of business development, he was very technical and I enjoyed a conversation with him. Technical people tend to get enthusiastic when they meet with someone who can appreciate and understand their technologies. Well, I am not an expert but someone who knows just enough to be dangerous. In the past, I dealt with Java ME at a startup that developed and marketed security solutions for a card reader. Increasingly, cards like credit cards incorporate a smart chip that cannot be tampered with, but a card reader may not be very secure. The startup’s product was to provide a security layer, similar to the mobile information device profile (MIDP), for card readers. I am by no means a Java developer or an expert in the subject. Back to IS2T. While I was reading their press release, I had several questions and this was a good venue in which to clarify my questions. See, I am not a reporter who simply takes what was said and writes an article about it. Instead, I analyze it and express my opinion.
MicroEJ: MicroEJ, Java development platform, is a product that consists of many elements, such as SDK, JVM, and a simulator. It uses open source Eclipse as an SDK base and expands its functionality. Because Eclipse supports multiple languages, with plug-ins, the SDK can support C and C++, which are still the dominant development languages; there are many legacy C and C++ applications still in the embedded segment.
The following is a screenshot of the SDK function of MicroEJ.
MicroJvm Virtual machine : Their JVM requires only 28 KB of flash memory and less than 1.5 KB of RAM. It also boots quickly, in 2 ms at 120 MHz. They estimate that a fully functional advanced human machine interface (HMI) requires 90 to 140 KB. By comparison, a solution from an incumbent requires 350 KB of ROM and 130 KB of RAM for CLDC.
Simulator: We can take two different approaches in development. One is to settle on a hardware platform first and then develop software for it. The other is to develop the software first and then find a suitable hardware platform. In many cases, the hardware platform is a given. Because a typical embedded system is resource constrained, we do not develop software on the target platform. Instead, we develop it on a much more powerful platform, like a PC with a faster and more powerful processor and abundant memory. But the downside of that is the need to cross-compile and download the binary to the target machine for testing. If the tests fail, we need to go back to the development environment and fix the code, then repeat the process until the code is perceived as acceptable.
With a simulator, we can develop and test software on the same platform, saving effort and the time needed to go back and forth between the target and development platforms. But it is more than effort and time; it requires extra power to do so. From the green IT perspective, this saves extra energy. Better yet, this is Java and “develop it once and run it everywhere.” So we can develop and debug software on the development platform. The very code we developed on the development platform should run on the target platform without any change. Also, no cross-compiling is necessary.
What about performance? In general, a simulator does not simulate performance, for the obvious reason. However, IS2T’s simulator provides information, such as task scheduling and memory requirements. If we have the latitude to select or adjust the target platform, we could choose the best one on the basis of the information. If we do not have that freedom, we could use the information to improve the software. Experienced programmers have a sense of how much memory is required for some particular function. If they have the memory requirement information for the current version of the software, they can use that information to fine-tune the code to reduce the memory requirement.
Legacy applications written in C and C++: C and C++ applications are dominant in the embedded world. If you provide only Java solutions and ask users to switch their programming languages to Java, you would not win them. So what IS2T did was to develop a Java platform that interfaces with those legacy applications. Java Native Interface (JNI) is a standard that allows a Java program to call programs in both C and C++ and vice versa. Their MicroJvm Virtual machine can run on either RTOS or bare metal, maximizing flexibility. Regis showed me a sophisticated diagram that was too detailed for me, so I drew the following, simpler diagram. MicroJvm Virtual machine allows the reuse of legacy programs and shortens deployment.
But that is not all. From the green IT perspective, this is very energy efficient. I mean each application, regardless of which programming language it is written in, consumes a lot of energy when it is developed. Software development means human activity. Programmers need to be housed somewhere, and that alone consumes energy with lighting and temperature control. Software needs to be developed on some kind of computers, and they consume energy. Source code may have to be printed out for detailed discussions, which consumes energy. Programmers may have a coffee pot for relaxation, which costs energy. If we throw them away and start from scratch in Java, the resultant system may be cleaner (in terms of logic but not of greenness) and more consistent. But additional energy must be consumed for that.
Future: The Internet of things includes many objects with networking capability. Some do not interact with humans but others do. If such an object is resource constrained but needs a human machine interface, that HMI will be very primitive because a sophisticated interface requires a certain amount of resources. With something like MicroJvm Virtual machine, many such objects could be installed with more sophisticated HMI.
Competitive edge: Finally, I asked if they had some patents to show their technical superiority. Regis’s answer was very interesting. If they apply for a patent and get it, some of the details of their technologies may be disclosed. It is their decision to keep their technologies secret. Then how do you know if they are really that good? He said he would show it by real examples. Give them a week for a fairly sophisticated specification, and they will deliver it in a week. That is proof! Also, their secrets are declared (in secret) to a lawyer organization so they can prove their invention. It is very different from what I know, but it is interesting.