Pessoal,
Gostaria de saber em qual linguagem foi feito o Java. Se em C ou Assembler, ou outra linguagem. Alguém sabe disso? Principalmente o Javac.exe e o Java.exe.
Muito obrigado,
Ronaldo César
www.twitter.com/rcesarsoares
ronaldoguj@zipmail.com.br
O primeiro compilador java, na época que ainda era chamado de Oak, foi criado em C.
A partir das outras versões, ele foi escrito em java mesmo, até onde sei.
A JVM foi programada em uma série de linguagens, entre as quais se listam o C++, o C e o próprio Java.
Baixe os fontes da JVM, para ver que linguagens foram usadas, e estudar como é que ele foi feito, em:
http://jdk7.java.net/source.html (é o arquivo http://www.java.net/download/openjdk/jdk7u6/promoted/b24/openjdk-7u6-fcs-src-b24-28_aug_2012.zip ) .
Só um detalhe.
“Java” é uma especificação. Não é uma implementação. Ou seja, rigorasamente falando, não faz sentido perguntar em que linguagem o java é implementado. Pode ser qualquer, desde que siga a especificação.
O conceito de máquina virtual implica que qualquer implementação da jvm seja um programa que funciona em outra máquina. Portanto, ele tem que ser implementado na linguagem dessa máquina ( ou pelo menos ter hooks com ela). Ou seja, a JVM do windows tem hookc com o windows e a do linux com o kernel, etc… é isto que possibilita certas funcionalidades.
A Sun, agora a Oracle, têm o direito de usar a palavra “java” para chamar às coisas, por isso eles usaram o nome java.exe. Outros implementadores usaram outros nomes. Mas a especificação que eles implementam é a mesma.
Existem muitas JVM no mercado. A Oracle tem duas. A que era da Sun , chamada Hotspot (e academicamente a melhor de todas) e a JRockit que foi criada pela Oracle antes de comprar a Sun. Temos também a da IBM e as vm embutidas em cartões de credito e outras plataformas. Tem até uma jvm implementada em .net ( a ikvm) :shock:
Perguntar “em que linguagem a jvm é implementada” tb nao é rigoroso o suficiente, porque ha muitas jvm.
O que o pessoal respondeu aqui é como o hotspot é implementado, mas essa é apenas uma das opções.
Como disse o hotspot é uma das melhores - senão a melhor - e faz muitas otimizações que não necessariamente as outras fazem ( e vice-versa, claro). Portanto, além da especificação em si, o fabricante pode escolher implementar outras coisas que fazem a vm ser mais rápida, mais robusta, mais leve, etc… mas cada vendedor dá mais prioridade a uma coisa que a outra.
O ponto não é ser picuinhas, o ponto é monstrar que existe um monte de implementações de java por ai. E isso é uma das vantagens do java ser free. O .net , por exemplo, só tem duas implementações. A da microsoft e o Mono. O problema aqui é que a microsoft lança alguams API que só funcionam no windows e isso quebra um pouco o paradigma de ter multiplas vm que podem correr o mesmo código. É uma outra escola de pensamento diferente da do mundo java. Outras linguagens também usam máquinas virtuais como Ruby e Python e também existem mais do que uma implemetação. O uso de VM é uma ferramenta muito poderosa.
1 curtida