En el pasado he usado C ++ como lenguaje de programación. Sé que el código escrito en C ++ pasa por un proceso de compilación hasta que se convierte en el código objeto "código máquina".
Me gustaría saber cómo funciona Java a ese respecto. ¿Cómo escribe el usuario el código Java que ejecuta la computadora?
java
compilation
interpretation
nombre para mostrar
fuente
fuente
Respuestas:
Las implementaciones de Java suelen utilizar un proceso de compilación de dos pasos. El compilador de Java compila el código fuente de Java a bytecode . El bytecode es ejecutado por una máquina virtual Java (JVM). Las JVM modernas utilizan una técnica llamada compilación Just-in-Time (JIT) para compilar el código de bytes a las instrucciones nativas entendidas por la CPU de hardware sobre la marcha en tiempo de ejecución.
Algunas implementaciones de JVM pueden elegir interpretar el código de bytes en lugar de JIT compilándolo en código máquina y ejecutándolo directamente. Si bien esto todavía se considera un "intérprete", es bastante diferente de los intérpretes que leen y ejecutan el código fuente de alto nivel (es decir, en este caso, el código fuente de Java no se interpreta directamente, el bytecode, salida del compilador de Java, sí).
Es técnicamente posible compilar Java a código nativo antes de tiempo y ejecutar el binario resultante. También es posible interpretar el código Java directamente.
Para resumir, dependiendo del entorno de ejecución, el código de bytes puede ser:
fuente
El código escrito en Java es:
¿Cuándo interpreta Java el bytecode y cuándo lo compila? El código de la aplicación se interpreta inicialmente, pero la JVM monitorea qué secuencias de bytecode se ejecutan con frecuencia y las traduce a código de máquina para ejecución directa en el hardware. Para el código de bytes que se ejecuta solo unas pocas veces, esto ahorra el tiempo de compilación y reduce la latencia inicial; Para el código de bytes ejecutado con frecuencia, la compilación JIT se utiliza para ejecutarse a alta velocidad, después de una fase inicial de interpretación lenta. Además, dado que un programa pasa la mayor parte del tiempo ejecutando una minoría de su código, el tiempo de compilación reducido es significativo. Finalmente, durante la interpretación inicial del código, se pueden recopilar estadísticas de ejecución antes de la compilación, lo que ayuda a realizar una mejor optimización.
fuente
Los términos "lenguaje interpretado" o "lenguaje compilado" no tienen sentido, porque cualquier lenguaje de programación puede ser interpretado y / o compilado.
En cuanto a las implementaciones existentes de Java, la mayoría implica un paso de compilación para bytecode , por lo que implican compilación. El tiempo de ejecución también puede cargar bytecode dinámicamente, por lo que siempre se necesita algún tipo de intérprete de bytecode. Ese intérprete puede o no utilizar a su vez la compilación de código nativo internamente.
En la actualidad, la compilación parcial justo a tiempo se utiliza para muchos idiomas que alguna vez se consideraron "interpretados", por ejemplo, JavaScript.
fuente
Java se compila en bytecode, que luego entra en la máquina virtual Java, que lo interpreta.
fuente
Java es un lenguaje de programación compilado, pero en lugar de compilar directamente en código máquina ejecutable, se compila en una forma binaria intermedia llamada código de bytes JVM. El código de bytes se compila y / o interpreta para ejecutar el programa.
fuente
Tipo de ambos. En primer lugar, Java compiló (algunos preferirían decir "traducido") a bytecode, que luego compiló o interpretó según el estado de ánimo de JIT.
fuente
Java hace tanto compilación como interpretación,
En Java, los programas no se compilan en archivos ejecutables ; se compilan en bytecode (como se discutió anteriormente), que la JVM (Java Virtual Machine) interpreta / ejecuta en tiempo de ejecución. El código fuente de Java se compila en bytecode cuando usamos el compilador javac. El bytecode se guarda en el disco con la extensión de archivo .class .
Cuando se va a ejecutar el programa,
el bytecode se convierte yel bytecode se puede convertir, utilizando el compilador Just-In-Time (JIT). El resultado es un código de máquina que luego se alimenta a la memoria y se ejecuta.Javac es el compilador de Java que compila el código de Java en Bytecode. JVM es una máquina virtual Java que ejecuta / interpreta / traduce Bytecode en código de máquina nativo. En Java, aunque se considera un lenguaje interpretado, puede usar la compilación JIT (Just-in-Time) cuando el código de bytes está en la JVM. El compilador JIT lee los códigos de bytes en muchas secciones (o en su totalidad, rara vez) y los compila dinámicamente en código de máquina para que el programa pueda ejecutarse más rápido, y luego se almacena en caché y se reutiliza más tarde sin necesidad de volver a compilar. Entonces, la compilación JIT combina la velocidad del código compilado con la flexibilidad de interpretación.
Un lenguaje interpretado es un tipo de lenguaje de programación para el cual la mayoría de sus implementaciones ejecutan instrucciones directa y libremente, sin compilar previamente un programa en instrucciones de lenguaje máquina. El intérprete ejecuta el programa directamente, traduciendo cada declaración en una secuencia de una o más subrutinas ya compiladas en código máquina.
Un lenguaje compilado es un lenguaje de programación cuyas implementaciones suelen ser compiladores (traductores que generan código de máquina a partir del código fuente) y no intérpretes (ejecutores paso a paso del código fuente, donde no se lleva a cabo una traducción previa al tiempo de ejecución)
En implementaciones modernas de lenguaje de programación como en Java, cada vez es más popular que una plataforma brinde ambas opciones.
fuente
Java es un lenguaje compilado de bytes dirigido a una plataforma llamada Java Virtual Machine que está basada en la pila y tiene algunas implementaciones muy rápidas en muchas plataformas.
fuente
Cita de: https://blogs.oracle.com/ask-arun/entry/run_your_java_applications_faster
Entonces diría que Java es definitivamente un lenguaje compilado.
fuente