Gcc hat ein Frontend für Java ( http://gcc.gnu.org/java/). Da es auch ein Target AVR gibt, hättest du damit einen Compiler Java -> AVR Maschinencode.
Theoretisch zumindest, das Ansprechen der AVR spezifischen Hardware (UARTs, ADC usw.) müsste noch implementiert werden - weiss jetzt nicht was die Java Micro Edition dazu bietet und wie weit GCJ das wiederum unterstützt.

Trotzdem, wenn du objektorientiert auf den AVRs coden möchtest, ist C++ wohl die geschicktere Wahl, einfacher die Toolchain aufzubauen, besseres Ansprechen der Hardware, und ohne die ganze Classlib unterscheiden sich Java und C++ eh nicht besonders. Denk auch dran, dass ein im Hintergrund laufender Garbage Collector auf einem so kleinem Prozessor wie dem AVR, der üblicherweise zeitkritische Anwendungen steuern soll, sowieso nicht verwendbar ist.

Zum Implementieren von C++ auf AVR siehe auch http://www.nongnu.org/avr-libc/user-...#faq_cplusplus

Gruß, Karsten