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

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

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

    Una vez que ve un pequeño ejemplo, se vuelve 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  #include "Main.h" JNIEXPORT jint JNICALL Java_Main_intMethod( JNIEnv *env, jobject obj, jint i) { return i * i; } 

    Comstackr 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.

    Entonces, está claro que te permite:

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

    Esto podría ser utilizado para:

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

    con la compensación de una menor portabilidad.

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

    Ejemplo en GitHub para que juegues.

    El método se implementa en código “nativo”. Es decir, código que no se ejecuta en la JVM. Por lo general, está escrito en C o C ++.

    Los métodos nativos generalmente se usan para interactuar con llamadas al sistema o bibliotecas escritas en otros lenguajes de progtwigción.

    Me gusta saber dónde usamos métodos nativos

    Idealmente, no del todo. En realidad, algunas funciones no están disponibles en Java y debe llamar a algún código C.

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

    Los métodos nativos le permiten usar código de otros lenguajes 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 progtwig para calcular una ecuación y crear un gráfico lineal de ella, usaría java, porque es el idioma en el que soy mejor. Sin embargo, también soy competente en C. Digo en parte de mi progtwig Necesito calcular una ecuación realmente compleja. Utilizaría un método nativo para esto, porque sé algo de C ++ y sé que C ++ es mucho más rápido que Java, por lo que si escribiera mi método en C ++ sería más rápido. Además, supongamos que quiero interactuar con otro progtwig o dispositivo. Esto también usaría un método nativo, porque C ++ tiene algo llamado punteros, lo que me permitiría hacer eso.

    Necesidades del código nativo de Java:

    • acceso y control h / w.
    • uso de s / w comercial y servicios de sistema [relacionados con h / w].
    • uso de s / w heredado que no ha sido o no puede ser portado a Java.
    • Usar código nativo para realizar tareas de tiempo crítico.

    Espero que estos puntos respondan a tu pregunta 🙂