Czy kompilator Java Eclipse jest tylko opakowaniem wokół tego samego rdzenia, na javac
którym jest zawinięty program, czy może jest to osobny kompilator? Jeśli to drugie, dlaczego mieliby wynaleźć koło na nowo?
Eclipse zaimplementował własny kompilator o nazwie Eclipse Compiler for Java (ECJ).
Różni się od javaca, kompilatora dostarczanego z Sun JDK. Istotną różnicą jest to, że kompilator Eclipse umożliwia uruchamianie kodu, który nie został właściwie skompilowany. Jeśli blok kodu z błędem nigdy nie zostanie uruchomiony, Twój program będzie działał poprawnie. W przeciwnym razie wygeneruje wyjątek wskazujący, że próbowałeś uruchomić kod, który się nie kompiluje.
Kolejna różnica polega na tym, że kompilator Eclipse pozwala na tworzenie przyrostowych kompilacji z poziomu środowiska IDE Eclipse, to znaczy, że cały kod jest kompilowany, gdy tylko skończysz pisać.
Fakt, że Eclipse ma własny kompilator, jest również oczywisty, ponieważ możesz pisać, kompilować i uruchamiać kod Java w Eclipse bez instalowania nawet Java SDK.
Kilka przykładów, w których ETS jest lepszy niż javac, to:
-proceedOnError
i po prostu nie będzie generować plików .class ze źródła z błędami.Wszyscy już wyjaśnili, że są inni. Oto kilka różnic w zachowaniach, które zauważyłem między dwoma kompilatorami. Wszystkie sprowadzają się do błędu w (przynajmniej) jednej z implementacji.
Związane z optymalizacją czasu kompilacji
Związane z wnioskami na temat rodzaju generycznego
źródło
Wbudowany kompilator Eclipse jest oparty na kompilatorze Java Jikes firmy IBM . (Zauważ, że Eclipse również zaczęło działać w IBM). Jest całkowicie niezależny od kompilatora Java firmy Sun w JDK; to nie jest opakowanie wokół Słońca
javac
.Jikes istnieje od dawna, był znacznie szybszy niż standardowy kompilator JDK Java (ale nie wiem, czy to nadal prawda). Co do tego, dlaczego IBM chciał napisać własny kompilator Java: może z powodów licencyjnych (mają też własną implementację Java).
źródło
Jest to osobny kompilator. Jest to potrzebne, ponieważ javac nie pozwala na kompilację lekko uszkodzonego kodu ze strony eclipse
źródło