O compilador Java do Eclipse é apenas um invólucro em torno do mesmo núcleo em que o javac
programa está envolvido, ou é um compilador separado? Se este último, por que eles reinventariam a roda?
O compilador Java do Eclipse é apenas um invólucro em torno do mesmo núcleo em que o javac
programa está envolvido, ou é um compilador separado? Se este último, por que eles reinventariam a roda?
Respostas:
O Eclipse implementou seu próprio compilador chamado Eclipse Compiler for Java (ECJ).
É diferente do javac, o compilador enviado com o Sun JDK. Uma diferença notável é que o compilador Eclipse permite executar o código que não foi compilado corretamente. Se o bloco de código com o erro nunca for executado, seu programa funcionará bem. Caso contrário, ele lançará uma exceção indicando que você tentou executar o código que não é compilado.
Outra diferença é que o compilador Eclipse permite construções incrementais a partir do IDE Eclipse, ou seja, todo o código é compilado assim que você terminar de digitar.
O fato de o Eclipse vir com seu próprio compilador também é aparente porque você pode escrever, compilar e executar código Java no Eclipse sem precisar instalar o Java SDK.
Alguns exemplos em que o ECJ é preferível ao javac são:
-proceedOnError
e ele simplesmente não produzirá arquivos .class da fonte com erros.
Todo mundo já explicou que são diferentes. Aqui estão algumas diferenças de comportamento que eu notei entre os dois compiladores. Todos se resumem a um bug em (pelo menos) uma das implementações.
O compilador embutido do Eclipse é baseado no compilador jikes Jikes da IBM . (Observe que o Eclipse também iniciou sua vida na IBM). É completamente independente do compilador Java da Sun no JDK; não é um invólucro ao redor do sol javac
.
O Jikes existe há muito tempo, costumava ser muito mais rápido que o compilador JDK Java padrão (mas não sei se isso ainda é verdade). Por que a IBM queria escrever seu próprio compilador Java: talvez por motivos de licenciamento (eles também têm sua própria implementação Java).
É um compilador separado completamente. Isso é necessário, pois o javac não permite a compilação de código um pouco quebrado, a partir do site eclipse
Um compilador Java incremental. Implementado como um construtor Eclipse, é baseado na tecnologia desenvolvida no compilador VisualAge for Java. Em particular, ele permite executar e depurar códigos que ainda contêm erros não resolvidos.