Beim Suchen nach der Jinput-Bibliothek unter Debian (ich glaube, das „j“ hier impliziert, dass es sich um eine Java-spezifische Bibliothek und nicht um einen einfachen Wrapper handelt) stelle ich fest, dass es zwei Pakete gibt, die in Frage kommen könnten:
libjinput-java/stable 20100502+dfsg-7 all
Java Game Controller API
libjinput-jni/stable 20100502+dfsg-7 armhf
Java Game Controller API (jni)
Beachten Sie, dass dies ein ARM-System ist. Ich weiß, dass andere Sprachen manchmal zwei Implementierungen von etwas haben, eine schnellere, die kompiliert werden muss, und eine „reine was auch immer“ (in diesem Fall Java), bei der dies nicht der Fall ist. Letzteres scheint hier eine unwahrscheinliche Möglichkeit zu sein, aber ich weiß es nicht genau; die Tatsache, dass die erste als Paket angezeigt wird, das auf „alle“ Plattformen anwendbar ist, ist im Vergleich zur zweiten, die eine architekturspezifische Auflistung ist, interessant.
Was ist also in der Debian-Nomenklatur der Unterschied zwischen einem -java
Paket und einem -jni
Paket?
Ich vermute jetzt, dass das -jni
Paket die „umgekehrte“ Verwendung dieser Bibliothek ermöglicht, also von C/C++ aus, falls das jemand bestätigen oder verneinen könnte …
Antwort1
libjinput-java
und libjinput-jni
bestehen ausdieselbe Quelle. Das -java
Paket enthält das architekturunabhängige, reine Java-JAR und das -jni
Paket enthält die architekturspezifische Bibliothek, die die vom Java-Paket benötigte native Funktionalität bereitstellt. Beachten Sie, dasslibjinput-java
hängt davon ab libjinput-jni
: Es handelt sich nicht um zwei unterschiedliche Implementierungen von Jinput, sondern um zwei Teile von Jinput und beide sind erforderlich, damit Jinput-abhängige Software funktioniert.
Bei der Pakettrennung handelt es sich lediglich um die Trennung architekturunabhängiger und architekturspezifischer Dateien.
(JNI ist dieJava Native-Schnittstelle, wodurch auf einer JVM ausgeführte Programme Code in nativen Bibliotheken aufrufen können.)