Software

NanoVM Brings Java to the AVR

Posted 17 Dec 2005 at 23:25 UTC by steve Share This

According to a Freshmeat announcement, Till Harbaum has released a tiny Java virtual machine called NanoVM that can run on Atmel AVRs including the popular ATmega8 and Atmega32 chips. To make development easy, you can also run the JVM on Linux/Unix machines. If you've ever wanted to write code for your robot in Java, this may be a good way to try it out. The entire JVM is less than 8kB of code including native classes and a bootloader. NanoVM is written in C and released as Free Software licensed under the GNU GPL.


Pic version, posted 18 Dec 2005 at 01:44 UTC by The Swirling Brain » (Master)

This could be really cool. It's probalby already really scaled down, but it would be cool to scale it further and make a pic version. Naw, probably wouldn't be worth it escpecially since only certain pics can do true multitasking. Anyway, Java for an AVR already sounds cool!

IC chip Java, posted 18 Dec 2005 at 02:50 UTC by The Swirling Brain » (Master)

It's weird that when Java first started out it was touted as being able to run as a little IC chip thingy. It was a long time before companies like Windriver and such came out with one and they aren't for the faint of heart. Now, we have here a nanoVM and it's so scaled back that it's hardly usable. Java just can't win anywhere can it?

Don't know Java, posted 19 Dec 2005 at 16:04 UTC by jeffkoenig » (Master)

When Java came out, it seemed like its constant garbage collection seemed incompatible with non-volatile microcontroller memory.

Jim, is NanoVM worth investigating? I can burn a Mega8 if you want to play with one.

Maybe a cheap AVR Java Stamp with built-in H-bridge would be cool...I think Advanced Circuits still has their free PCB offer going on, and I'm looking at a whole week of free time.

Totally stripped Java?, posted 20 Dec 2005 at 00:57 UTC by The Swirling Brain » (Master)

I don't think I'd be interested. Pretty much the reason nowadays that you want to use Java is because it already has all the cool libraries built in that can do stuff like TCP/IP networking and screen stuff like Dialog boxes & widgets (swing), media players for audio and video and multitasking thread stuff all built in. All of these libs are cool because you don't have to recreate the wheel. But what does this nanoVM thing have? Well, it's so stripped down it's sort of like smallc. You can do conditionals and "for loops" and peek and poke, and the basic language stuff but little else. You get a lib that can talk to I/O (LEDs and Motors). Really, Java is not a great language for doing dinky stuff, it's really more geared for large scale applications. So to make such a gizmo as nanoVM is more an exercise in "can I do it" rather than much of anything useful for creating something like a network box. There again I may be wrong. Perhaps it does have networking capability and media capability all crammed into 8K but I doubt it. Also, all your Java code has to be crammed in limiting eeprom data space? I'd say stick with smallc or a basic interpreter or if you're really cool try forth or for that matter learn ASM and do it right. I like Java but I have real doubts about the usefulness of any Java VM for a micro. Java's really needs a huge memory footprint otherwise you're just being silly. It's like I have this hammer so let's make everything a nail type of solution. Java's a hungry hog and needs gobs of resources to do anything useful. So, Java is not a good solution for a micro no matter what Sun's marketing team says. So, I don't think I'd waste my time with any Java VM for a micro unless someone can make a really good case as to why I should. I mean, don't get me wrong, I commend the guy for making such an animal that can really interpret real java bytecodes and all, but really I have a hard time justifying using it. I mean if it had more usefulness than just another flavor of smallc I might be interested. Anyway, you should use the right tool for the job and I'd rather use ASM or c for a tiny memory limited microcontroller.

Good Argument, posted 20 Dec 2005 at 15:08 UTC by jeffkoenig » (Master)

I agree with your well-written assessment. When I looked further at the web site, it seemed like the implementation was pretty constrained to their robotic platform, and I didn't browse around long enough to see if they had schematics and such for their board.

The more I think about it, Java is probably better suited to Atmel's ARM processors, if Java's suited to tiny micros at all.

See more of the latest robot news!

Recent blogs

23 Sep 2014 shimniok (Journeyer)
21 Sep 2014 mwaibel (Master)
5 Aug 2014 svo (Master)
20 Jul 2014 Flanneltron (Journeyer)
3 Jul 2014 jmhenry (Journeyer)
3 Jul 2014 steve (Master)
2 Jul 2014 Petar.Kormushev (Master)
10 Jun 2014 robotvibes (Master)
10 May 2014 evilrobots (Observer)
2 Mar 2014 wedesoft (Master)
X
Share this page