Professional Documents
Culture Documents
Programación
Ingeniería En Sistemas
Computacionales
Página: dsc.itmorelia.edu.mx/~hferreir/ts
Temario
z Sistemas Operativos:
z Linux
z WindowsX
z MacOSx
I/O Devices
Native
functions OS
DLL Library
SO Library
Sofware Ad-Hoc
Uso de JNI …
z Se usa para modificar programas existentes escritos en algún
otro lenguaje, permitiéndoles ser accesibles desde
aplicaciones Java
z Muchas de las clases de la API estándar de Java dependen del
JNI para proporcionar funcionalidad al desarrollador y al
usuario, por ejemplo las funcionalidades de sonido o
lectura/escritura de archivos
z Es necesario asegurarse que la API estándar de Java no
proporciona una determinada funcionalidad antes de recurrir al
JNI, ya que la primera ofrece una implementación segura y
portable
z JNI permite a un método nativo utilizar los objetos Java de la
misma forma en que el propio código de Java lo hace
z Un método nativo puede crear objetos Java; y examinarlos y
utilizarlos para que lleven a cabo su función
z Un método nativo puede asimismo examinar y utilizar objetos
que han sido creados por código de aplicación escrito en Java
Riesgos de uso de JNI …
1. JNI no es un API fácil de aprender
2. Pequeños errores en el uso de JNI pueden
desestabilizar completamente la máquina virtual Java,
de formas muy difíciles de reproducir y subsanar
3. Solo las aplicaciones y applets firmados pueden
invocar el JNI
4. Una aplicación que recurre a JNI pierde una de las
características más importantes que Java le confiere,
su portabilidad. (Una forma de solventar esto, es
escribir una implementación separada del código JNI
por cada plataforma, y hacer a Java detectar el
sistema operativo para ejecutar una u otra
implementación llegado el momento).
5. No hay recolección de basura en el lado JNI, (el
código JNI debe deslocalizar explícitamente sus
punteros).
Creación y utilización
Creación …
z javah genera archivos fuentes y de cabecera
en C (archivos .h y .c) que describen las clases
especificadas. Estos archivos de C
proporcionan la información necesaria para
implementar métodos nativos para las clases
especificadas en C.
z El nuevo método de interface para código
nativo, Java Native Interface (JNI), no necesita
información de cabeceras o ficheros stub.
javah puede ser invocado con la opción -jni
para generar los prototipos de funciones que
necesitan los métodos nativos JNI. El resultado
se coloca en un fichero .h.
Material para aprender JNI: