¿Qué hay de nuevo en Java 1.5 (y en C#)?

javalogo.jpgDesde el año pasado, en el sitio oficial de Java se adelantaban cuáles iban a ser las nuevas características que se iban a agregar al nuevo release de Java. En febrero de este año se publicó un artículo con un resumen de las nuevas características. Para esta fecha, la versión beta ya se encuentra disponible para ser descargada.

Personalmente, recibo con mucho agrado que finalmente se puedan definir tipos genéricos en Java.

Por razones académicas en 1998 estaba evaluando los mecanismos para la definición de clases genéricas en Java. Las opciones nativas se reducían al uso de la clase Object y el uso extensivo de castings. A nivel de investigación, me tope con trabajos como Generic Java (que había sido presentado en el OOPSLA de ese año y cuyo nombre de proyecto era "Pizza") y otros que básicamente proponían extensiones no oficiales para definir clases genéricas. En esos momentos noté que Generic Java fue adoptado como un JSR por el JCP. Finalmente, cinco años después, la especificación fue aceptada y agregada a la plataforma.

Los que han utilizado el conjunto de clases Colecciones (Vector, HashTable, HashMap, Set, List, Map...) saben que esto será un gran avance, debido a que estas clases estarán disponibles ahora en versiones genéricas. El problema de fondo que había impedido la inclusión de esta nueva característica es la compatibilidad con código anterior; además de la propia implementación de un soporte en compilación (y dependiendo de la solución escogida, también en tiempo de ejecución) para tipos genéricos.

Entre el resto de características nuevas se puede citar:

  • Revisión de las primitivas para concurrencia: Interesantísimo y muy útil para mí. Aún tengo que revisarlo.
  • Metadata en el código: lo asocio con JavaDoc, pero aparentemente permite definir metadatos que luego pueden ser obtenidos en tiempo de ejecución mediante reflexión (no se porque, pero me parece inspirado en todo el rollo de semantic web).
  • Sintaxis simplificada del código de ciclos si se utilizan iteradores
  • Sentencias de impresión al estilo de C (sí, con macros de formateo %s, %i, ...)

Para una explicación más detallada sobre las nuevas características recomiendo revisar este artículo.

Ahora bien, a la gente de Java le tomó unos cuantos años evaluar el impacto de agregar esta característica, que por razones de simplicidad de diseño del lenguaje fue descartada cuando se propuso Java. La gente de Microsoft, de manera muy descarada se copió la sintaxis y algunos conceptos claves de Java al momento de formular .NET y C#. Si revisan este link de Microsoft verán como desde Noviembre de 2003 se anuncia como innovación para C# el soporte a tipos genéricos.

Yo me pregunto: Si usaron Java como inspiración para C#, ¿por qué no agregaron capacidades de genericidad desde un principio?.

Otra historia de plagio al mejor estilo Microsoft.

vemeko | 2/04/2004 - 8:04 PM | Java+Desarrollo
El contenido de esta entrada puede ser utilizado según lo indicado en la licencia Creative Commons seleccionada para este blog.
5 Comentarios
Escribe un comentario









¿Recordar informacion personal?