Java Bindings

The Java content in examples/language_bindings/java is a reference integration over the CosmicSDK C API. It demonstrates one way to integrate from Java, but it is not an official Java SDK package.

Example Layout

The Java examples mirror the native C/C++ blocking examples:

examples/language_bindings/java/
|- src/main/java/com/binho/cosmicsdk/
|- src/main/java/com/binho/cosmicsdk/examples/system/
|- src/main/java/com/binho/cosmicsdk/examples/i2c/
|- src/main/java/com/binho/cosmicsdk/examples/spi/
|- src/main/java/com/binho/cosmicsdk/examples/uart/
|- src/main/java/com/binho/cosmicsdk/examples/gpio/
|- src/main/java/com/binho/cosmicsdk/examples/i3c/basic/
|- src/main/java/com/binho/cosmicsdk/examples/i3c/daa/
|- src/main/java/com/binho/cosmicsdk/examples/i3c/ccc/
|- src/main/java/com/binho/cosmicsdk/examples/i3c/hdrddr/
|- src/main/java/com/binho/cosmicsdk/examples/i3c/hjibi/
|- pom.xml

Windows

  1. Navigate to the Java binding directory

cd /path/to/CosmicSDK/examples/language_bindings/java
  1. Set `COSMICSDK_LIB_PATH`

Point it either to the directory containing the shared library, or to the full path of the library itself.

  • Command Prompt

set COSMICSDK_LIB_PATH=<path-to-CosmicSDK-library-or-lib-folder>
  • PowerShell

$env:COSMICSDK_LIB_PATH="<path-to-CosmicSDK-library-or-lib-folder>"
  1. Build the Java bindings

mvn compile
  1. Run one example

mvn -q exec:java -Dexec.mainClass=com.binho.cosmicsdk.examples.system.SystemExample
mvn -q exec:java -Dexec.mainClass=com.binho.cosmicsdk.examples.i2c.I2cExample
mvn -q exec:java -Dexec.mainClass=com.binho.cosmicsdk.examples.i3c.basic.I3cBasicExample

macOS

  1. Navigate to the Java binding directory

cd /path/to/CosmicSDK/examples/language_bindings/java
  1. Set `COSMICSDK_LIB_PATH` and run one example

export COSMICSDK_LIB_PATH=/path/to/cosmicsdk/lib
mvn compile
mvn -q exec:java -Dexec.mainClass=com.binho.cosmicsdk.examples.i2c.I2cExample

If loading fails because of missing transitive .dylib dependencies, set:

export DYLD_LIBRARY_PATH=$COSMICSDK_LIB_PATH:$DYLD_LIBRARY_PATH

Linux

  1. Navigate to the Java binding directory

cd /path/to/CosmicSDK/examples/language_bindings/java
  1. Set `COSMICSDK_LIB_PATH` and `LD_LIBRARY_PATH`, then run one example

export COSMICSDK_LIB_PATH=/path/to/cosmicsdk/lib
export LD_LIBRARY_PATH=$COSMICSDK_LIB_PATH:$LD_LIBRARY_PATH
mvn compile
mvn -q exec:java -Dexec.mainClass=com.binho.cosmicsdk.examples.i2c.I2cExample

Notes

  • This Java wrapper uses JNA to bind directly to the CosmicSDK shared library.

  • On Linux, LD_LIBRARY_PATH may be required so the runtime can resolve transitive native dependencies (for example libhidapi-libusb.so.0).

  • On macOS, if dependency resolution fails, use DYLD_LIBRARY_PATH.

  • Notification-driven examples (for example i3c/hjibi, uart and gpio) register Java callbacks through the C notification API.

  • This code is maintained as integration reference material and should be treated as a starting point for custom Java solutions.