Even though I don't know much about Java, I know these tidbits:
No, you cannot directly access hardware from Java. I would be surprised
to find a serious Java for embedded use that did not include library
functions to do so, however.
Java itself doesn't provide a means to call C functions, but most Java run
time environments provide a means to call external code. Of course, if
you're calling external code then you have to maintain code bases in C
_and_ Java...
--
Tim Wescott
Control systems and communications consulting
http://www.wescottdesign.com
Need to learn how to apply control theory in your embedded system?
"Applied Control Theory for Embedded Systems" by Tim Wescott
Elsevier/Newnes,
http://www.wescottdesign.com/actfes/actfes.html