USB Controller - This is the USB device attached to the host root hub. Additional devices and hubs can be attached to this hub in a tree topology.
Software
The software components are:
Host OS USB Driver - The Operating System stack that allows and provides USB integration on a platform (for example: WinUSB for Windows XP).
Java libusb (JNI) - The Java native library that gives applications easy access to USB devices on different operating systems (Windows, Linux, Mac OS X).
javax.usb - Implementation of the javax.usb API which contains the core interfaces and classes modeling USB devices, descriptors, communication pipes, and requests/operations.
java.usb.event - Implementation of the javax.usb.event API which contains classes and interfaces implementing the Event subsystem for USB devices and pipes.
java.usb.util - Implementation of the javax.usb.util API which contains various utility classes and interfaces that are used by other classes and interfaces in the javax.usb specification.
USBAdmin - Provides an entry point for using the USB API on OSGi frameworks. It is used for registering/getting of JSR-80 USB services.
Module Design
The USB Java API Bundle does not provide any functionality for USB communication, but only exports the javax.usb Java API and should be rather used for development and compilation.