Percebo que, ao procurar a biblioteca jinput no Debian (acredito que o "j" aqui implica que esta é uma biblioteca específica do Java, e não um simples wrapper), há dois pacotes que podem ser aplicados:
libjinput-java/stable 20100502+dfsg-7 all
Java Game Controller API
libjinput-jni/stable 20100502+dfsg-7 armhf
Java Game Controller API (jni)
Observe que este é um sistema ARM. Eu sei que outras linguagens às vezes têm duas implementações de algo, uma mais rápida que requer compilação e uma "pura qualquer coisa" (neste caso java) que não. Esta última parece uma possibilidade improvável aqui, mas não tenho certeza; o fato do primeiro aparecer como um pacote aplicável a "todas" plataformas é interessante versus o segundo, que é uma listagem específica de arquitetura.
Então qual é a diferença, na nomenclatura Debian, entre um -java
pacote e um -jni
pacote?
Agora estou supondo que o -jni
pacote permite que esta biblioteca seja usada "ao contrário", ou seja, a partir de C/C++, se alguém puder confirmar ou negar isso...
Responder1
libjinput-java
e libjinput-jni
são construídos a partira mesma fonte. O -java
pacote contém o Java JAR puro, independente da arquitetura, e o -jni
pacote contém a biblioteca específica da arquitetura que fornece a funcionalidade nativa exigida pelo pacote Java. Notar quelibjinput-java
depende de libjinput-jni
: eles não são duas implementações diferentes de jinput, são duas partes de jinput e ambas são necessárias para que o software dependente de jinput funcione.
A separação de pacotes é simplesmente um caso de separação de arquivos independentes de arquitetura daqueles específicos de arquitetura.
(JNI é oInterface nativa Java, que permite que programas executados em uma JVM chamem código em bibliotecas nativas.)