La salida de Java 7 acompañada de un bug

Este 28 de julio fue lanzada oficialmente la versiòn 7 de la edición estándar de uno de los lenguajes de programación mas populares: Java. Esta edición tuvo un gran retraso debido a diferentes situaciones, desde la venta de Sun, hasta los conflictos que generó Oracle con la Apache Software Foundation.

Este lanzamiento trajo algunas novedades, que detallaré en una entrada posterior, pero vino también acompañada de un bug que desató la alarma al estar presente por defecto como parte de una optimización realizada por JIT.

El bug está relacionado con loops y desató noticias alarmistas en las que se decía que no es seguro usar Java 7 a menos que se garantice que el programa no utilice ningún loop, pues puede hacer que el programa no se ejecute o que produzca una señal de SIGSEGV (Segmentation fault).

Este bug ocurre cuando se utilizan loops específicos en los que las condiciones del loop pueden ser alteradas por el cuerpo del loop. Se puede evitar que ocurra utilizando la bandera -Xint, pero el problema sigue presente utilizando la bandera -server. Es difícil también encontrar rastros de este error dado que la optimización ocurre en loops que se han ejecutado al menos 10,000 veces.

El problema ocurre incluso en la versión 6 de Java, en la cuál no está activada por defecto la característica de optimización,  pero puede ser activada utilizando las opciones de optimización -XX:+OptimizeStringConcat o -XX:+AggressiveOpts.

La ocurrencia de este error causó un gran revuelo en la red, sobre todo por Twitter, por lo que, pese a que se tenía planeado incluir el arreglo en la actualización 2 de esta versión de Java, la priorida fue cambiada y será incluido en la primera actualización.

Es claro también que no hay por qué actualizar inmediatamente todos los sistemas a esta versión, mucho menos si son sistemas que se encuentran en producción. Es cuestión de tiempo para que esta versión sea bien probada y podamos adoptarla en nuestro trabajo del dìa a dìa.  Por lo pronto podemos comenzar a explorar sus nuevas características y planear una posible adopción a futuro.

Fuente

2 comentarios en “La salida de Java 7 acompañada de un bug

    • El proyecto OpenJDK fue planeado para sustituir partes del código que no eran propiedad de Sun. Dentro de este proyecto se lanzaron varios subproyectos, uno de ellos OpenJDK 6 cuyo propósito era el de lanzar una versión completamente Open Source del JDK 6. Por otro lado se desarrolló el OpenJDK7, cuyo propósito era convertirse en la implementación de referencia del JDK7 y fue esta versión la que fue liberada el día 28 de junio.
      El JDK8 se está desarrollando también denro de este proyecto OpenJDK.

      Me gusta

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s