30 de octubre de 2011

Bugs en la JVM HotSpot con Java 7

Hasta hoy me enteré que, cuando se liberó Java 7, la JVM HotSpot tenía algunos bugs, los cuales fueron rápidamente publicitados en Internet. Hasta donde entiendo, también Java 6 está afectado pero, creo, sólo si se habilitan las optimizaciones más agresivas de la máquina virtual.

Me enteré de esto leyendo el PDF de la presentación "Java 7 and Lucene: the story behind the story", presentada en el Apache Lucene Eurocon Barcelona 2011. Al parecer son tres bugs relacionados con la optimización de ciclos.

El problema ya quedó resuelto con la versión Java 7u1 y Java 6u29, según el autor de la presentación. Sin embargo, agrega una recomendación final:
Of course, there is still the recommendation not to use -XX:+AggressiveOpts on any JVM in production!
Espero los siguientes libros te sean útiles (lista automática):

23 de octubre de 2011

Cuándo usar Enterprise Java Beans (EJBs)

No hay duda que existen muchas aplicaciones de Java que utilizan los EJBs (Enterprise Java Beans) sin realmente necesitarlos. Oracle/Sun recomienda usar los EJBs cuando:
La aplicación necesita ser ESCALABLE.
Para atender a un número creciente de usuarios, puede ser necesario distribuir los componentes de la aplicación en múltiples máquinas. No sólo los enterprise beans de una aplicación pueden ejecutarse en diferentes máquinas, sino que también su localización permanecerá transparente a los clientes.
La aplicación debe asegurar la INTEGRIDAD DE LOS DATOS.
Los enterprise beans soportan transacciones, el mecanismo que administra el acceso concurrente a los objetos compartidos.
La aplicación atenderá DIVERSOS CLIENTES.
Con sólo unas pocas líneas de código, los clientes remotos pueden localizar fácilmente los enterprise beans. Estos clientes pueden ser ligeros, diferentes y numerosos.
¿Cuántas de las aplicaciones que usan EJBs cumplen con al menos uno de estos los requisitos?

Referencia: The Java EE 6 Tutorial > Part IV Enterprise Beans > Chapter 14 Enterprise Beans > What Is an Enterprise Bean? > When to Use Enterprise Beans, Oracle Corporation, 2010. (Archived by WebCite® at http://www.webcitation.org/62YhPq2TY)

21 de octubre de 2011

¿GlassFish con Java 7? Todavía no, según Oracle

Actualización: Ahora sé que había un bug en la JVM HotSpot de Java 7.

Alguien quería poner en producción un servidor GlassFish 3.1.1 usando Java 7. Sin embargo, se sorprendió al saber que Java 7 todavía no está disponible para los usuarios finales. En el sitio sitio oficial Java.com aparece el siguiente texto: 
¿Por qué no está todavía disponible Java SE 7 en java.com/es?

La nueva versión de Java estará disponible en primer lugar para los desarrolladores a fin de garantizar que no existen problemas importantes. Posteriormente, la descarga de la versión más reciente estará disponible para los usuarios finales en el sitio web www.java.com/es.

Novedades de Java SE 7. Oracle Corporation. (Archivado el 2011-10-21 por WebCite® en http://www.webcitation.org/62bsWw6lP)
Me llama la atención la frase "a fin de garantizar que no existen problemas importantes". Es decir que, a pesar de que la comunidad que desarrolla GlassFish liberó la versión 3.1.1 específicamente para poder usar Java 7, Oracle considera que éste último todavía no está listo.

Espero te sirvan los siguientes libros (lista automática):

5 de octubre de 2011

Java Duke: modelos en 3D

http://www.brussels-jug.be/?p=813

Java Duke: imágenes en 2D

http://duke.kenai.com/

Peor que no escribir comentarios


Peor que no escribir comentarios en el código fuente, es dejar un comentario erróneo. —Autor desconocido.

Lo peor de un bug aleatorio


Lo peor de un bug aleatorio, es que nunca sabes si ya lo arreglaste. —Arturo Tena.

La última falacia del programador


La última falacia del programador: Ya acabé. —Arturo Tena.

Code talks


Code talks. —Arturo Tena.

El bug no está donde tú crees


El bug no está en donde tú crees. —Arturo Tena.

¡Hi-Ho, Hi-Ho, vamos a debuggear!


¡Hi-Ho, Hi-Ho, vamos a debugear! (con música de fondo: la canción que cantan los enanitos en la película Blancanieves y los Siete Enanitos) —Arturo Tena.

Barriga llena, programador contento

Barriga llena, programador contento. —Arturo Tena

Dí que es fácil

Cuando vayas a explicar algo difícil de entender, antes menciona que es fácil de entender. Así, la gente estará más dispuesta a escucharte. —Autor desconocido.

Un icono de engrane para la configuración y las opciones

El icono de un engrane es usado por los navegadores de Internet para significar la configuración y las opciones, lo que me parece muy acertado:

Microsoft Internet Explorer

Mozilla Firefox
Google lo usa en sus sitios web:

Sitios web de Google
Aunque Chrome no lo usa (todavía). En cambio, utiliza una llave inglesa, algo que me parece menos intuitivo que un engrane:


3 de octubre de 2011

Java: Cómo leer un atributo privado usando introspección

Hoy, necesité leer el valor de un atributo de instancia privado en un sistema Java EE. Mediante introspección, es fácil. La parte interesante está en jugar con el Security Manager.