Consideraciones sobre qué versión de Java se ejecutará en Producción

14

Algunas personas manejan la vanguardia de las tecnologías: actualizan el día en que algo se actualiza. En producción, esto no es tan apropiado.

Investigar si la versión actual (Java 7) está lista para la producción produce una cantidad significativa de material antiguo que puede que ya no sea correcto (en el momento de escribir este artículo, Java 7 ha estado fuera durante un año y medio, que parece mucho tiempo).

¿Qué consideraciones debo hacer para determinar si es apropiado actualizar el entorno de producción a una versión posterior de Java?

    
pregunta JohnDoDo 17.01.2013 - 18:16

1 respuesta

11

La primera pregunta que se debe hacer es "¿Se admite la versión de Java en la máquina?" Si bien la actualización del JRE es una cosa, es posible que el sistema operativo subyacente no sea compatible con la ejecución de la nueva versión de Java (certificaciones compatibles y contratos de soporte y similares que muchos entornos empresariales desean tener).

Muchos entornos de producción de Java en realidad se ejecutan sobre un servidor de aplicaciones . Esta sería la próxima consideración. comparación de Wikipedia de los servidores de aplicaciones Java EE muestra qué versión de Java EE es compatible. Esto se puede ver más a fondo en Visión general de compatibilidad de JavaEE de Oracle . La configuración probada para JBoss Enterprise Application Platform 6 es Contra Java SE 6.0 actualización 6u30. Java SE 6.0 update 6u30 también es la configuración probada para Servidor de aplicaciones JBoss 7.1.0 Final . Estos pueden funcionar en Java 7, pero no son configuraciones probadas.

Al expandirse en el servidor de aplicaciones, hay herramientas de análisis de código en vivo que se utilizan para hacer la depuración después del hecho. Depurador omnisciente (ver también) y Dynatrace son dos ejemplos de esto. Estas aplicaciones funcionan mediante la instrumentación (modificación) del código de byte activo de java que se ejecuta para informarle de nuevo. Como estas aplicaciones funcionan modificando el código de bytes, si el código de bytes cambia de una forma en que no pueden trabajar (como en un nuevo JRE), no funcionarán.

A continuación en la línea están los marcos . Un ejemplo de esto es JAXB que viene con java y Spring que lo usa. Al cambiar a Java 7, JAXB actualizado generó un código incompatible con algunos marcos (lo que requiere que se actualicen y que sus dependencias deberían actualizarse ...).

Herramientas de compilación son las siguientes en la lista. Uno tendría que asegurarse de que el entorno de compilación esté utilizando la versión adecuada de Java. Escribir código para Java 7 pero no actualizar la versión que utiliza Maven o Ant causaría problemas. En ocasiones, las herramientas de compilación están fuertemente vinculadas a una versión con complementos específicos.

Herramientas de prueba . Es posible que cosas como PMD, findbugs y checkstyle no reconozcan nuevas estructuras en una nueva versión de Java; es posible que se confundan con declaraciones de cambio de cadena o capturas compuestas. Las herramientas que entran en la instrumentación, como la cobertura de código, pueden no funcionar en la nueva JVM. En el contexto de Java 7, Cobertura y Emma no se han actualizado al nuevo JRE (nuevamente, estas aplicaciones modifican el código de bytes para ver qué código se ejecuta y cuál no) (vea abrir bibliotecas de cobertura de código fuente para jdk7 ). Esto podría requerir un cambio en los scripts de compilación para cambiar de uno a otro.

Luego está el IDE . Uno necesitaría actualizar el IDE a una versión que tenga conocimiento de las nuevas estructuras en el lenguaje. El anuncio de soporte para Java 7 de Eclipse muestra estos problemas.

Por último, y ciertamente no menos importante, es el desarrollador . Es responsabilidad del desarrollador escribir el nuevo código y saber cómo se puede reestructurar el código. Pasando de Java 1.4 a 1.5, se introdujeron plantillas y anotaciones y los desarrolladores tardaron en llegar a la mentalidad de las nuevas estructuras disponibles. Del mismo modo, las colecciones vuelven a trabajar en 1.2 y evitan que los desarrolladores utilicen HashTable y Vector. La actualización de la versión debe ir acompañada de cierta capacitación en las nuevas estructuras lingüísticas.

    
respondido por el user40980 17.01.2013 - 23:46

Lea otras preguntas en las etiquetas