tutorial que libreria español ejemplos contenedores componentes java native

libreria - que es awt y swing en java



¿Cuáles son los métodos nativos en Java y dónde deben usarse? (5)

¿Cuáles son los métodos nativos en Java y dónde deben usarse?

Una vez que veas un pequeño ejemplo, queda claro:

Main.java :

public class Main { public native int intMethod(int i); public static void main(String[] args) { System.loadLibrary("Main"); System.out.println(new Main().intMethod(2)); } }

Main.c :

#include <jni.h> #include "Main.h" JNIEXPORT jint JNICALL Java_Main_intMethod( JNIEnv *env, jobject obj, jint i) { return i * i; }

Compilar y ejecutar :

javac Main.java javah -jni Main gcc -shared -fpic -o libMain.so -I${JAVA_HOME}/include / -I${JAVA_HOME}/include/linux Main.c java -Djava.library.path=. Main

Salida :

4

Probado en Ubuntu 14.04 con Oracle JDK 1.8.0_45.

Así que está claro que le permite:

  • llamar a una biblioteca compilada dinámicamente (aquí escrita en C) con código de ensamblaje arbitrario de Java
  • y obtener resultados de nuevo en Java

Esto podría ser usado para:

  • escriba código más rápido en una sección crítica con mejores instrucciones de ensamblaje de la CPU (no CPU portátil)
  • Hacer llamadas directas al sistema (no OS portátil)

con la compensación de menor portabilidad.

También es posible que llame a Java desde C, pero primero debe crear una JVM en C: ¿Cómo llamar a las funciones Java desde C ++?

Ejemplo en GitHub para que juegues.

Esta pregunta ya tiene una respuesta aquí:

Un método nativo tiene la misma sintaxis que un método abstracto, pero ¿dónde se implementa?


Me gusta saber dónde usamos los métodos nativos.

Idealmente, en absoluto. En realidad, algunas funciones no están disponibles en Java y hay que llamar a algún código C.

Los métodos se implementan en código C.


El método se implementa en código "nativo". Es decir, código que no se ejecuta en la JVM. Normalmente se escribe en C o C ++.

Los métodos nativos se utilizan generalmente para interactuar con las llamadas del sistema o bibliotecas escritas en otros lenguajes de programación.


Los métodos nativos le permiten usar código de otros idiomas como C o C ++ en su código java. Los usas cuando java no proporciona la funcionalidad que necesitas. Por ejemplo, si estuviera escribiendo un programa para calcular alguna ecuación y crear un gráfico lineal de él, usaría java, porque es el idioma en el que soy el mejor. Sin embargo, también domino C. Dice parte de mi Programa necesito calcular una ecuación realmente compleja. Usaría un método nativo para esto, porque conozco algo de C ++ y sé que C ++ es mucho más rápido que java, así que si escribiera mi método en C ++ sería más rápido. Además, digamos que quiero interactuar con otro programa o dispositivo. Esto también usaría un método nativo, porque C ++ tiene algo llamado punteros, lo que me permitiría hacerlo.


Necesidades de código nativo de Java:

  • Acceso y control h / w.
  • Uso de servicios comerciales de software y sistemas [relacionados con el hardware].
  • uso de s / w heredado que no ha sido o no puede ser portado a Java.
  • Uso de código nativo para realizar tareas de tiempo crítico.

Espero que estos puntos respondan a tu pregunta :)