¿En qué lenguaje están escritos el compilador Java y JVM?


En el que los lenguajes son el compilador Java (javac), la máquina virtual (JVM) y el java starter escrito?

 174
Author: user2418306, 2009-08-03

9 answers

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 por ahí.

  • La JVM de Sun está escrita en C, aunque este no es necesariamente el caso: la JVM, ya que se ejecuta en su máquina, es un ejecutable dependiente de la plataforma y, por lo tanto, podría haber sido escrita originalmente en idioma. Por ejemplo, la IBM JVM original fue escrita en Smalltalk

  • Las bibliotecas de Java(java.lang, java.util etc, a menudo referido como la API de Java ) se escriben en Java, aunque los métodos marcados como native se han escrito en C o C++.

  • Creo que el compilador Java proporcionado por Sun también está escrito en Java. (Aunque de nuevo, hay varios compiladores por ahí)

 149
Author: oxbow_lakes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-03 12:26:32

Desde Java Docs

El compilador está escrito en Java y el tiempo de ejecución está escrito en ANSI C

 58
Author: Sev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-06 22:26:12

El primer compilador Java fue desarrollado por Sun Microsystems y fue escrito en C usando algunas bibliotecas de C++. Hoy en día, el compilador de Java está escrito en Java, mientras que el JRE está escrito en C.

Podemos imaginar cómo el compilador de Java fue escrito en Java de esta manera:

El compilador Java se escribe como un programa Java y luego se compila con el compilador Java escrito en C(el primer compilador Java). Así podemos usar el compilador Java recién compilado(escrito en Java) para compilar Java programa.

 54
Author: shrinath,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-06 02:34:19

En realidad, la JVM de Oracle está escrita en C++, no en C.

Echa un vistazo al código JVM de HotSpot aquí: http://openjdk.java.net/groups/hotspot /

 14
Author: UrbenLegend,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-02-29 22:36:40

Este enlace debe responder a su pregunta

Parece que el compilador ahora está escrito en Java, pero el tiempo de ejecución está escrito en ANSI C

 9
Author: micmoo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-03 10:34:39

En principio casi cualquier cosa, generalmente C

 8
Author: djna,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-03 06:44:57

Jikes RVM, una JVM auto-alojada usada extensivamente para propósitos de investigación está escrita en Java. No es el que la gente ejecuta en sus escritorios, pero está muy arriba en mi lista de "ahora vamos a mostrar el poder general del lenguaje."

 3
Author: Sam Harwell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-03 06:46:57

Supongamos que estamos hablando de la JVM Hotspot, que es iirc proporcionada por Sun, está escrita 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 Java, está escrito en Java.

 3
Author: Michael Foukarakis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-03 06:51:38

La mayoría de los sistemas operativos, JVM están escritos en ISO C++. Dudo que se use ANSI C, un lenguaje completamente diferente que es bastante anticuado hoy en día.

 -2
Author: Mickey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-10-08 13:14:36