Programación JNI (C/C++)
Directorio de artículos
- Programación JNI (C/C++)
-
- Sección 1: Inicio rápido
- Sección 2: Ejemplos detallados (versión en lenguaje C)
- Sección 3: Explicación detallada de ejemplos (versión en lenguaje C++)
- Sección 4: Tipos de datos JNI
- Sección 5: Métodos de datos de objetos como la clase jstring y la clase jobject
- Sección 6: Ejemplos de código para varios tipos de datos JNI
- Apéndice: Código
Sección 1: Inicio rápido
Una demostración simple para ejecutar rápidamente el proceso Para obtener más información, consulte Uso de C/C++ para implementar la interfaz de método nativo (JNI) de Java (1) Inicio rápido
Sección 2: Ejemplos detallados (versión en lenguaje C)
Esta sección proporciona una descripción detallada (C) de los ejemplos internos en la Sección 1. Para obtener detalles, consulte Uso de C/C++ para implementar la interfaz de método nativo (JNI) de Java (2) Ejemplo de explicación detallada (versión del lenguaje C)
Sección 3: Explicación detallada de ejemplos (versión en lenguaje C++)
Esta sección se centra en la descripción detallada de los ejemplos internos en la Sección 1 (C++).Para obtener más información, consulte Uso de C/C++ para implementar la interfaz de método nativo (JNI) de Java (3) Ejemplo detallado (versión del lenguaje C++)
Sección 4: Tipos de datos JNI
Los tipos de datos en Java se dividen en matrices primitivas, de tipo Objeto y [].
La relación de mapeo entre los 8 tipos de datos básicos de Java y los tipos de datos básicos de C en jni.h es la siguiente:
Tipos primitivos de Java | Tipos primitivos de C | definición de tipo JNI |
---|---|---|
En t | largo | jint |
largo | _int64 | largo |
byte | carácter firmado | jbyte |
booleano | carácter sin firmar | jbooleano |
carbonizarse | corto sin firmar | jchar |
corto | corto | jcorto |
flotar | flotar | jflotar |
doble | doble | jdoble |
Además, jni.h también define la relación de mapeo de la clase Object de Java. Aunque la superclase final de Class, String, Throwable, etc. es Object, pero debido a que se usa más comúnmente, tiene una definición y un método de operación separados.
Tipo de objeto Java | Tipo C (definido en JNI) | definición de tipo JNI |
---|---|---|
Objeto | _objeto* | proyecto de trabajo |
Clase | _clase j* | jclase |
arrojable | _jlanzable* | jlanzable |
Cadena | _jstring* | jstring |
[] | _cortar* | cortar |
Tenga en cuenta que el jarray aquí no es la clase Array, y la clase Array se asignará a un objeto normal, sino a la matriz original definida con [].
No es necesario entrar en detalles sobre los tipos de datos básicos, ya que estos tienen tipos nativos correspondientes en C, dependiendo principalmente de los métodos relacionados con los datos del tipo de objeto.
Sección 5: Métodos de datos de objetos como la clase jstring y la clase jobject
Esta sección describe en detalle los métodos de operación de jstring (java.lang.String) y jobject (Objeto) más utilizados en JNI. Para obtener detalles, consulte Uso de C/C++ para implementar la interfaz de método nativo (JNI) de Java (5) métodos class y jobject de datos de objetos como class
Sección 6: Ejemplos de código para varios tipos de datos JNI
Esta sección combina las secciones anteriores 1 a 5 para escribir un ejemplo de código JNI-C++ que contiene varios tipos de datos. Para obtener más información, consulte Uso de C/C++ para implementar la interfaz de método nativo (JNI) de Java (6) Ejemplo de códigos de tipos de datos JNI múltiples
Apéndice: Código
Enlace de empaquetado de recursos para todo el proyecto: JNI_C/C++_Demo