Optimize with a SATA RAID Storage Solution
Range of capacities as low as $1250 per TB. Ideal if you currently rely on servers/disks/JBODs
If you listen to Oracle, Java is what you should use to develop applications for embedded systems, particularly those involving M2M (machine-to-machine) communications. Embedded systems comprise an old area that's gaining a lot of new attention under the "Internet of things" label. But the actual viability of Java in the embedded world gets mixed reviews.
Although plenty of Java developers are out there, the embedded realm is not like the PC, mobile, and browser realms they're experienced in. Embedded development requires that they deal with special factors, such as memory constraints and real-time needs -- areas in which C developers are likely to be more experienced, given C's strong role in embedded development.
Nonetheless, Java is attracting attention in the embedded space. Ovum analyst Michael Azoff sees Java giving C a run for its money: "C is the incumbent in embedded, but the promise is to branch out into commerce and enterprise applications, where Java is a key language." And Java has some of the chops critical to embedded programming, he notes, such as memory management. At the recent JavaOne technical conference, Azoff talked to several vendors providing cost-effective, powerful boards supporting Java. Embedded Java "is happening right now," he says.
However, Bruce Boyes, CEO at Systronix, is skeptical about Java's viability for embedded development. The embedded systems design vendor tried embedded Java development but backed away from it. He says C is a better choice for real-time embedded systems and Java has memory issues. Systronix is doing legacy support for a commercial kiosk system that used embedded Java. But the replacement for the system's socket board will not use embedded Java, he says. "There's no advantage, really. And there's actually more mature and better free open tools for C and C++."
Boyes recalls that Java "fizzled" in the small, embedded space in the early 2000s. The recession and a lack of promotion were factors, but he cites other missteps by Java founder Sun Microsystems. "For a long time, embedded Java to Sun meant a cellphone," Boyes said. "It wasn't machine and process control. They never got the industrial market."
Java certainly has found its way onto many phones. A fork of Java, using the Dalvik virtual machine, is used on the popular Android mobile platform, Boyes notes. And Sun Microsystems' Sun Spot embedded platform was promising, he says, but Sun placed expensive licensing restrictions on it. In the small controller space, Java does not have a place because it can't fit in memory constraints, he says, but he thinks that Java may have a place on a system like the BeagleBone Black development platform. Java on ARM processors -- which power most smartphones and tablets -- also is viable, he says.
Java also must vie with rivals like a variant of the Ruby language being touted for embedded systems development. Recently, Ruby creator Yukihiro Matsumoto -- who has created the mRuby variant for embedded systems -- decried Java ME (Micro Edition) as "not really Java." ME lacks the Java ecosystem and needs too much memory, he says. Boyes also doubts ME can succeed: "It was frozen in time for 10 years. Now that they're finally talking about modernizing it, the world's moved on."