Qual è la differenza tra javac e il compilatore Eclipse?


Il compilatore Java di Eclipse è solo un wrapper attorno allo stesso core che il programma javac è avvolto, o è un compilatore separato del tutto? Se quest'ultimo, perché dovrebbero reinventare la ruota?

Author: sevenforce, 2010-06-17

4 answers

Eclipse ha implementato il proprio compilatore chiamato as Compilatore Eclipse per Java (ECJ).

È diverso dal javac, il compilatore fornito con Sun JDK. Una differenza notevole è che il compilatore Eclipse consente di eseguire codice che in realtà non è stato compilato correttamente. Se il blocco di codice con l'errore non viene mai eseguito, il programma verrà eseguito correttamente. Altrimenti, genererà un'eccezione che indica che hai provato a eseguire codice che non viene compilato.

Un altro la differenza è che il compilatore Eclipse consente build incrementali all'interno dell'IDE Eclipse, ovvero tutto il codice viene compilato non appena si termina la digitazione.

Il fatto che Eclipse sia dotato di un proprio compilatore è evidente anche perché è possibile scrivere, compilare ed eseguire codice Java in Eclipse senza nemmeno installare l'SDK Java.

Alcuni esempi in cui ECJ è preferito rispetto a javac sono:

 183
Author: jjnguy, 2013-05-09 20:54:27

Tutti hanno già spiegato che sono diversi. Ecco alcune differenze nei comportamenti che ho notato tra i due compilatori. Tutti si riducono a un bug in (almeno) una delle implementazioni.

Ottimizzazione in fase di compilazione correlata

Tipo di inferenza generica correlata

 34
Author: polygenelubricants, 2017-05-23 12:25:52

Il compilatore integrato di Eclipse è basato sul compilatore java Jikes di IBM . (Si noti che Eclipse ha anche iniziato la sua vita in IBM). È completamente indipendente dal compilatore Java di Sun nel JDK; non è un wrapper attorno a javac di Sun.

Jikes esiste da molto tempo, era molto più veloce del compilatore Java JDK standard (ma non so se è ancora vero). Per quanto riguarda il motivo per cui IBM voleva scrivere il proprio compilatore Java: forse a causa di motivi di licenza (hanno anche propria implementazione Java).

 14
Author: Jesper, 2010-06-17 12:47:18

È un compilatore separato del tutto. Questo è necessario in quanto javac non consente la compilazione di codice leggermente rotto, da il sito eclipse

Un compilatore Java incrementale. Implementato come Eclipse builder, si basa sulla tecnologia evoluta da VisualAge per il compilatore Java. In particolare, consente di eseguire ed eseguire il debug di codice che contiene ancora errori irrisolti.

 13
Author: BenM, 2011-09-28 13:14:24