Because java abstracts the os and hardware away it's usually not possible to directly communicate with hardware. However using JNI you can. But there are probably some java API's available to communicate with camera's and printers.
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." --- Martin Fowler
Please correct my English.
Aha I didn't know that there was an javax.usb package. Possible was maybe the wrong word. Impossible is nothing. What I was trying to say is that you need some native code that interacts with the hardware which apparently that package provides.
Wouter Oet wrote: What I was trying to say is that you need some native code that interacts with the hardware which apparently that package provides.
Supposedly with Direct Buffers (#6 here), it is possible to write pure Java hardware drivers with just a small JNI code to get the hardware address. Now, I've never actually seen this practice in the wild, but it sure sounds interesting.