[PLUG-Devel] RAD for hardware control? Java? Something?

Joseph Sinclair plug-devel at stcaz.net
Fri Dec 15 00:08:42 MST 2006


There are a lot of myths about Java in this area, so it's good to have the opportunity to bust a few of them.
Myth 1 : Java is not suitable for embedded systems
Java was originally designed for use in set-top boxes for cable TV.  The J2ME spec is used heavily in cell phones, PDA's, and many other very limited devices.  The OSGI spec (for next-generation set-top boxes) and many other embedded environments specify Java as the platform language of choice.  The JavaCard spec provides for running Java (albeit with limited functions) on smart card processors (about as embedded as it gets).  In short, Java is entirely suitable for a large class of embedded systems problems, and that reach grows with each release.  Java may not always be the best choice, but there are a precious few environments where Java cannot be used at least as a prototyping language.
Myth 2: Java has no access to native hardware
Java has a lot of access to native hardware.  Java can always directly call C functions accessing hardware through the JNI (not super easy, but not too bad either).  The JVM, particularly in J2ME, provides a LOT of functions that directly access hardware, they're just in the JVM instead of you having to write them.  JavaCard is basically all about direct hardware access.  All of these points lead to the conclusion that Java has just as much access to hardware as any other language, it may not always be direct, but you can pretty much do in Java almost anything you could otherwise do in C, just not always as efficiently.
Myth 3: Java isn't real-time
Starting with Java 5 (JDK 1.5) Java has the RT-Java spec which provides for hard real-time guarantees in compliant JVM's.  There are only a few RT-Java JVM's (Sun's isn't one), but all of them provide for excellent real-time performance in many environments (although not those without a MMU, you need JavaCard for environments without a MMU, and JavaCard is not realtime).

There are a lot of other areas where Java can be, and often is, used in very small, highly constrained, embedded, and/or real-time environments.  C and C++ currently dominate this space, and for final production code they're still often the best choice, but for prototyping, and a surprising array of production uses, Java makes an excellent choice for embedded systems development.

==Joseph++

Alan Dayley wrote:
> I'm looking for a good, non-MS, non-BigEmbeddedProrpietaryHighCostVendor
> rapid development tool set.
> 
> I am not a Java developer, just a dabbler and very little of even that.
>  However, Java has much going for it as a rapid application development
> (RAD) language.
> 
> - Soon to be (already?) released as GPL  (Way cool!)
> - IDE's with pretty GUI development tools
> - Large knowledge base
> - Well known to the "suits"
> - Lots of tools
> 
> However, where I work, we need RAD for hardware.  We need to write
> programs that issue specific SCSI or IDE or serial commands.  That poke
> register values and manipulate controllers.
> 
> Can Java do these things?  Can it be extended, without too much
> additional work, to do these types of low-level hardware operations?
> 
> What about other languages like Python or TCL?
> 
> Linux is "taking off" in the embedded world but the hardware
> manipulation level is still dominated by closed source tools.  I want
> FS/OSS tools and a community to go with it.
> 
> Alan



-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 191 bytes
Desc: OpenPGP digital signature
Url : http://lists.PLUG.phoenix.az.us/pipermail/plug-devel/attachments/20061215/247df853/attachment.pgp 


More information about the PLUG-devel mailing list