libusbx is a library which provides generic access to USB devices. As a library, it is meant to facilitate the development of applications which communicate with USB hardware. Its main features are portability (a single cross-platform API for Linux, OS X, Windows, and *BSD), user-mode (no special privileges required), and USB version-agnosticism (all versions of the protocol supported, including USB 3.0).
usb4java is a Java library for accessing USB devices. It is based on the native libusb 1.0 library and uses Java NIO buffers for data exchange between libusb and Java. It also supports the javax-usb standard (JSR-80) through the usb4java-javax extension. Supported platforms are Linux (x86 32/64-bit, ARM 32-bit), OS X (x86 32/64-bit), and Windows (x86 32/64-bit). Other platforms may work as well (as long as they have at least Java 6 and are supported by libusb) by compiling the JNI library manually.