Cómo Java es un lenguaje independiente de la plataforma
Los programas de computadora están muy estrechamente relacionados con el hardware y el sistema operativo específicos. Por ejemplo, las aplicaciones de Windows no pueden ejecutarse en el sistema operativo Mac. Las aplicaciones de Mac no pueden ejecutarse en el sistema operativo Android, etc.
Algunas aplicaciones son comunes a todos los sistemas operativos, como MS Word, ¿debería escribirse por separado para todos los sistemas operativos?
Para hacer frente a esta diversidad de plataformas, dichas aplicaciones deben escribirse de forma independiente para todas las plataformas. Java proporciona una forma de escribir aplicaciones independientemente del hardware y los sistemas operativos. Por lo tanto, se llama un lenguaje de programación independiente de la plataforma.
El significado de plataforma independiente es que el código compilado de Java (código de bytes) puede ejecutarse en todos los sistemas operativos.
Un programa está escrito en un lenguaje que es un lenguaje legible por humanos. Puede contener palabras, frases, etc. que la máquina no entiende. Para que la máquina entienda el código fuente, debe estar en un lenguaje entendido por las máquinas, generalmente un lenguaje de nivel de máquina. Entonces, aquí viene el papel de un compilador. El compilador convierte el lenguaje de alto nivel (lenguaje humano) a un formato entendido por las máquinas. Por lo tanto, un compilador es un programa que traduce el código fuente de otro programa de un lenguaje de programación a un código ejecutable.
Este código ejecutable puede ser una secuencia de instrucciones de máquina que la CPU puede ejecutar directamente, o puede ser una representación intermedia que interpreta una máquina virtual. Esta representación intermedia en Java es laCódigo de bytes de Java.
· ¿ Qué es una plataforma y qué es un lenguaje independiente de la plataforma?
· Compilar un código
· ¿Cómo se ejecuta un programa en JAVA?
· JVM (Java Virtual Machine)
· ¿Qué papel juegan la compilación y la interpretación en la independencia de la plataforma?
· ¿ Cómo proporciona Java la independencia de la plataforma?
· ¿ Por qué Java no es completamente independiente de la plataforma?
· Conclusión
¿Qué es una plataforma y qué es un lenguaje independiente de la plataforma?
La plataforma se puede definir como una combinación distinta de hardware, sistema operativo y software que proporciona un entorno para ejecutar programas .
La independencia de la plataforma se refiere a la independencia del programa del sistema operativo del sistema. Adopta la metodología “Write Once Run Anywhere (WORA)”.
Compilar un código
Cada vez que escribimos código, nos adherimos a la sintaxis de un lenguaje de programación, que generalmente es legible. Se incluyen algunas palabras, nombres de variables, frases, nombres de métodos, etc. Todos ellos se consideran literatura que los humanos pueden leer y comprender.
Como resultado, una computadora ejecuta un compilador para convertir el código fuente en código legible por máquina, también conocido como lenguaje a nivel de máquina. El compilador crea el código a nivel de máquina en un formato determinado para que la CPU pueda entenderlo fácilmente y ejecutarlo sin errores.
A menos que ambas computadoras se ejecuten en el mismo sistema operativo, no podemos ejecutar el código que se ha desarrollado en una máquina en otra cuando el lenguaje a nivel de máquina es diferente para cada sistema operativo. Muchos desarrolladores y programadores piensan que esto es inaceptable. Sin embargo, Java simplifica las cosas e incluye una solución para esto.
¿Cómo se ejecuta un programa en JAVA?
En Java, el compilador convierte el programa en bytecode, que no es un código ejecutable. La JVM (Java Virtual Machine) luego ejecuta el código de bytes en tiempo de ejecución. El código fuente de Java se compila en bytecode cuando usamos el compilador javac .
El código de bytes resultante no es ejecutable por máquina y cualquier otra plataforma o sistema operativo puede ejecutarlo. pero requiere un intérprete para ejecutarse en una computadora. Cuando ejecutamos su programa o archivo, obtenemos un archivo .class , que es un archivo no ejecutable. La JVM sirve como este intérprete y, como resultado, ejecuta el Bytecode. JVM es, sin duda, independiente de la plataforma. Similar a cómo varía dependiendo del entorno. Por ejemplo, MAC y Linux tienen una JVM diferente a la de Windows. Admite la portabilidad como una de sus características clave, ya que el código de bytes portátil de su código lo hace independiente de la plataforma.
El código de bytes se guarda en el disco con la extensión de archivo .class . Cuando se va a ejecutar el programa, el código de bytes se convierte utilizando el compilador justo a tiempo ( JIT ). El resultado es un código de máquina que luego se alimenta a la memoria y se ejecuta.
El código Java debe compilarse dos veces para poder ejecutarse:
- Los programas Java deben compilarse en bytecode.
- Cuando se ejecuta el código de bytes, debe convertirse a código de máquina.
El compilador crea un archivo .exe dependiente del sistema operativo cuando se usa C o C++ (estos lenguajes no son independientes de la plataforma). Este archivo .exe no se ejecutará cuando intentemos ejecutarlo en un sistema operativo diferente, ya que depende de ese sistema operativo y no es compatible con él.
JVM (máquina virtual de Java)
La JVM, un componente del compilador de Java, transforma archivos .java en archivos .class. La función clave en el código fuente se llama JVM cuando compilamos código Java.
JVM (Java Virtual Machine) actúa como un motor de tiempo de ejecución para ejecutar aplicaciones Java. JVM es el que realmente llama al método principal presente en un código Java. JVM es parte de JRE (Java Runtime Environment).
Las aplicaciones Java se denominan WORA (Write Once Run Anywhere). Esto significa que un programador puede desarrollar código Java en un sistema y puede esperar que se ejecute en cualquier otro sistema habilitado para Java sin ningún ajuste. Todo esto es posible gracias a JVM.
Cuando compilamos un archivo .java , el compilador de Java genera archivos .class (que contienen código de bytes) con los mismos nombres de clase presentes en el archivo .java . Este archivo .class entra en varios pasos cuando lo ejecutamos. Estos pasos juntos describen toda la JVM.
En Java, el punto principal aquí es que la JVM depende del sistema operativo, por lo que si está ejecutando Mac OS X, tendrá una JVM diferente que si está ejecutando Windows o algún otro sistema operativo. Este hecho se puede verificar al intentar descargar la JVM para su máquina en particular: cuando intente descargarla, se le dará una lista de JVM correspondientes a diferentes sistemas operativos y, obviamente, elegirá la JVM que esté destinada al sistema operativo que estas corriendo. Entonces podemos concluir que JVM depende de la plataforma y es la razón por la cual Java puede convertirse en "Plataforma independiente".
Puntos importantes:
- En el caso de Java, es la magia de Bytecode lo que lo hace independiente de la plataforma .
- Esto se suma a una característica importante en el lenguaje JAVA denominada portabilidad . Cada sistema tiene su propia JVM que se instala automáticamente cuando se instala el software jdk. Para cada sistema operativo, hay disponible una JVM separada que es capaz de leer el archivo .class o el código de bytes.
- Un punto importante a tener en cuenta es que, si bien JAVA es un lenguaje independiente de la plataforma, la JVM depende de la plataforma. Diferentes JVM están diseñados para diferentes sistemas operativos y el código de bytes puede ejecutarse en diferentes sistemas operativos.
Para lograr la independencia de la plataforma, combina la compilación y la interpretación. Cuando un programa se compila en Java, se convierte en código de bytes, a menudo conocido como archivo .class, en lugar de código de máquina. Ahora, este código de bytes es algo que lo distingue del código de máquina con sus características, ya que se puede mover/portar a otra plataforma, pero Java no. Ese código de bytes se puede ejecutar en una máquina virtual de Java.
¿Cómo proporciona Java la independencia de la plataforma?
En la mayoría de los lenguajes de programación, un compilador (o intérprete) genera código que puede ejecutarse en una máquina de destino específica . Por ejemplo, si compila un programa C++ en una máquina con Windows, el archivo ejecutable se puede copiar a cualquier otra máquina, pero solo se ejecutará en otras máquinas con Windows pero nunca en otra máquina (por ejemplo, una máquina Mac o Linux). Una plataforma está determinada por la máquina de destino (junto con su sistema operativo). Para lenguajes anteriores, los diseñadores de lenguajes necesitaban crear una versión especializada del compilador (o intérprete) para cada plataforma. Si escribiera un programa que quisiera que estuviera disponible en múltiples plataformas, usted, como programador, tendría que hacer bastante trabajo adicional. Tendría que crear múltiples versiones de su código fuente para cada plataforma.
Java logró eliminar el problema de la plataforma para los programadores de alto nivel (como usted) porque ha reorganizado la secuencia compilar-enlace-ejecutar en un nivel subyacente del compilador. Los detalles son complicados pero, esencialmente, los diseñadores del lenguaje Java aislaron los problemas de programación que dependen de la plataforma y desarrollaron medios de bajo nivel para referirse a estos problemas de manera abstracta. En consecuencia, el compilador de Java no crea un archivo de objeto, sino que crea un archivo de código de bytes que es, esencialmente, un archivo de objeto para una máquina virtual . De hecho, el compilador de Java a menudo se denomina compilador de JVM (por Java Virtual Machine).
En consecuencia, puede escribir un programa Java (en cualquier plataforma) y usar el compilador JVM (llamado javac) para generar un archivo de código de bytes (los archivos de código de bytes usan la extensión .class). Este archivo de código de bytes se puede utilizar en cualquier plataforma (que tenga Java instalado). Sin embargo, bytecode no es un archivo ejecutable. Para ejecutar un archivo de código de bytes, en realidad necesita invocar un intérprete de Java (llamado java). Cada plataforma tiene su propio intérprete de Java que abordará automáticamente los problemas específicos de la plataforma que ya no se pueden posponer. Cuando el código de bytes requiere operaciones específicas de la plataforma, el intérprete de Java se vincula con el código apropiado específico de la plataforma.
Al igual que con los lenguajes interpretados, es posible hacer que los programas Java se ejecuten más rápido compilando el código de bytes en un ejecutable; la desventaja es que dichos ejecutables solo funcionarán en la plataforma en la que se crearon.
¿Por qué Java no es completamente independiente de la plataforma?
Claramente, Java no puede ejecutarse en una plataforma que no tenga una JVM. Entonces, en el sentido más literal de la palabra, Java no es independiente de la plataforma. Pero al mismo tiempo, su definición de independencia de la plataforma no es útil. Ningún lenguaje posible podría ser verdaderamente independiente de la plataforma, porque algún aspecto de la plataforma necesitaría poder analizar el lenguaje. Y dadas todas las plataformas posibles, algunas necesariamente no podrán analizarlo.
Entonces, dado que muchas, muchas plataformas ejecutan una JVM y que el código Java se puede ejecutar en cualquier JVM con el mismo significado, Java depende de la plataforma.
Conclusión
Java es uno de los lenguajes de programación más famosos y ampliamente utilizados. Es un lenguaje de programación independiente de la plataforma . Java no requiere que se reescriba todo el código para todas las diferentes plataformas. Es compatible con la independencia de la plataforma mediante el código de bytes de Java y la máquina virtual de Java . El compilador Java javac convierte el código del programa en código de bytes. Este código de bytes es independiente de la plataforma y puede ejecutarse en cualquier sistema operativo JVM. JVM interpreta el código de bytes a código de máquina y se ejecuta el programa.
Gracias por leer. Feliz aprendizaje
Apoya nuestra publicación siguiéndola
¿Cómo equilibrar un trabajo de tiempo completo y estudios de medio tiempo? Lanzamiento de su propio mercado NFT con soluciones de plataforma NFT de marca blanca Java opcional y cualquiera: manejo de valores nulos y representación de dos valores posibles Cómo aprovechar al máximo su vida: una guía personal Llamable vs ejecutable vs futuro en Java Spring 3.0 y sus características más Pregunta de entrevista comúnmente formulada basada en Java8 Stream - Parte final Las 8 leyes principales de «Las 48 leyes del poder» de Robert Greene: Romero: cómo plantarlo y qué beneficios tiene
![¿Qué es una lista vinculada, de todos modos? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































