Em quais idiomas são escritos o compilador Java ( javac
), a máquina virtual (JVM) e o java
iniciador?
Em quais idiomas são escritos o compilador Java ( javac
), a máquina virtual (JVM) e o java
iniciador?
Respostas:
A formulação precisa da pergunta é um pouco enganadora: não é "a JVM" ou "o compilador", pois existem vários fornecedores de JVM (jrockit é um, IBM outro) e vários compiladores por aí.
A Sun JVM está gravada C
, embora isso não precise ser o caso - a JVM conforme é executada em sua máquina é um executável dependente da plataforma e, portanto, poderia ter sido originalmente escrita em qualquer idioma. Por exemplo, o IBM JVM original foi escrito em Smalltalk
As bibliotecas Java ( java.lang
, java.util
etc, geralmente chamadas de API Java ) são escritas em Java, embora os métodos marcados como native
tenham sido escritos em C
ou C++
.
Acredito que o compilador Java fornecido pela Sun também esteja escrito em Java. (Embora, novamente, haja vários compiladores por aí)
O primeiro compilador Java foi desenvolvido pela Sun Microsystems e foi escrito em C usando algumas bibliotecas do C ++. Hoje, o compilador Java é escrito em Java, enquanto o JRE é escrito em C.
Podemos imaginar como o compilador Java foi escrito em Java assim:
O compilador Java é escrito como um programa Java e, em seguida, compilado com o compilador Java escrito em C (o primeiro compilador Java). Assim, podemos usar o compilador Java recentemente compilado (escrito em Java) para compilar programas Java.
Do Java Docs
O compilador é gravado em Java e o tempo de execução é gravado em ANSI C
Na verdade, a Oracle JVM é escrita em C ++, não em C.
Veja o código da JVM do HotSpot aqui: http://openjdk.java.net/groups/hotspot/
O Jikes RVM , uma JVM auto-hospedada usada extensivamente para fins de pesquisa, é escrita em Java. Não é o único que as pessoas executam em seus desktops, mas está lá na minha lista de "agora vamos mostrar o poder geral do idioma".
Supondo que você esteja falando da JVM do Hotspot, que é o iirc fornecida pela Sun, ela está escrita em C ++. Para mais informações sobre as várias máquinas virtuais para Java, você pode verificar este link . O javac , como a maioria dos compiladores Java, é escrito em Java.
(Para obter mais informações, consulte este link: https://docs.oracle.com/javase/specs/jvms/se7/html/ )