jOOλ extends Java 8 with missing functional programming features: tuples, higher-arity functions, and enhanced sequential streams.
jOOλ (jOOL) is a Java library that extends the JDK 8 functional programming APIs with missing features from other functional languages. It provides tuple support, higher-arity functions, and a rich set of sequential stream operations to make Java code more expressive and concise. It solves the problem of verbose or incomplete functional constructs in standard Java.
Java developers using Java 8+ who write functional-style code and want more expressive tools, especially those familiar with streams, lambdas, and libraries like Scala or Kotlin collections.
Developers choose jOOλ because it seamlessly integrates with existing JDK APIs, adds only what's missing (no reinvention), and significantly reduces boilerplate—especially around checked exceptions and multi-parameter functions.
jOOλ - The Missing Parts in Java 8 jOOλ improves the JDK libraries in areas where the Expert Group's focus was elsewhere. It adds tuple support, function support, and a lot of additional functionality around sequential Streams. The JDK 8's main efforts (default methods, lambdas, and the Stream API) were focused around maintaining backwards compatibility and implementing a functional API for parallelism.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides type-safe tuples from Tuple1 to Tuple16, enabling clean modeling of multi-valued returns and function arguments, a feature missing in standard Java.
Extends JDK functions with Function1 through Function16, reducing boilerplate for operations with more than two parameters, as highlighted in the README.
Seq interface adds 50+ methods like concat, cycle, and SQL-style joins, making stream manipulations more expressive while maintaining order and simplicity.
Unchecked class wraps lambdas to transparently propagate checked exceptions, eliminating verbose try-catch blocks, as demonstrated with file handling examples.
Seq explicitly disables parallel streams, which restricts performance gains in data-intensive applications that could benefit from concurrent processing.
Adds a third-party library dependency, which may complicate builds and increase maintenance for teams preferring lightweight, vanilla Java solutions.
Introduces new constructs like tuples and extended functions, requiring developers to learn additional APIs beyond the JDK, potentially slowing onboarding.