New Java ME Targets IoT Embedded Devices
Thu, 2013-08-29 15:10
Oracle has released the latest version of embedded Java, Java ME Embedded 3.3,
along with the Jave ME SDK 3.3.
Oracle is looking to support applications for the Internet-of-Things (IoT) and machine-to-machine (M2M) solutions.
They have even come up with the Java Platform Integrator Program to streamline the engineering work required to target
and deploy Java applications across multiple platforms. Remember that “write-once, run everywhere” claim?
Java has made a significant impact in the enterprise and on the desktop.
Java underlies many Android applications as well.
Java has been utilized in embedded applications but typically where the hardware can readily support it.
For example, a system that can run Linux easily supports Java in all its forms.
Getting Java to run on more resource constrained platforms is a challenge
but one that has been addressed by Oracle as well as other Java suppliers
The migration from 8- and 16-bit micros to 32-bit Arm processors makes Java more interesting.
It is possible to target the smaller platforms but the restrictions are many and the results are less than stellar.
Besides, there are plenty of low end platforms that have more then enough capability to handle Java.
Oracle has essentially sidelined real time Java that was initially pushed by the Real Time Specification for Java (RTSJ).
RTSJ has been around for awhile but did not garner lots of traction
Companies like Atego still have real time Java implementations like Atego aonixPerc that including real-time garbage collection
but the bulk of embedded Java applications tend not to require real-time support.
This is where Oracle’s latest comes into play.
Java ME Embedded 3.3 also highlights the importance of the Arm architecture.
It now supports everything from the ARMv5 through ARMv7 that matches most of the processors and microcontrollers with an ARM license.
Java ME Embedded targets platforms from the low end on up where the low end is represented by platforms like the Raspberry Pi
The Java ME Embedded binaries and tools are freely available,
for internal development and testing purposes only,
on the Oracle Technology Network (OTN).
This includes support for the Keil board and the Raspberry Pi.
The minimum memory requirements are 8 Mbytes of RAM and 5 Mbytes of program memory
but that does not leave any space for an application.
It also targets Linux 2.6.22 or higher with glibc2.9.
The G1 and HotSpot garbage collectors are supported.
Oracle has made a number of improvements and move the ME closer to the SE version.
This includes support for a wider array of network and communication devices as well as improving logging and monitoring.
Of course, extended lifetime support is part of the package that is important to embedded developers.
The Java ME SDK 3.3 supports the 32- and 64-bit versions of Windows 7.
There are plug-ins for the NetBeans and Eclipse IDEs.
There is also support for in-field and remote administration and debugging that works off the added logging and monitoring support.
Many embedded C/C++ programmers will wonder why anyone would choose Java for embedded applications
but those who have used it think otherwise.
It is simply a matter of choosing the right tool for the job and in the IoT connected world
it makes sense having a platform that can help reduce programming errors,
improve security and has a significant number of frameworks and support.
It also makes a good match for M2M applications
where Java is being employed on the server side so both programs are written in the same language.