2010-01-22 4 views
10

Estoy leyendo acerca de los cierres que van a aparecer en Java 7.¿Puede alguien describir en pocas palabras las diferencias entre 3 propuestas de cierres y su estado actual en Java?

Y estoy un poco confundido porque de una parte hay muchos artículos agradables que describen nuevos cierres de java. Pero, por otro lado, había 3 especificaciones diferentes y algunos de los artículos simplemente están desactualizados porque no describen la última propuesta.

Por lo tanto, si alguien realiza un seguimiento del progreso de los cierres de java desde el principio, describa en términos generales muy brevemente las 3 propuestas y su estado actual.

Una cosa más que me pregunto acerca de los cierres es si existe una sola línea de desarrollo o si se están desarrollando diferentes versiones (como, cierres de Sun, de Google, de Apache, etc.).

+3

Estoy confundido también. Pero como máximo, una de esas propuestas se implementará en Java7, yo personalmente espero hasta que se decida y estudie el 'ganador' ... (http://stackoverflow.com/questions/116865/whats-the-current-state -of-closures-in-java) –

+0

@Andread_D: pero como sé, al menos una implementación ya existe. No estoy seguro de que esta sea la implementación que se incluirá en Java 7, pero he visto un enlace para descargarla. – Roman

+0

Tres propuestas? Hay al menos 50. –

Respuesta

6

si no recuerdo mal

CICE era simplemente un azúcar sintáctico para crear más fácilmente clases anónimas de una manera que parecía un cierre.

BGGA era una propuesta muy poderosa que permitía no solo cierres verdaderos, sino también sintaxis para definir estructuras que parecían nuevos elementos de sintaxis (también conocido como usar (Closable) {block}).

FCM era una propuesta adicional que intentaba ser un compromiso entre los dos, con una propuesta de cierre total, pero con una mejor sintaxis y sin algunas de las características más controvertidas de BGGA.

La propuesta actual se puede encontrar en http://www.javac.info/closures-v06a.html y http://www.javac.info/closures-v06b.html, donde la parte A es el costo total simple, y la parte B es una de las características más potentes tomadas de BGGA.

+0

Gracias, ya he visto esto pero no estaba seguro de que sea real. – Roman

+0

Si es posible, ¿podría compartir un ejemplo de código breve de cada propuesta y enlaces a las propuestas también? – Esko

+0

Ahh ... lo que podría haber sido ... ¡Esas propuestas parecen mucho mejores de lo que se nos está dando en Java 8! Resolverían los problemas que describo aquí: http://stackoverflow.com/a/20177092/1151521 ¡Y "Tipos de funciones"! Oh, ¡lo que no daría por ellos! –

2

Según lo que entiendo, Project Lambda, los cambios planificados para agregar lambdas (algunos de los cuales son cierres, y algunos cierres son lambdas) al lenguaje Java, serán una mezcla de las propuestas anteriores. La información actualmente más reciente disponible sobre la propuesta es 0.1 draft of the specification. Para mantenerse informado sobre el progreso, puede seguir las actualizaciones Mark Reinhold's.

Cuestiones relacionadas