programar para pagina oficial jre jdk diferencias descargar configurar cambiar java eclipse compiler-construction javac

java - para - jdk vs jre diferencias



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

¿El compilador de Java de Eclipse es solo un envoltorio alrededor del mismo núcleo que el programa javac está envuelto, o es un compilador separado por completo? Si esto último, ¿por qué iban a reinventar la rueda?


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

Es diferente del javac, el compilador que se envía 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 se ejecutará correctamente. De lo contrario, lanzará una excepción que indica que intentó ejecutar código que no compila.

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

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

Algunos ejemplos donde se prefiere ECJ sobre javac son:


El compilador incorporado de Eclipse se basa en el compilador Java 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 un envoltorio alrededor del javac de Sun.

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


Es un compilador separado por completo. Esto es necesario ya que javac no permite la compilación de código ligeramente roto, del 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 de VisualAge para Java. En particular, permite ejecutar y depurar código que aún contiene errores no resueltos.


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.

Optimización de tiempo de compilación relacionada

Generics type inferrence related