Are you using (or planning to use) Java for programming embedded systems?

Wednesday, October 6th, 2010 by Robert Cravotta

Java is a general-purpose software programming language that features concurrent, class-based, object-oriented constructs that is designed to embody as few implementation dependencies of the target processor as possible. It is a programming language that targets application developers and provides an abstract platform that lets them write their software once and easily run it on many different target processors. Java is a programming language that is used for many mobile device and web applications. But is Java appropriate to meet the trade-offs that embedded developers need to make to build true embedded systems?

Developing application software is different than developing software for embedded systems. I do not think that just because a system is small or resource constrained that it qualifies as an embedded system. Rather, embedded systems are small or resource constrained because they do not lend themselves to extracting a premium from the end user precisely because they are generally invisible to the end user.

While portions of the application code will operate invisibly to the end user, the application software has a real interactive component with the end user. The strength or weakness of that interaction will affect the success or failure of that application code. In contrast, almost all of the software in an embedded system operates invisibly and in an autonomous-like fashion from the end-user.

To clarify, a mobile device, such as a smart phone or a tablet computer, contain both application- and embedded-level software. The application software is what the end user uses and might select and load onto the application processor. For example, the operating system that the target processor supports is often a key consideration, even indirectly from a branding perspective. Apple devices are positioned as “not Microsoft” or “not Windows” devices – even though there are significant similarities in the embedded components of these devices.

The embedded portion of these systems are those parts that the user has no need to know how they are implemented. Examples of the embedded parts of these devices include the wireless network controller and the power management controller. There are many embedded systems even in a desktop computer. The hard disk controller, the network controller, the keyboard and mouse controller, are a few examples. The cooling system and the health checking modules are other examples of embedded systems within the desktop. These are items that how they are implemented does not drive a user’s decision to select that end-system.

At this point, I am not aware of embedded systems as I have identified them here being developed with Java code. Is Embedded Java a marketing meme or is it real? Are you using (or planning to use) Java for your embedded designs? If so, what types of designs are you doing this for?

Tags: , ,

Leave a Reply