2010-10-12 9 views
5

This pregunta me hizo pensar, suponiendo que Sun JDK está disponible, ¿por qué iba a utilizar algo más? ¿Hay una buena razón técnica para usar un compilador diferente?¿Cuál es la motivación para usar un JRE/JDK no Sun?

+1

No crea que esta pregunta pertenezca aquí, pero en los días oscuros de pre-1.4, el IBM JDK era en realidad mucho más rápido que el Sun. Y el compilador de jikes gobernó. –

+0

los acuerdos de licencia/distribución difieren de los diferentes proveedores ... – chrismh

+0

Wiki de la comunidad? – Barthelemy

Respuesta

1

Mucha gente está respondiendo a una pregunta diferente a lo que has pedido. El JDK utilizada para compilar el código es diferente de .. la JVM utiliza para ejecutarlo

Dado que la mayoría de optimización se produce JIT, la calidad del código generado por el compilador no es muy importante Esto deja la razón para utilizar un JDK particular:

  1. Rendimiento de compilación. En un momento IBM Jikes fue un compilador muy rápido.
  2. Informe de errores. Los compiladores integrados en IDE suelen tener un informe de error superior.
  3. Cumplimiento de normas. Por ejemplo, en un momento IBM proporcionó un método extra sobrecargado en StringBuilder. Si esa sobrecarga se seleccionó en el momento de la compilación, entonces su código fallará en el tiempo de ejecución en Sun JVM.
+0

De acuerdo con Darron "El JDK utilizado para compilar el código es diferente de la JVM utilizada para ejecutarlo." ?? !!, simplemente lo copió aquí para evitar futuras modificaciones. ¿Quién votó esta respuesta? –

+1

@Raul Darron tiene razón. Cuando compila su código en Eclipse usa el compilador Eclipse, y cuando lo ejecuta, usará otra máquina virtual (Sun, IBM, JRockit, etc.). – Barthelemy

+0

@Barthelemy No estoy de acuerdo, es una buena práctica usar un compilador que se proporciona desde otra fuente que no sea el entorno de ejecución, pero es solo mi opinión. –

1

Bueno, estoy seguro de que la gente no se da cuenta, pero Eclipse tiene su propio compilador. Entonces, cuando estás usando Eclipse, estás usando un JDK nun-Sun (Oracle).

Hay muchas ventajas al usar esto también. En primer lugar, Eclipse tiene algunos compiladores integrados. El que proporciona el mayor beneficio, IMO, es el que proporciona los subrayados rojos a medida que escribe.

Otra cosa que el compilador de Eclipse hace es compilar el código no compilable. Por lo tanto, si ejecuta un fragmento de código y nunca golpea el código que no pudo compilar, el código se ejecutará sin error. De lo contrario, obtienes un NotYetCompiledException. (O algo así)

+0

OK, es suficiente. Pero en el caso de las compilaciones de línea de comando simples, ¿existe una buena razón técnica para usar algo más? – Dave

+0

@Dave, bueno, no puedo hablar de eso desafortunadamente. No tengo idea. – jjnguy

+0

¿qué quiere decir con Eclipse tiene algunos compiladores incorporados? Hay muchas API (AST de alto nivel, AST de bajo nivel, AST interno), muchas opciones de personalización (qué es una advertencia, qué es un error), pero conozco solo un compilador (analizador de símbolos, generador de códigos de bytes, etc.) – Barthelemy

0

Si eres un usuario de WebLogic, JRockit tiene mucho sentido. Es una excelente JVM. Sin embargo, no estoy seguro de que funcione en todos los sistemas operativos.

+1

Probablemente se refiera a JRockit. – Barthelemy

+2

Por supuesto, Sun y BEA y ahora son propiedad de Oracle. –

+0

@Tom - Sí, pero en cualquier caso JRockit no es Sun, es BEA. – duffymo

0

Espere un segundo, si utiliza JRockIt o cualquier otro JRE, perderá la portabilidad, sin importar lo que le digan los comerciales: nunca es 100% portátil ni 100% estándar.

De hecho, muchos consideran que cambiar la parte JRE del Abrazo, extender y extinguir la estrategia, a veces es la "única manera recomendada" para resolver un problema.

http://en.wikipedia.org/wiki/Embrace,_extend_and_extinguish

promesa, he sufrido esto hace años y pagan por ello :(

Cuestiones relacionadas