I notice looking for the jinput library on Debian (I believe the "j" here implies this is a java specific library, and not a simple wrapper), that there are two packages that might apply:

libjinput-java/stable 20100502+dfsg-7 all
  Java Game Controller API

libjinput-jni/stable 20100502+dfsg-7 armhf
  Java Game Controller API (jni)

Notice this is an ARM system. I know other languages sometimes have two implementations of something, a faster one which requires compiling and a "pure whatever" (in this case java) which does not. The latter seems an unlikely possibility here, but I don't know for certain; the fact that the first one shows up as a package applicable to "all" platforms is interesting vs. the second one, which is an architecture specific listing.

So what is the difference, in Debian nomenclature, between a -java package and a -jni package?

I'm now guessing the -jni package allows this library to be used "in reverse", i.e., from C/C++, if someone could confirm or deny that...


libjinput-java and libjinput-jni are built from the same source. The -java package contains the architecture-independent, pure Java JAR, and the -jni package contains the architecture-specific library which provides the native functionality required by the Java package. Notice that libjinput-java depends on libjinput-jni: they're not two different implementations of jinput, they're two parts of jinput and both are required for jinput-dependent software to work.

The package separation is simply a case of splitting up architecture-independent files from architecture-specific ones.

(JNI is the Java Native Interface, which allows programs running on a JVM to call code in native libraries.)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.