I'm old school from learning to code on 6502's (apples, commodores, atari's), so I think in "high-level assembly" but code in C/C++. If I need to optimize a routine, I usually just start with the compiler output and go from there, as it's going to be very close to what I need. I really don't like writing code if I don't know exactly how the hardware/OS is going to execute it.
I'll have to look into the AVRs. I've done some Gameboy programming, but never realized there were MCU versions of the ARM.
When do you think the MCU market is going to be corrupted by Java?