La Java Tutoriales para las Expresiones Lambda dice siguientes:

Esta sección se describen las características incluidas en el Proyecto Lambda, que tiene como objetivo
para apoyar la programación en un multinúcleo medio ambiente mediante la adición de cierres
y funciones relacionadas con el lenguaje Java.

Mi pregunta es, ¿qué ventajas concretas tengo con las Expresiones Lambda de acuerdo a los sistemas multinúcleo y concurrente/programación paralela?

lambdafaq.org/why-are-lambda-expressions-being-added-to-java «La ventaja de que este cambio trae es que las colecciones de ahora puede organizar su propio iteración internamente, transfiriendo la responsabilidad de la parallelisation desde el código de cliente en el código de la biblioteca.«

OriginalEl autor GedankenNebel | 2013-06-07

3 Comentarios

  1. 8

    Paralelismo es trivial para implementar por ejemplo, si usted tiene una colección y la implementación de un lambda así:

    collection.map { //my lambda }

    a continuación, la colección en sí puede compaginar esa operación sin necesidad de tener que hacer la rosca, etc. a ti mismo. El paralelismo que se maneja dentro de la colección map() aplicación.

    Puramente funcional (es decir, sin efectos secundarios) del sistema, usted puede hacer esto para cada lambda. Para un no-funcional en entorno tendrías que seleccionar las funciones lambda para que esto se podría aplicar (desde su lambda no puede operar de forma segura en paralelo). por ejemplo, en la Scala tienes que explícitamente tomar la vista paralela en una colección con el fin de implementar la anterior.

    Sólo para agregar a su respuesta: esta habilidad para paralelizar no es específico de las lambdas pero a functors, es decir, la encapsulación de la lógica de procesamiento en un objeto. Con las versiones anteriores de Java que ya se podía hacer eso, pero era torpe…;) Así que lambdas son sólo un gran azúcar sintáctico para escribir functors, especialmente de un tiro functors.
    es un poco engañoso llamar lambdas azúcar sintáctico. Se implementan de manera muy diferente a las clases internas anónimas, que hubiera sido la anterior «torpe» opción. En última instancia, van a ser mucho más eficiente en parallelising (algunos) de código para sistemas multinúcleo.
    Muy interesante, la forma en que son implementadas en Java? Debido a que en C# lambdas se compilan como clases y métodos, el único tipo de functor un bajo nivel de la plataforma de apoyo. El cierre de la parte que se maneja a través de los campos. Como .Neto y el JRE son plataformas similares, a pesar de que debe ser similar…
    Buscando en Java 8 (salida temprana), que están implementados como clases anónimas. No estoy seguro de si ese es el final aplicación
    Hasta donde yo sé (he leído temprano especificaciones de proyecto Lambda), anónimo interior se utilizan las clases en Java.

    OriginalEl autor Brian Agnew

  2. 2

    Con pleno respeto a Java 8 función lambda y de las intenciones o de los desarrolladores, me gustaría preguntar: ¿cuál es la nueva y por qué es mejor que la tradicional interfaz de método/función de enfoque? Por qué es mejor que (supongamos) forEach(IApply) donde:

    IApply es la interfaz de

    public interface IApply {
        void exec(KEY key, VALUE value);
    }

    Cómo se impide el paralelismo? Al menos la aplicación de IApply pueden ser reutilizados, heredado(extendido), a ser implementado en la clase estática.

    El último argumento es importante después de que decenas de ejemplos de errores de juniors que he visto, que la señorita que lambda código tiene acceso a este exterior de la clase puede ser una causa de la clase permanece en la memoria después de la de referencia distintos a es nulo ya.

    Desde este punto de vista la referencia a los miembros estáticos de una clase son muy importantes (son analogías de un caso de C# «delegado». Y principalmente – de un lado – lambda es super encapsulación, de otro no reutilizables, y al mismo tiempo – la violación de los principios básicos de la INUNDACIÓN de la cultura: el libre acceso a máster miembros. Desde el punto de vista de la cultura de la programación inversa a 70-th años del siglo pasado.

    La programación funcional? -Ya veo, pero ¿por qué la mezcla es la programación orientada a objetos, fenómenos de Java es. INUNDACIÓN ha maravilloso patrón de Datos con nombre en el Comportamiento de disociación, que elegantemente ofrece las mismas posibilidades? El argumento es el mismo, como en Java Script …nu, de verdad! Así se dará herramientas para integrar Java Script en Java y escribir fragmentos de sistema en Java Script. Así que no veo realmente mucho beneficios reales, como las hay en la onda de la publicidad.

    OriginalEl autor Simon

Dejar respuesta

Please enter your comment!
Please enter your name here