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?
Respuesta
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:
- Rendimiento de compilación. En un momento IBM Jikes fue un compilador muy rápido.
- Informe de errores. Los compiladores integrados en IDE suelen tener un informe de error superior.
- 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.
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? –
@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
@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. –
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í)
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
@Dave, bueno, no puedo hablar de eso desafortunadamente. No tengo idea. – jjnguy
¿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
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.
Probablemente se refiera a JRockit. – Barthelemy
Por supuesto, Sun y BEA y ahora son propiedad de Oracle. –
@Tom - Sí, pero en cualquier caso JRockit no es Sun, es BEA. – duffymo
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 :(
- 1. ¿Cuál fue la motivación para agregar la bandera IPV6_V6ONLY?
- 2. ¿Motivación para las API Overengineered?
- 3. ¿Cuál es la motivación detrás de "Usar los métodos de extensión con moderación?"
- 4. ¿Cuál es la motivación para asignar la asignación de Scala a la Unidad en lugar del valor asignado?
- 5. ¿Cuál es la motivación detrás de las expresiones lambda C++ 11?
- 6. ¿Cuál es la mejor base de datos para usar con un programa Java?
- 7. ¿Cuál es la trampa para usar bloques en línea?
- 8. ¿Cuál es la razón principal para usar Mongoose ORM?
- 9. cuál es la forma 'adecuada' para usar objectWithID de NSManagedObjectContext:
- 10. ¿Cómo sé cuál es el mejor lugar para usar 'usar'?
- 11. sun-jaxws.xml - ¿Cuándo es necesario y cuándo no?
- 12. ¿Cuál es la sintaxis correcta para usar Database.ExecuteSqlCommand con parámetros?
- 13. ¿Cuál es la mejor biblioteca matemática para usar con Java?
- 14. Para WebGrid o no para WebGrid ... ¿cuál es la respuesta?
- 15. Sun Java jstat no funciona ... a veces!
- 16. ¿Cuál es la diferencia de usar addEventListener?
- 17. ¿Cuál es la mejor manera de usar SVN para controlar la versión de un sitio PHP?
- 18. ¿Cuál es su umbral para usar fábrica en lugar de un constructor para crear un objeto?
- 19. ¿Cuál es la referencia adecuada para escribir un controlador MySql?
- 20. Sun CodeModel método genérico
- 21. bibliotecas para JSF (Sun/Oracle Mojarra)
- 22. ¿Cuál es la terminología correcta para una solicitud "no AJAX"?
- 23. ¿Cuál es la sintaxis para usar una instrucción Select dentro de un Trigger PL/SQL?
- 24. ¿Cuál es una buena razón para usar vistas de SQL?
- 25. ¿Cuál es el mejor enfoque para usar JasperReports?
- 26. ¿Cuál es el motivo para usar dicha sintaxis (0, _.Em)();
- 27. ¿Cuál es la sintaxis para "no igual" en SQLite?
- 28. ¿Cuál es la sintaxis de F # para "no igual a"?
- 29. ¿Cuál es la codificación predeterminada para System.IO.File.ReadAllText
- 30. En Perl, ¿cuál es la diferencia entre usar y requerir para cargar un módulo?
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ó. –
los acuerdos de licencia/distribución difieren de los diferentes proveedores ... – chrismh
Wiki de la comunidad? – Barthelemy