ECJ – Eclipse Compiler for Java

Nie wszyscy o tym wiedzą, ale Eclipse dostarcza i używa własnego kompilatora Javy – ECJ – zamiast standardowego javac. Kompilator umieszczony jest w plug-inie JDT Core i dostępny zarówno jako cześć Eclipse IDE for Java Developers jak i jako samodzielna aplikacja  do wykorzystania zarówno z linii poleceń jak i programistycznego. Dlaczego ECJ jest tak interesujący? Jak pisze Wayner

It does wonderful things. My personal favourite thing about the Eclipse Java compiler is the fact that it will compile code that contains errors. That is, when you compile code that has errors in it, the compiler will flag those errors for you and then generate the .class file anyway. You can actually run and debug the code and, should the runtime actually run into your errors, it will then throw an exception.

Użycie z wiersza poleceń

Jest  bardzo proste – po wpisaniu

java -jar /apps/ecj-4.2.1.jar

uzyskujemy niezbędną pomoc. Przkładowo, klasę MyApp.java można skompilować następujaco

java -jar /apps/ecj-4.2.1.jar MyApp.java

Znacznie ciekawsze jest

Wykorzystanie programistyczne

def ecjJar = '/apps/ecj-4.2.1.jar' as File
def loader = this.class.classLoader.rootLoader
loader.addURL(ecjJar.toURI().toURL())


def commandLine = '-classpath rt.jar MyApp.java'

org.eclipse.jdt.internal.compiler.batch.Main.compile(
    commandLine, 
    new PrintWriter(System.out), 
    new PrintWriter(System.err))

Oczywiście, jest to tylko wierzchołek góry lodowej możliwości ECJ który oferuje dużo więcej niż standardowy kompilator z JDK, np. wyszukiwanie w kodzie źródłowym.


eclipse / eclipse.jdt.core on GitHub

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s