Java 7 tiene un bug bastante feo en el compilador Hotspot
La noticia se hizo pública la semana pasada por parte de los miembros del proyecto Lucene, quienes vieron como emplear Java 7 con Lucene podría llevar a que el proceso de la máquina virtual se muriese por culpa de violaciones de segmento en el proceso nativo.
Este problema ocurre con ciertos tipos de bucles en los que la condición del bucle se modifica en su cuerpo. El problema surge del compilador Hotspot y algunas optimizaciones que ya estaban presentes en Java 6 pero que no estaban activadas por defecto (se activaban con los flags XX:+OptimizeStringConcat o -XX:+AggressiveOpts).
En Java 6 estas optimizaciones también daban problemas en algunos casos, pero el problema no era tan grave porque no estaban activadas por defecto. Oracle pensó que había resuelto el problema en Java 7, pero no es así (cosa que descubrió una semana antes del release final de Java 7). Esto ha llevado a algunos bloggers a recomendar no usar Java 7 para nada (en producción), recomendación que probablemente en estos momentos sea un buen consejo.
Tendremos que esperar a Java 7 update 1 por una solución a este problema. A pesar de esta metedura de pata, francamente, no creo que con Oracle los JDK vayan a tener más bugs que con Sun; todo lo contrario. En general la comunidad MySQL está de acuerdo que las releases de la base de datos bajo Oracle son bastante más estables y tienen menos bugs que cuando Sun (o la propia MySQL) estaban al cargo (otro tema diferente es la subida de precios de las licencias de la base de datos...).
Yo espero que suceda lo mismo con el JDK. Si bien es cierto que han comenzado con mal pie. ¿Qué opináis vosotros?