streams programación programacion lambdas funcional curso con java functional-programming

programacion - Programación Funcional en Java



programacion funcional java (12)

¿Hay una buena biblioteca para la programación funcional en Java?

Estoy buscando cosas como Predicate y List.Find() (como un método estático). No es complicado de implementar, pero sería bueno encontrar una biblioteca reutilizable aquí.


Bibliotecas de Java

Hay bibliotecas que pueden ayudarlo a hacer esto, ya haciendo el trabajo por usted y ocultando las cosas arcanas:

Bibliotecas Maduras / Establecidas

Bibliotecas más oscuras / experimentales

Esto le permitirá escribir código Java con un enfoque más funcional y posiblemente con una sintaxis y semántica más familiar, como se esperaría de un lenguaje competente en FP. Dentro de lo razonable, eso es.

Lenguajes JVM

Y, obviamente, puedes implementar un lenguaje funcional sobre Java. Para que luego puedas usar ese como tu lenguaje de FP. Lo que es un poco de un nivel de abstracción más alto de lo que pediste, pero relativamente dentro del contexto (aunque estoy engañando un poco aquí, concedido).

Por ejemplo, echa un vistazo a:

Lenguas bastante maduras

Idiomas menos maduros o más oscuros

Otras lecturas

También es posible que desee leer o ver estos artículos o videos:

Tomado de mi respuesta P.SE a " ¿Es posible la programación funcional en Java? "


Apache Commons tiene un código funcional-ish. Ver por ejemplo, la interfaz de Predicate .




Scala se mencionó aquí, pero hay un lenguaje mucho más ligero y más compatible con Java: Xtend . Se compila a Java simple y usa el mismo sistema de tipos. Tiene un gran soporte de Eclipse. Puede mezclar archivos .java y .xtend en un solo proyecto.

Código de muestra:

def static void main(String[] args) { val s = #[1,2,3].map[it+43].join(", ") println(s); }


Si quieres una solución Java pura, echa un vistazo a lambdaj

lambdaj

Además de la posibilidad de definir y usar el cierre en un estilo DSL, también permite manipular las colecciones de una manera funcional, sin tener que escribir explícitamente cierres o bucles.


Las colecciones de Google tienen una selección decente de métodos de utilidad de estilo de programación funcional. Algunas clases de interés son iterables, iteradores, funciones, funciones, etc.

¡También tiene un montón de clases de colección también!


Google Guava tiene funcional:

  • operaciones de cobro
  • construcciones de concurrencia (futuros)


FunctionalJava es la biblioteca más conocida; hace uso de los cierres de Java ( BGGA ) para ejemplos:

final Array<Integer> a = array(1, 2, 3); final Array<Integer> b = a.map({int i => i + 42}); arrayShow(intShow).println(b); // {43,44,45}

EDITAR

Compruebe también lambdaj .

Seguir editando

BGGA es completamente opcional. Simplemente lo hace para una mejor sintaxis.


Jambda es otra biblioteca de FP. De la Jambda :

Jambda es un intento de proporcionar al mundo Java (TM) herramientas y conceptos de programación funcional (FP).

Los objetivos son varios:

  • Proporcionar a los programadores de Java construcciones FP expresivas.
  • Para proporcionar un puente para los programadores de Java en el mundo FP
  • Para ver hasta dónde se pueden estirar Java y los genéricos.

Este documento es un intento de introducir a los programadores de Java en el mundo de las PF y, al mismo tiempo, explicar algunas (o la mayoría) de las características de Jambda.


scala es un lenguaje de programación funcional que es totalmente compatible con java (se ejecuta a través de jvm). Ofrece una hermosa combinación de técnicas orientadas a objetos y técnicas funcionales, junto con muchas mejoras sobre java en genéricos y concurrencia. Algunos incluso dicen que podría reemplazar a java.