Embedded Java

A discussion of the ForthLanguage asked if Java was too "big" for this use.
There are many EmbeddedJava Systems, some of the more popular ones are: What about this: http://www.embedded-web.com/ (EJC = Embedded Java Controller)

I think this is one of the places where the Java hype machine has let us down. Although supposedly Oak, and therefore Java was designed for just this sort of use, each release of Java seems to get bigger and more complicated. For example: Jini, Sun's brave new world of inter-device connectivity, needs features from Java 2, and Java 2 is too big to run reasonably on the SparcStation? I use as a Web server, let alone on any kind of embedded system.

If you look in the back of any electronics magazine you'll see adverts for small, cheap, flexible embedded computers. These can typically be programmed in assembler, compiled C/C++, Forth and so on. I have yet to see an ad for one which runs Java. I've asked about this at several Java developer events and never got any sensible reply. Where is the "small" Java which can run on practical EmbeddedSystems? Where are the embedded prototype boards with Java in ROM? If anyone knows of any, please mention them here!

-- FrankCarver
Sun is pushing Java implementations for handhelds and smart cards -- things as small as a ring on your finger, for gosh sakes!

See http://java.sun.com/products/personaljava/tutorial/IS3015a-pJava-16.html for information on the various SUN Java "platforms:"
  Platform       ROM      RAM
  ------------   -------  ---------
  Java           16-24MB  ~32MB      = (the "Web" Java we all know and love. ;-)
  PersonalJava   <2MB     <1MB
  EmbeddedJava   <512K    <512K
  JavaCard       ~16K     ~512bytes

Note that (a) the top two are large, and won't run on typical embedded development boards and (b), the bottom two are really systems to build your own Java "platform". The licensing for EmbeddedJava is peculiar (you can't just download it) and the JavaCard platform is in many ways too small for typical embedded development boards. It misses major parts of Java, such as GarbageCollection, and may even be considered as a language variant.
The above table was the layout of Java "platforms" when the question at the top of this page was originally asked, but since then Sun have changed their stand a little. At JavaOne 1999 they released an early version of the KVM, a small JVM and class library which can run in a device a small as a Palm Pilot, and still be near-enough the Java we're familiar with. I really hope this is enough of a push to create the market for the kind of off-the-shelf hardware plus software plus I/O boards which will allow an ordinary joe with a good idea to try it out.
If you're interested in EmbeddedJava you might want to check out [http://www.software.ibm.com/ad/embedded/].
Acunia has also produced an open source, embedded Java project, called Wonka [http://www.acunia.com/wonka/].
Part of the problem seems to be Sun's insistence that Java is a platform; and that the whole boatload of libraries be present and available. Even for J2ME, that's huge. Many embedded apps don't need things like GUIs, after all.

A JavaVirtualMachine itself isn't very big; that and a set of core libraries (implemented as native methods or as ByteCode) should easily fit in a megabyte. However, if you have that, Sun gets all huffy if you call it "Java".

If you're interested in J2ME (say, for writing programs to run on cell phones), you might want to check out the J2ME wiki http://j2meforums.com/wiki/ .

CategoryJava CategoryHardware ???

View edit of April 17, 2007 or FindPage with title or text search