Interfaz de método nativo JVM_04

Método local

En pocas palabras, un método nativo es una interfaz Java que utiliza código que no es Java, y un método nativo es un método Java: la implementación del método se implementa en un lenguaje que no es Java, como C. Esta característica no es exclusiva de Java. Muchos otros lenguajes de programación tienen este mecanismo. Por ejemplo, en C ++, puede usar extern "C" para decirle al compilador de C ++ que llame a una función de C.
Al definir un método nativo, no proporciona un cuerpo de implementación (algo así como definir una interfaz Java), porque el cuerpo de implementación es implementado por un lenguaje externo que no es Java.
La función de la interfaz local es integrar diferentes lenguajes de programación para Java, su intención original es integrar programas C / C ++.
El identificador nativo se puede utilizar junto con todos los demás identificadores de Java, excepto abstracto.

/**
 * 本地方法
 */
public  class IHaveNatives {

    //abstract 没有方法体
    public abstract void abstractMethod(int x);

    //native 和 abstract不能共存,native是有方法体的,由C语言来实现
    public native void Native1(int x);

    native static public long Native2();

    native synchronized private float Native3(Object o);

    native void Native4(int[] array) throws Exception;

}

Por qué utilizar el método nativo

Java es muy cómodo de usar, pero algunos niveles de tareas no son fáciles de implementar con Java, o cuando estamos muy preocupados por la eficiencia del programa, surge el problema.

  • Interacción
    con fuera del entorno java: A veces, las aplicaciones java necesitan interactuar con el entorno fuera de java, esta es la razón principal de la existencia de métodos nativos.
    Puede pensar en la situación en la que Java necesita intercambiar información con algunos sistemas de bajo nivel, como Wipe even system o algún hardware. El método local es una especie de mecanismo de comunicación: nos proporciona una interfaz muy concisa y no necesitamos comprender los detalles engorrosos fuera de la aplicación Java.
  • Interactuar con el sistema operativo
    JVM soporta el propio lenguaje Java y las librerías runtime, es la plataforma sobre la que viven los programas Java, consta de un intérprete (interpretando bytecode) y unas librerías conectadas a códigos nativos. Sin embargo, después de todo, no es un sistema completo y, a menudo, depende del soporte de algunos sistemas subyacentes. Estos sistemas subyacentes suelen ser potentes sistemas operativos. Al usar el método nativo, pudimos usar java para realizar la interacción entre jre y el sistema subyacente, e incluso algunas partes del jvm se escribieron en C. Además, si queremos usar algunas características del sistema operativo que el lenguaje Java en sí mismo no proporciona encapsulación, también necesitamos usar métodos locales.

  • El intérprete de Java Sun de Sun está implementado en C, lo que le permite interactuar con el mundo exterior como un C. Jre se implementa principalmente en Java y también interactúa con el mundo exterior a través de algunos métodos locales. Por ejemplo: el método setPriority () de la clase java.lang.Thread está implementado en Java, pero implementa la llamada al método local setPriority0 () en la clase. Este método nativo se implementa en C y se implanta dentro de la JVM. En la plataforma Windows 95, este método nativo eventualmente llamará a la API Win32 SetProority (). Esta es la implementación específica de un método local proporcionado directamente por la JVM. En más casos, el método local es proporcionado por una biblioteca de enlaces dinámicos externa (biblioteca de enlaces dinámicos externos) y luego llamado por la JVM.

status quo

En la actualidad, este método se utiliza cada vez menos, excepto para las aplicaciones relacionadas con el hardware, como la conducción de impresoras a través de programas java o la gestión de equipos de producción a través de sistemas java, que son relativamente raros en aplicaciones de nivel empresarial. Debido a que la comunicación entre dominios heterogéneos ahora está muy desarrollada, por ejemplo, se puede usar la comunicación por socket, o también se puede usar el servicio web, etc., no hay mucha introducción.

Supongo que te gusta

Origin blog.csdn.net/qq_43141726/article/details/114585466
Recomendado
Clasificación