JMF sucks! It's completely outdated, not maintained any more and terribly complicated. The only good thing I can say about it is the fact it is pretty fast.
I'm the author of open source
Webcam Capture project available on Github. It s goal is to give users access to build-in or USB connected webcams, same as for network or IP cameras, directly from Java code. You don't need to implement any additional software (as you have to do in case of JMF), it works standalone. It's pretty fast - in my case I was able t stream 250 FPS in BufferedImage objects.
The API I provided in Webcam Capture is really simple, there are many examples, so you can start developing your app and don;t care if it will be working on Linux, Windows, or Mac OS. Webcam Capture will run everywhere.
Here is a simple code. Assume you have two cameras connected to your PC (but of course, you can have only one).
Webcam buildin = Webcam.getWebcams().get(0);
Webcam usb = Webcam.getWebcams().get(1);
BufferedImage image1 = buildin.getImage();
BufferedImage image2 = usb.getImage();