2. Contenido:
1. Concepto y Aspectos generales.
2. Librerias LIB y DLL.
3. Estructura de un Metodo Nativo.
4. Procedimiento para crear un programa con
JNI.
5. Introduccion aVisual Studio yVisual C++.
6. Ejemplo Hola Mundo.
18/03/2013 2
3. 1. Concepto y Aspectos Generales
- JNI es un mecanismo que permite ejecutar codigo
nativo desde Java y viceversa.
- JNI tiene una interfaz bidireccional
1. Native methods, permite llamar a funciones de las
librerias nativas desde Java.
2. Invocation Interface, permite insertar una JVM en
una aplicacion nativa.
Interfaz bidireccional entre
Java y las librerias nativas.
18/03/2013 3
4. 2. Librerias dll, lib
DLL (Dynamic Link Library – librerias de enlace
dinamico):
- Funciones son insertadas en el tiempo de
ejecucion y no de enlazado.
- Varios programas pueden compartir la misma
libreria.
- Ocupa poco espacio de disco duro.
- *.dll enWindows, *.so en Mac OS X.
18/03/2013 4
5. 2. Librerias dll, lib
LIB (Static Link Library – librerias de enlace
estatico):
- Las funciones se incluyen dentro del
ejecutable durante la fase de enlazado.
- La libreria esta presente solo en el programa
en ejecucion.
- Ocupa mayor espacio de disco duro.
- *.lib enWindows, *.a en Mac OS X.
18/03/2013 5
6. 3. Estructura de un metodo nativo
class SaludoHola{
private native void holaMundo();
public static void main(String[ ] args){
new SaludoHola().holaMundo();
}
static {
System.loadLibrary(“Holadll“);
}
}
18/03/2013 6
7. 4. Procedimiento para crear un
programa con JNI
- Declarar el(los) metodo(s) en un programa de
JAVA.
- Compilar el programa de JAVA (javac)
- Generar la cabecera (*.h) para programar el
codigo nativo.
- Programar el codigo nativo en C o C++.
- Generar una DLL con el codigo nativo (referenciar a la
carpeta include e include win32 enVisual).
- Ejecutar el programa de Java (java o NetBeans)
18/03/2013 7
8. 5. Introduccion a Visual Studio
- Visual Studio es un Entorno de Desarrollo
Integrado que ofrece Microsoft, y que soporta
varios lenguajes de programacion de alto nivel
como:
Visual Basic, C++, C++/CLI, C# , F# parecido a J#.
- Version ActualVisio Studio 2010.
- Se ejecuta bajo la plataforma .NET (.NET
Framework).
18/03/2013 8
10. 5. Visual C++
- Es un IDE para programar C, C++ y C++/CLI.
- Conocido tambien como MSVC.
- Fue desarrollado por Microsoft para
programar bajo Windows.
- Visual C++ usa MFC (Microsoft Foundation
Classes), que es un conjunto de clases C++
para desarrollar aplicaciones enWindows.
- La version gratuita: MicrosoftVisual C++
Express Edition.
18/03/2013 10
11. Contenido:
1. Programa 1- Hola Mundo
2. Tipos de Datos JNI
3. Programa 2 - Suma de 2 numeros
4. Programa 3 - Suma y Resta de dos numeros
18/03/2013 11
12. 1. Programa 1 - Hola Mundo
1. Crear un programa en Java mediante el txt.
2. Ejecutar con el compilador para crear el .class, con
>javac Archivo.java
3. Generar la cabecer *h, con >javah –jni Archivoclass
18/03/2013 12
13. 3. Crear un Proyecto conVisual C++ para
generar una DLL.
4. Copiar el archivo *.h dentro de la carperta del
proyecto de visual C++.
18/03/2013 13
1. Programa 1 - Hola Mundo
15. 6. Agregar en la cabecera del programa los archivos
indicados e implementar los metodos
correspondientes, y luego ejecutar el programa.
18/03/2013 15
7. Finalmente copie la DLL generada dentro de la
carpeta del proyecto, junto al archivo *.class. Luego
desde la linea de comando ejecute el interpretador de
Java, para ejecutar el programa JNI. >java HolaMundo
16. Para trabajar con JNI, se tiene los siguientes tipos
de datos, equivalentes a C/C++.
18/03/2013 16
2. Tipos de Datos JNI:
En JAVA EN C/C++
int jint
long jlong
float jfloat
double jdouble
boolean jboolean
char jchar
byte jbyte
short jshort
- Tipos de Datos Fundamentales
17. Apuntan a objetos y arrays.
18/03/2013 17
2. Tipos de Datos JNI:
- Tipos de Datos de Referencia
18. 3. Programa 2 – Suma de 2
numeros
Realizar un programa con JNI, para que realice
la suma de dos numeros.
18/03/2013 18
19. 4. Programa 3 – Suma y Resta
de 2 numeros
Realizar un programa con JNI, para que realice
tanto la suma como la resta de dos numeros.
18/03/2013 19