Noto que al buscar la biblioteca jinput en Debian (creo que la "j" aquí implica que se trata de una biblioteca específica de Java, y no un simple contenedor), hay dos paquetes que podrían aplicarse:
libjinput-java/stable 20100502+dfsg-7 all
Java Game Controller API
libjinput-jni/stable 20100502+dfsg-7 armhf
Java Game Controller API (jni)
Tenga en cuenta que este es un sistema ARM. Sé que otros lenguajes a veces tienen dos implementaciones de algo, una más rápida que requiere compilación y una "pura" (en este caso Java) que no. Esto último parece una posibilidad poco probable en este caso, pero no lo sé con certeza; el hecho de que el primero aparezca como un paquete aplicable a "todas" las plataformas es interesante frente al segundo, que es un listado específico de la arquitectura.
Entonces, ¿cuál es la diferencia, en la nomenclatura de Debian, entre un -java
paquete y un -jni
paquete?
Ahora supongo que el -jni
paquete permite que esta biblioteca se use "al revés", es decir, desde C/C++, si alguien pudiera confirmar o negar eso...
Respuesta1
libjinput-java
y libjinput-jni
están construidos a partir dela misma fuente. El -java
paquete contiene el JAR Java puro, independiente de la arquitectura, y el -jni
paquete contiene la biblioteca específica de la arquitectura que proporciona la funcionalidad nativa requerida por el paquete Java. Darse cuenta delibjinput-java
depende de libjinput-jni
: no son dos implementaciones diferentes de jinput, son dos partes de jinput y ambas son necesarias para que funcione el software dependiente de jinput.
La separación de paquetes es simplemente un caso de dividir archivos independientes de la arquitectura de archivos específicos de la arquitectura.
(JNI es elInterfaz nativa de Java, que permite que los programas que se ejecutan en una JVM invoquen código en bibliotecas nativas).