¿En qué idiomas están escritos el compilador Java ( javac
), la máquina virtual (JVM) y el java
iniciador?
¿En qué idiomas están escritos el compilador Java ( javac
), la máquina virtual (JVM) y el java
iniciador?
Respuestas:
La formulación precisa de la pregunta es ligeramente engañosa: no es "la JVM" o "el compilador", ya que hay múltiples proveedores de JVM (jrockit es uno, IBM otro) y múltiples compiladores .
El Sun JVM está escrito C
, aunque este no tiene por qué ser el caso: el JVM que se ejecuta en su máquina es un ejecutable dependiente de la plataforma y, por lo tanto, podría haberse escrito originalmente en cualquier idioma. Por ejemplo, el IBM JVM original fue escrito en Smalltalk
Las bibliotecas de Java ( java.lang
, java.util
etc., a menudo denominadas API de Java ) están escritas en Java, aunque los métodos marcados como native
se han escrito en C
o C++
.
Creo que el compilador de Java proporcionado por Sun también está escrito en Java. (Aunque de nuevo, hay múltiples compiladores por ahí)
El primer compilador de Java fue desarrollado por Sun Microsystems y fue escrito en C usando algunas bibliotecas de C ++. Hoy, el compilador de Java está escrito en Java, mientras que el JRE está escrito en C.
Podemos imaginar cómo se escribió el compilador de Java en Java de esta manera:
El compilador de Java se escribe como un programa de Java y luego se compila con el compilador de Java escrito en C (el primer compilador de Java). Por lo tanto, podemos usar el compilador Java recién compilado (escrito en Java) para compilar programas Java.
De Java Docs
El compilador está escrito en Java y el tiempo de ejecución está escrito en ANSI C
En realidad, Oracle JVM está escrito en C ++, no en C.
Eche un vistazo al código JVM de HotSpot aquí: http://openjdk.java.net/groups/hotspot/
Este enlace debería responder a tu pregunta
Parece que el compilador ahora está escrito en Java, pero el tiempo de ejecución está escrito en ANSI C
Jikes RVM , un JVM de alojamiento propio que se utiliza ampliamente para fines de investigación, está escrito en Java. No es el que las personas ejecutan en sus escritorios, pero está muy arriba en mi lista de "ahora vamos a mostrar el poder general del lenguaje".
Supongamos que está hablando del Hotspot JVM, que es iirc proporcionado por Sun, está escrito en C ++. Para obtener más información sobre las diversas máquinas virtuales para Java, puede consultar este enlace . javac , como la mayoría de los compiladores de Java, está escrito en Java.
(Para obtener más información, puede consultar este enlace: https://docs.oracle.com/javase/specs/jvms/se7/html/ )