Thursday, March 09, 2006

Does Java make sense in the embedded world?

One of he main advantages of Java is that "Java is very accessible in terms of its flexibility and ease of programming." says Roger Mite, a senior research director at Sun Labs. "There are a lot of people who are Java programmers who are not embedded systems programmers". "Sun pushes Java for sensor networks".

Something we applied and expanded on in the project I'm involved with at my place of work.
The (fairly large-scale) project is a control framework for large tools with lots of robotics, digital and analog devices and controllers. The goal for us was not just to make it easy to integrate sensors and other hardware into this framework -- that too. We also had to consider how to scale for future developments. Outside of hardware, some of the major factors that affect success and cost of your project are...
  1. Access to people that share your vision and are willing to create the product
  2. Access to knowledge in domains that you need but where you don't want to compete with
  3. Access to standard, off-the-shelf components that are typically commodities
For 1. there is two ways to go about it: Either you create things accept the fact that The main goal was really to lower the threshold for someone to be able to contribute to such a system. An easy and consistent language is a large part of that, and Java has decent tradeoff's (I could list all the features I sorely miss in Java, but that would take up the rest of the web space at blogger, and it would take the rest of my life to explain them to my team...).
The concept of the Java VM is a similar enabling feature, since that now brings the condensed realtime knowledge of the vendor of your realtime VM into the team. This has the potential to take care of the lower level stuff; the stuff that noone really wants to bother with and that keeps some old bearded, gruffy individual in employment, typically only person that can fix the foundation.
Of course another reason for Java is the easy acessibility of external high quality components. Just the ability to integrate the Apache XML parser (instead of being held ransom by you RTOS vendor or some 3rd party company in the caribean) means accessibility to new technology as the embedded and controls world has never seen before.

When does outsourcing make sense?

Here is my $.02:
Understanding how a certain embedded systems/realtime systems work is a domain knowledge thats rather hard to come by. Knowing how to use a programming language (thus using a programming language to translate a problem into a solution) is a service that may be temporarily difficult, but in the grant scheme of things its something thats rather easy. If a problem can be described without meeting, telephone conferences, or flying to far away places, its a simple service (just like renting a car, or getting a plane ticket, or placing a telephone call). If a problem requires more elaborate means of communication, most likely you're talking about a product, which requires domain knowledge to build (such as a plane, a car or something as simple as a telephone).

Outsourcing a procedure is easy, outsourcing a product is not.
Outsourcing a service is easy, outsourcing domain knowledge is not.

Sunday, March 05, 2006

Making device programming accessible

One of the advantages of Java is that "Java is very accessible in terms of its flexibility and ease of programming." says Roger Mite, a senior research director at Sun Labs. "There are a lot of people who are Java programmers who are not embedded systems programmers" (See "Sun pushes Java for sensor networks").

This is one of the major reasons for using Java in the project I'm involved with at my place of work. This (fairly large-scale) project is a control framework for large tools with lots of robotics, digital and analog devices and controllers. The goal for us was not just to make it possible to integrate any number of sensors and other hardware into this framework. That too, but we also had to consider how to scale for future developments -- and making things accessible for new folks is a good way to do that.

The Sun SPOT stuff is aimed to spark interest in realtime/control application development with the typical bussiness application developer community. The Sun SPOT team is about to release a evaluation kit for their technology, which includes three Sun SPOTs devices: two stand-alone sensor/actuator devices and one base station. All three Sun SPOTs include a processor board with 32-bit ARM9 CPU, 512 KB RAM and 4MB Flash memory, 2.4 GHz radio and USB interface. Each stand-alone Sun SPOT also includes a 3D accelerometer, temperature and light sensors, 8 tri-color light emitting diodes (LEDs), six analog inputs and 8 general purpose I/O ports for controlling relays and servos. It is said to cost $499.00 and to be available in May 2006.

The only gripe I have with it is the price: even though the components are probably worth it, I think it's a hard sell for someone who'd start to do some casual control hacking.