If you listen to Oracle, Java is what you should use to develop applications for embedded systems, partcularly those involving M2M (machine-to-machone) 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 sysems -- 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."

Momentum builds for embedded Java

Despite such misgivings, embedded Java is picking up steam, says Ovum's Azoff. One reason: Middleware is emerging to let businesses implement ideas using in-house Java skills. He also says the Java memory issue belongs in the past: "We've moved beyond the world where you had to constrain the memory, and Java fits nicely on these chips, so it's no longer an issue." Modularization of Java also benefits its use in embedded systems, Azoff says.

Azoff notes embedded processor vendor Freescale's participation in the Java embedded ecosystem. Freescale has announced a collaboration with Oracle on engineering, marketing, and standards initiatives intended to use Java and Freescale processors in the Internet of things. Initially, Freescale will focus on Java for resource-constrained platforms, such as low-cost, small-geometry microcontrollers. The company also will work with Oracle to enhance Java for Freescale i.MX application processors and promote Java ME for Freescale's MQX embedded OS and Freescale microcontrollers.

More recently, semiconductor systems supplier Renesas Electronics America and embedded software provider Micrium began collaborating with embedded software vendor IS2T to offer MicroEJ Java platforms for Renesas RX microcontrollers. The alliance is focused on improved user experience in Internet-of-things applications, such as smart grids, smart metering, appliances, and building and home automation.

Java is becoming more desirable in the embedded world, says IS2T CEO Fred Rivard, for a simple reason: "One of the platforms that is most wanted is the Java platform because you have a lots of engineers who know this technology very well."