Es una de las características más comentadas planeadas para Java: cierres. Muchos de nosotros los hemos estado anhelando. Algunos de nosotros (incluido yo) nos hemos impacientado un poco y hemos recurrido a los lenguajes de secuencias de comandos para llenar el vacío.
Pero, una vez que los cierres hayan llegado finalmente a Java: ¿cómo afectarán a la Comunidad Java? ¿El avance de los lenguajes de script dirigidos a VM se ralentizará, se mantendrá igual o se acelerará? ¿La gente acudirá en masa a la nueva sintaxis de cierre, convirtiendo así las bases de código Java en implementaciones más estructuradas funcionalmente? ¿Solo veremos cierres salpicados en Java en todo momento? ¿Cuál será el efecto en el soporte de herramientas / IDE? ¿Qué tal el rendimiento? Y finalmente, ¿qué significará para la adopción continua de Java, como lenguaje, en comparación con otros lenguajes que están aumentando en popularidad?
Para proporcionar un ejemplo de una de las últimas especificaciones de sintaxis de Java Closure propuestas:
public interface StringOperation {
String invoke(String s);
}
// ...
(new StringOperation() {
public invoke(String s) {
new StringBuilder(s).reverse().toString();
}
}).invoke("abcd");
se convertiría ...
String reversed = {
String s =>
new StringBuilder(s).reverse().toString()
}.invoke("abcd");
[fuente: http://tronicek.blogspot.com/2007/12/closures-closure-is-form-of-anonymous_28.html]
Respuestas:
Creo que a muchos desarrolladores de Java 'comunes' les tomará algún tiempo entender este concepto si aún no están familiarizados con él, pero gradualmente facilitará el uso regular de Java, para nuestro beneficio. Sería genial si se adoptara tan rápido como los genéricos cuando llegó Java 5.
Me imagino que no afectará tanto a los lenguajes de scripting dirigidos a VM, ya que es solo una ventaja de usar aquellos que lo tienen.
fuente
Hay un ciclo habitual que acompaña a cualquier herramienta nueva y brillante:
Todo esto lleva un par de años para completar el ciclo. Era cierto para las anotaciones y genéricos, y también será cierto para los cierres.
Impacto en la gente del lenguaje de script:
fuente
Aquellos que disfrutan de la programación de subprocesos múltiples podrán incorporar estructuras de datos inmutables en Java y manejarlas de una manera más parecida a la lisp sin la necesidad de recurrir a no secuestradores debido a la falta de coincidencia de impedancia del lenguaje entre Java y Lisp.
Aquellos que no usen (o comprendan) ninguno de los anteriores podrán hacer cosas como lo hicieron antes.
fuente
Sospecho que las personas que están familiarizadas con los cierres comenzarán a usarlos en el código de la aplicación. Los evitarán en las bibliotecas por un tiempo para mantener la compatibilidad con versiones anteriores de Java.
Los programadores que no estén familiarizados con los cierres de otros lenguajes tardarán en adoptarlos en Java.
Los genéricos se adoptaron rápidamente cuando se introdujeron en Java parcialmente debido a todas las advertencias que aparecieron cuando actualizó y debido a su incorporación al SDK. Esto no será cierto con los cierres. Será más difícil encontrar evidencia de su existencia, por lo que solo aquellos que quieran usarlos los usarán.
No creo que se detenga el desarrollo de otros lenguajes de script JVM. Esos lenguajes tienen impulso y muchas características además de los cierres. Sin embargo, podemos ver menos nuevos lenguajes JVM ya que los cierres fueron el ímpetu principal para crear nuevos lenguajes JVM.
fuente