Buscar
Social
Ofertas laborales ES
« j2ee-spider herramienta para generar codigo | Main | Unete a Kynetia »
martes
mar112008

¿Qué propuesta para closures crees que se debería añadir a Java? (Encuesta del mes)

Una clousure es una función anónima (que no tiene nombre) que se define en el cuerpo de otra función o método y que puede acceder a las variables locales de dicha función. Lo más parecido que tenemos en Java son las clases anónimas internas, aunque éstas sólo pueden acceder a las variables finales del método en el cual se definen.

Una de las ventajas de contar con esta construcción en Java sería la posibilidad de simplificar la gestión de eventos realizandola de un modo muy similar a C#: Actualmente para gestionar un evento, aunque sea uno tremendamente sencillo, tenemos que implementar una interfaz y por tanto crear una clase. En muchas ocasiones lo único que me importa de esa clase es un método donde se realiza la gestión del evento. Como la definición del método está predeterminada por la interfaz para pasarle información al método muchas veces acaba recurriendo a variables de la clase que gestiona el evento que se inicializan en el constructor.

Empleando closures sería posible simplemente escribir el código que gestiona el evento y punto, al estilo de los delegates de C#. Este modelo de gestión de eventos sería más sencillo que el actual, si bien menos potente.

Otras ventajas serían simplificaciones en el framework de Collections; ya no tendríamos que hacer que nuestras clases implementen la interfaz Comparable para tener colecciones de datos ordenadas. Y, si las closures hubiesen existido desde el principio, la interfaz Comparator, de obligado uso cuando queremos tener una colección de datos ordenados y no podemos modificar su clase base para que implemente Comparable, nunca hubiese existido.

Siento el ladrillo, pero después del resultado de la encuesta de este mes me sentía obligado. Parece que la mayor parte de los usuarios del portal no saben qué es una closure. Y, de entre los que lo saben, parece que prefieren que no se añadan a Java (opinión que hasta un buen punto comparto). De entre los que quieren closures se quedan con la propuestaCICE. Yo prefiero BGGA ya que supone hacer menos cambios al lenguaje (básicamente, lo que propone es una sintaxis más sencilla para las clases anónimas).

Comprendo que la gente no quiera que se añadan al lenguaje, porque soy de los que piensa que Java debería dejar de evolucionar (o al menos evolucionar muy lentamente) y que las innovaciones deberían de aparecer en otros nuevos lenguajes de la plataforma como Groovy o Escala.

¿Qué opináis vosotros? ¿Sí o no a las closures? ¿Y qué propuesta os convence más?

Reader Comments

There are no comments for this journal entry. To create a new comment, use the form below.
Comentarios deshabilitados
Comentarios deshabilitados en esta noticia.