Il compilatore Java di Eclipse è solo un wrapper attorno allo stesso core su cui javac
è avvolto il programma o è un compilatore separato del tutto? In quest'ultimo caso, perché dovrebbero reinventare la ruota?
Il compilatore Java di Eclipse è solo un wrapper attorno allo stesso core su cui javac
è avvolto il programma o è un compilatore separato del tutto? In quest'ultimo caso, perché dovrebbero reinventare la ruota?
Risposte:
Eclipse ha implementato il proprio compilatore chiamato Eclipse Compiler per Java (ECJ).
È diverso da javac, il compilatore fornito con Sun JDK. Una notevole differenza è che il compilatore Eclipse consente di eseguire codice che non è stato compilato correttamente. Se il blocco di codice con l'errore non viene mai eseguito, il programma funzionerà correttamente. Altrimenti, genererà un'eccezione che indica che hai provato a eseguire codice che non viene compilato.
Un'altra differenza è che il compilatore Eclipse consente build incrementali dall'IDE Eclipse, ovvero tutto il codice viene compilato non appena si finisce di digitare.
Il fatto che Eclipse venga fornito con il proprio compilatore è evidente anche perché è possibile scrivere, compilare ed eseguire il codice Java in Eclipse senza nemmeno installare Java SDK.
Alcuni esempi in cui ECJ è preferito rispetto a javac sono:
-proceedOnError
e semplicemente non produrrà file .class dall'origine con errori.
Tutti hanno già spiegato che sono diversi. Ecco alcune differenze nei comportamenti che ho notato tra i due compilatori. Si riducono tutti a un bug in (almeno) una delle implementazioni.
Il compilatore integrato di Eclipse si basa sul compilatore Java Java di IBM . (Notare che anche Eclipse ha iniziato la sua vita in IBM). È completamente indipendente dal compilatore Java di Sun nel JDK; non è un wrapper Sun javac
.
Jikes esiste da molto tempo, era molto più veloce del compilatore standard JDK Java (ma non so se sia ancora vero). Per quanto riguarda il motivo per cui IBM ha voluto scrivere il proprio compilatore Java: forse per motivi di licenza (hanno anche la propria implementazione Java).
È un compilatore separato del tutto. Ciò è necessario in quanto javac non consente la compilazione di codice leggermente non funzionante, dal sito eclipse
Un compilatore Java incrementale. Implementato come builder Eclipse, si basa sulla tecnologia sviluppata dal compilatore VisualAge per Java. In particolare, consente di eseguire ed eseguire il debug del codice che contiene ancora errori irrisolti.