¿Cuál es la diferencia entre javac y el compilador de Eclipse?

Resuelto Bart van Heukelom asked hace 14 años • 4 respuestas

¿Es el compilador Java de Eclipse solo un contenedor alrededor del mismo núcleo en el que javacestá incluido el programa, o es un compilador completamente separado? Si es lo último, ¿por qué reinventarían la rueda?

Bart van Heukelom avatar Jun 17 '10 19:06 Bart van Heukelom
Aceptado

Eclipse ha implementado su propio compilador llamado Eclipse Compiler for Java (ECJ).

Es diferente de javac, el compilador que se incluye con Sun JDK. Una diferencia notable es que el compilador de Eclipse le permite ejecutar código que en realidad no se compiló correctamente. Si el bloque de código con el error nunca se ejecuta, su programa funcionará bien. De lo contrario, generará una excepción que indica que intentó ejecutar código que no se compila.

Otra diferencia es que el compilador de Eclipse permite compilaciones incrementales desde el IDE de Eclipse, es decir, todo el código se compila tan pronto como termina de escribir.

El hecho de que Eclipse venga con su propio compilador también es evidente porque puedes escribir, compilar y ejecutar código Java en Eclipse sin siquiera instalar el SDK de Java.

Algunos ejemplos en los que se prefiere el TJCE a javac son:

  • Apache Tomcat utiliza ECJ para compilar JSP,
  • IntelliJ IDEA tiene soporte para ECJ, a partir de GNU Compiler for Java (GCJ) 4.3,
  • El GCJ se integra con el TJCE,
  • Liferay construye con el TJCE.
jjnguy avatar Jun 17 '2010 12:06 jjnguy

Todos ya han explicado que son diferentes. Aquí hay algunas diferencias en los comportamientos que he notado entre los dos compiladores. Todos se reducen a un error en (al menos) una de las implementaciones.

Relacionado con la optimización en tiempo de compilación

  • ¿Error del eclipse? Activar un valor nulo con solo el caso predeterminado

Inferencia de tipos genéricos relacionados

polygenelubricants avatar Jun 17 '2010 15:06 polygenelubricants

El compilador integrado de Eclipse se basa en el compilador Java Jikes de IBM . (Tenga en cuenta que Eclipse también comenzó su vida en IBM). Es completamente independiente del compilador Java de Sun en el JDK; no es una envoltura alrededor de javacSun.

Jikes existe desde hace mucho tiempo, solía ser mucho más rápido que el compilador JDK Java estándar (pero no sé si eso sigue siendo cierto). En cuanto a por qué IBM quería escribir su propio compilador de Java: tal vez por motivos de licencia (también tienen su propia implementación de Java).

Jesper avatar Jun 17 '2010 12:06 Jesper

Es un compilador completamente separado. Esto es necesario ya que javac no permite la compilación de código ligeramente roto desde el sitio de eclipse.

Un compilador incremental de Java. Implementado como un constructor de Eclipse, se basa en la tecnología desarrollada a partir del compilador VisualAge para Java. En particular, permite ejecutar y depurar código que aún contiene errores sin resolver.

BenM avatar Jun 17 '2010 12:06 BenM