¿Qué es la independencia de la plataforma?

Creo que para muchos desarrolladores de Java, cuando entraron en contacto por primera vez con el lenguaje Java, escucharon que Java es un lenguaje multiplataforma y que Java es independiente de la plataforma. Esta es también una razón importante por la cual el lenguaje Java puede crecer rápidamente. y disfruta de gloria ilimitada. . Entonces, ¿qué es exactamente la independencia de la plataforma? ¿Cómo logra Java la independencia de la plataforma? Este artículo dará una breve introducción.

¿Qué es la independencia de la plataforma?

La independencia de la plataforma significa que la operación de un idioma en una computadora no está restringida por la plataforma, se compila una vez y se ejecuta en todas partes (escribir una vez, ejecutar en cualquier lugar).

En otras palabras, los programas binarios ejecutables creados en Java pueden ejecutarse en múltiples plataformas sin modificaciones.

Beneficios de la independencia de la plataforma

Como lenguaje independiente de la plataforma, destaca tanto por su propio desarrollo como por su facilidad de uso para los desarrolladores.

Debido a su independencia de plataforma, los programas Java pueden ejecutarse en varios dispositivos, especialmente en algunos dispositivos integrados, como impresoras, escáneres, máquinas de fax, etc. Con el advenimiento de la era 5G, se conectarán más terminales a la red. Creo que Java independiente de la plataforma también puede hacer algunas contribuciones.

Para los desarrolladores de Java, Java reduce el costo y el tiempo de desarrollo e implementación en múltiples plataformas. Compile realmente una vez y ejecútelo en todas partes.

Implementación de la independencia de la plataforma

La compatibilidad con la independencia de la plataforma Java, como la compatibilidad con la seguridad y la movilidad de la red, se distribuye por toda la arquitectura Java. Entre ellos, la especificación del lenguaje Java, el archivo de clase, la máquina virtual Java (JVM), etc., juegan un papel importante.

Conceptos básicos de los principios de compilación

Cuando se trata de la especificación del lenguaje Java, los archivos de clase y las máquinas virtuales Java, debemos mencionar cómo se ejecuta realmente Java.

Presentamos en [Compilación y descompilación de código Java] [1], en el mundo de la informática, las computadoras solo conocen 0 y 1, por lo que lo que realmente ejecuta la computadora es en realidad un archivo binario compuesto por 0 y 1.

Sin embargo, C, C++, Java, Python, etc. que usamos en el desarrollo diario son todos lenguajes de alto nivel, no lenguajes binarios. Por lo tanto, si desea que la computadora entienda el código Java que escribimos, debe "traducirlo" a un archivo binario compuesto por 0 y 1. Este proceso se llama compilación. La herramienta responsable de este proceso se llama compilador.

En [Análisis en profundidad de los principios de compilación de Java][2], presentamos que en la plataforma Java, si desea compilar archivos Java en archivos binarios, debe pasar por dos pasos de compilación, compilación frontal y viceversa. -Finalizar compilación:

![][3]

La compilación front-end se refiere principalmente a la parte relacionada con el idioma de origen pero no relacionada con la máquina de destino. En Java, la compilación con la que estamos familiarizados javaces la compilación frontal. Además de esto, muchos IDE que usamos, como eclipse, idea, etc., tienen compiladores front-end incorporados. La función principal es .javaconvertir código en .classcódigo.

El código mencionado aquí .classes en realidad el archivo de clase.

La compilación de back-end es principalmente para traducir el código intermedio a lenguaje de máquina. En Java, este paso lo realiza la máquina virtual Java.

![][4]

Por lo tanto, dijimos que la implementación independiente de la plataforma de Java actúa principalmente en las etapas anteriores. Como se muestra abajo:

![][5]

Presentemos a estos tres actores principales de atrás hacia adelante: máquina virtual Java, archivo de clase, especificación del lenguaje Java

Máquina virtual de Java

La llamada independencia de la plataforma significa que se puede conectar sin problemas en múltiples plataformas. Sin embargo, para diferentes plataformas, el hardware y los sistemas operativos definitivamente no son lo mismo.

Para diferentes hardware y sistemas operativos, la principal diferencia es que las instrucciones son diferentes. Por ejemplo, si también se ejecuta a+b, la instrucción binaria correspondiente al sistema operativo A puede ser 10001000, mientras que la instrucción correspondiente al sistema operativo B puede ser 11101110. Entonces, si desea ser multiplataforma, lo más importante es poder generar las instrucciones binarias correspondientes de acuerdo con el hardware y el sistema operativo correspondiente.

Y este trabajo lo realiza principalmente nuestra máquina virtual Java. Aunque el lenguaje Java es independiente de la plataforma, la JVM depende de la plataforma y las JVM correspondientes deben instalarse en diferentes sistemas operativos.

![][6]

La figura anterior es la guía para descargar JDK del sitio web oficial de Oracle. Los diferentes sistemas operativos necesitan descargar la máquina virtual Java correspondiente.

Con la máquina virtual Java, si desea realizar una operación a+b, la máquina virtual en el sistema operativo A traducirá la instrucción a 10001000 y la máquina virtual en el sistema operativo B traducirá la instrucción a 11101110.

![][7] pd: el contenido del archivo de clase en la figura es contenido simulado

Por lo tanto, la razón por la que Java puede ser multiplataforma es porque la máquina virtual de Java actúa como un puente. Actúa como un búfer entre el programa Java en tiempo de ejecución y el hardware y el sistema operativo subyacentes.

código de bytes

Las máquinas virtuales en varias plataformas utilizan un formato de código de bytes de almacenamiento de programa unificado (ByteCode) que es otra piedra angular de la independencia de la plataforma. La máquina virtual de Java solo interactúa con archivos de clase compuestos por códigos de bytes.

Decimos que el lenguaje Java puede escribir una vez, ejecutar en cualquier lugar. Escribir aquí en realidad se refiere al proceso de generar archivos de clase.

Debido a que un archivo de clase Java se puede crear en cualquier plataforma, también se puede cargar y ejecutar mediante una máquina virtual Java en cualquier plataforma, por lo que Java es independiente de la plataforma.

Especificación del lenguaje Java

Con un archivo de clase unificado y una máquina virtual Java que puede traducir archivos de clase en archivos binarios correspondientes en diferentes plataformas, ¿puede Java ser completamente multiplataforma?

De hecho, no lo es.El lenguaje Java también ha hecho algunos esfuerzos en multiplataforma, y ​​estos esfuerzos están definidos en la especificación del lenguaje Java.

Por ejemplo, el rango y el comportamiento de los tipos de datos básicos en Java se definen por sí mismos. En C/C++, el tipo de datos básico está determinado por su ancho de ocupación y el ancho de ocupación está determinado por la plataforma. Por lo tanto, en diferentes plataformas, los resultados de compilación del mismo programa C++ se comportarán de manera diferente.

Por poner un ejemplo sencillo, para el tipo int, en Java, int ocupa 4 bytes, que es fijo.

Pero no está arreglado en C++. En una computadora de 16 bits, la longitud del tipo int puede ser de dos bytes; en una computadora de 32 bits, puede ser de 4 bytes; cuando una computadora de 64 bits se vuelve popular, la longitud del tipo int puede alcanzar los 8 bytes . (¡Todo lo mencionado aquí es posible!)

![][8]

Al garantizar la consistencia de los tipos de datos básicos en todas las plataformas, el lenguaje Java brinda un sólido soporte para la independencia de la plataforma.

resumen

El soporte para la independencia de la plataforma de Java se distribuye en toda la arquitectura de Java. Entre ellos, la especificación del lenguaje Java, el archivo Class y la máquina virtual Java juegan un papel importante.

  • Especificación del lenguaje Java
    • Especificando el rango de valores y el comportamiento de los tipos de datos básicos en el lenguaje Java
  • archivo de clase
    • Todos los archivos de Java deben compilarse en un archivo de clase unificado
  • Máquina virtual de Java
    • Convierta el archivo Class en el archivo binario de la plataforma correspondiente a través de la máquina virtual Java, etc.

La independencia de la plataforma de Java se basa en la dependencia de la plataforma de la máquina virtual de Java, porque la máquina virtual de Java protege las diferencias del sistema operativo y el hardware subyacentes.

Independencia del idioma

De hecho, la independencia de Java no solo se refleja en la independencia de la plataforma, sino que para expandirse hacia el exterior, Java también tiene independencia del lenguaje.

Lo mencionamos anteriormente. La JVM en realidad no interactúa con archivos Java, sino con archivos Class, es decir, cuando la JVM se está ejecutando, no depende del lenguaje Java.

Hoy en día, las organizaciones comerciales y las organizaciones de código abierto han desarrollado una gran cantidad de lenguajes que pueden ejecutarse en la JVM fuera del lenguaje Java, como Groovy, Scala, Jython, etc. La razón por la que se puede admitir es que estos idiomas también se pueden compilar en códigos de bytes (archivos de clase). A la máquina virtual no le importa de qué idioma se compila el código de bytes.

Supongo que te gusta

Origin blog.csdn.net/zy_dreamer/article/details/132364931
Recomendado
Clasificación