View Single Post
  #5   Spotlight this post!  
Unread 02-05-2009, 23:37
daneelshof's Avatar
daneelshof daneelshof is offline
Programming Mentor
FRC #1619 (Up-A-Creek Robotics)
Team Role: Mentor
 
Join Date: Feb 2005
Rookie Year: 2005
Location: Broomfield, Colorado
Posts: 30
daneelshof has a spectacular aura aboutdaneelshof has a spectacular aura about
Re: "Java, Sun SPOT and the FIRST Robotics Competition"

Java is what they use mainly where I go to college for CS, and I think this is partly because it is a more homogenous system for teaching than C or C++, where there could be many compilers and oddities between OSes (BTW, there is about an even mix of Linux, Windows, and OS X amongst the CS students there.)

Sun SPOTS are really interesting looking devices, but I think they have been poorly marketed. Anyway, they seem to handle Java in real-time pretty well, they are being used in a couple of cases as sensor networks. From what I can deduce from the press releases and the Java on FIRST website (http://sunspotworld.com/frc/Welcome.html) they will implement Java similarly. The Sun SPOTS have an ARM processor (the cRIO, a Freescale PPC) and they use the Squawk VM, which is specifically designed for embedded apps. This VM is running right on top of the hardware, so the user code isn't that far from the hardware. It certainly isn't farther from the hardware than VxWorks or LabVIEW, so Java code might be quicker than these methods, but that remains to be seen.

As for Garbage Collection, each virtual machine has to implement that, thus Squawk's is almost certainly different than the 'typical' Java VM. From their site, they say they have three methods for GC which are user selectable (although they may not be in our case.)

One successful example of using Java in robots is Basil (Google Jim and Louise Gunderson.) They've got a few Javelin stamps wired to a *ton* of sensors and outputs. There are countless other examples too. I believe there are a couple of hardware Java VMs too.

A few students have shown interest in learning Java on my team, and I'm planning on holding class sessions during the summer. We transitioned directly from C to LabVIEW, so a major part of the class will be OO concepts.

Sorry for the dissertation, but hopefully this is useful.