{"adoption": {"forks": 174, "observed_at": "2026-08-28T04:06:16.463697+00:00", "stars": 2119}, "canonical_url": "https://ross.abutalabs.com/products/jool", "card": {"archived": false, "artifact_type": "library", "description": "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.", "domain": ["programming-languages", "developer-tools"], "enriched": true, "function": ["developer-tools"], "health_score": 20, "homepage": "http://www.jooq.org/products", "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "stable", "member_repos": ["jOOQ/jOOL"], "name": "jOOQ/jOOL", "platform": ["jvm"], "pushed_at": "2024-08-01T12:21:02+00:00", "repo": "jOOQ/jOOL", "stars": 2119, "tags": ["functional-programming", "tuples", "streams", "java-8", "sequential-streams", "lambda-extensions", "algorithms"], "topics": [], "urls": [], "use_cases": ["add tuple types to Java functional code", "use Function1 through Function16 in Java", "get Scala-like stream operations on Java Streams", "join, group, and fold sequential streams in Java", "write more expressive functional Java without parallelism", "zip, cycle, and window streams in Java 8+"], "what_it_is": "jOOλ is a small Java library that fills gaps in the JDK 8 functional APIs, adding tuple types (Tuple1-Tuple16), extended function interfaces (Function1-Function16), and a Seq interface that enriches sequential Streams with methods known from functional languages like Scala. It is part of the jOOQ open-source product series, licensed under Apache-2.0.", "when_to_avoid": ["you rely heavily on parallel streams, since Seq is strictly sequential", "you only need basic JDK Stream operations and no extra dependencies", "you need a full functional programming framework rather than lightweight extensions"], "when_to_choose": ["you want richer sequential Stream operations than the JDK provides", "you need type-safe tuples or higher-arity functions in Java", "your code is sequential and ordered and you don't need parallel streams"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/jool", "repo": "jOOQ/jOOL", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.463697+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:53:02.166610+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b6de49559e1bb2ff1de247dfbf8ff749d32ca3b2f785e844ccbf68d0c545f1e0", "fetched_at": "2026-08-28T04:06:16.463697+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jOOQ/jOOL"}, {"content_hash": "562a7d522bc688eecf4b465678136a271f8ca770776d453974e53edfc25aec40", "fetched_at": "2026-08-29T10:33:06.925780+00:00", "kind": "homepage", "missing": false, "url": "http://www.jooq.org/products"}, {"content_hash": "142f328a13809c1d00c03950e3f67ea33c0246581a5ea01b41004c137f06da85", "fetched_at": "2026-08-29T10:33:06.932383+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/doc/3.21/manual/getting-started/tutorials/jooq-in-7-steps"}, {"content_hash": "c5eab282f2ad93c4633ba4216bdcf2bb76941594d09e967998f05753aabf56ee", "fetched_at": "2026-08-29T10:33:06.934136+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/doc/latest/manual/getting-started/the-manual"}, {"content_hash": "ba6d52f4ddaab3b88753ba342d84f38725efeeed1ec0f7ef2496d4635578848a", "fetched_at": "2026-08-29T10:33:06.928703+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/download"}, {"content_hash": "d237f8493427820e7ef81a5c93a8dca46858a3e521895fd419aef22a7354a2be", "fetched_at": "2026-08-29T10:33:06.930731+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/faq"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.463697+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:53:02.166610+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b6de49559e1bb2ff1de247dfbf8ff749d32ca3b2f785e844ccbf68d0c545f1e0", "fetched_at": "2026-08-28T04:06:16.463697+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jOOQ/jOOL"}, {"content_hash": "562a7d522bc688eecf4b465678136a271f8ca770776d453974e53edfc25aec40", "fetched_at": "2026-08-29T10:33:06.925780+00:00", "kind": "homepage", "missing": false, "url": "http://www.jooq.org/products"}, {"content_hash": "142f328a13809c1d00c03950e3f67ea33c0246581a5ea01b41004c137f06da85", "fetched_at": "2026-08-29T10:33:06.932383+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/doc/3.21/manual/getting-started/tutorials/jooq-in-7-steps"}, {"content_hash": "c5eab282f2ad93c4633ba4216bdcf2bb76941594d09e967998f05753aabf56ee", "fetched_at": "2026-08-29T10:33:06.934136+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/doc/latest/manual/getting-started/the-manual"}, {"content_hash": "ba6d52f4ddaab3b88753ba342d84f38725efeeed1ec0f7ef2496d4635578848a", "fetched_at": "2026-08-29T10:33:06.928703+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/download"}, {"content_hash": "d237f8493427820e7ef81a5c93a8dca46858a3e521895fd419aef22a7354a2be", "fetched_at": "2026-08-29T10:33:06.930731+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/faq"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:53:02.166610+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b6de49559e1bb2ff1de247dfbf8ff749d32ca3b2f785e844ccbf68d0c545f1e0", "fetched_at": "2026-08-28T04:06:16.463697+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jOOQ/jOOL"}, {"content_hash": "562a7d522bc688eecf4b465678136a271f8ca770776d453974e53edfc25aec40", "fetched_at": "2026-08-29T10:33:06.925780+00:00", "kind": "homepage", "missing": false, "url": "http://www.jooq.org/products"}, {"content_hash": "142f328a13809c1d00c03950e3f67ea33c0246581a5ea01b41004c137f06da85", "fetched_at": "2026-08-29T10:33:06.932383+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/doc/3.21/manual/getting-started/tutorials/jooq-in-7-steps"}, {"content_hash": "c5eab282f2ad93c4633ba4216bdcf2bb76941594d09e967998f05753aabf56ee", "fetched_at": "2026-08-29T10:33:06.934136+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/doc/latest/manual/getting-started/the-manual"}, {"content_hash": "ba6d52f4ddaab3b88753ba342d84f38725efeeed1ec0f7ef2496d4635578848a", "fetched_at": "2026-08-29T10:33:06.928703+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/download"}, {"content_hash": "d237f8493427820e7ef81a5c93a8dca46858a3e521895fd419aef22a7354a2be", "fetched_at": "2026-08-29T10:33:06.930731+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/faq"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.463697+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.463697+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.463697+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:53:02.166610+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b6de49559e1bb2ff1de247dfbf8ff749d32ca3b2f785e844ccbf68d0c545f1e0", "fetched_at": "2026-08-28T04:06:16.463697+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jOOQ/jOOL"}, {"content_hash": "562a7d522bc688eecf4b465678136a271f8ca770776d453974e53edfc25aec40", "fetched_at": "2026-08-29T10:33:06.925780+00:00", "kind": "homepage", "missing": false, "url": "http://www.jooq.org/products"}, {"content_hash": "142f328a13809c1d00c03950e3f67ea33c0246581a5ea01b41004c137f06da85", "fetched_at": "2026-08-29T10:33:06.932383+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/doc/3.21/manual/getting-started/tutorials/jooq-in-7-steps"}, {"content_hash": "c5eab282f2ad93c4633ba4216bdcf2bb76941594d09e967998f05753aabf56ee", "fetched_at": "2026-08-29T10:33:06.934136+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/doc/latest/manual/getting-started/the-manual"}, {"content_hash": "ba6d52f4ddaab3b88753ba342d84f38725efeeed1ec0f7ef2496d4635578848a", "fetched_at": "2026-08-29T10:33:06.928703+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/download"}, {"content_hash": "d237f8493427820e7ef81a5c93a8dca46858a3e521895fd419aef22a7354a2be", "fetched_at": "2026-08-29T10:33:06.930731+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/faq"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.463697+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.463697+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:53:02.166610+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b6de49559e1bb2ff1de247dfbf8ff749d32ca3b2f785e844ccbf68d0c545f1e0", "fetched_at": "2026-08-28T04:06:16.463697+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jOOQ/jOOL"}, {"content_hash": "562a7d522bc688eecf4b465678136a271f8ca770776d453974e53edfc25aec40", "fetched_at": "2026-08-29T10:33:06.925780+00:00", "kind": "homepage", "missing": false, "url": "http://www.jooq.org/products"}, {"content_hash": "142f328a13809c1d00c03950e3f67ea33c0246581a5ea01b41004c137f06da85", "fetched_at": "2026-08-29T10:33:06.932383+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/doc/3.21/manual/getting-started/tutorials/jooq-in-7-steps"}, {"content_hash": "c5eab282f2ad93c4633ba4216bdcf2bb76941594d09e967998f05753aabf56ee", "fetched_at": "2026-08-29T10:33:06.934136+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/doc/latest/manual/getting-started/the-manual"}, {"content_hash": "ba6d52f4ddaab3b88753ba342d84f38725efeeed1ec0f7ef2496d4635578848a", "fetched_at": "2026-08-29T10:33:06.928703+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/download"}, {"content_hash": "d237f8493427820e7ef81a5c93a8dca46858a3e521895fd419aef22a7354a2be", "fetched_at": "2026-08-29T10:33:06.930731+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/faq"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.463697+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.463697+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.463697+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:53:02.166610+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b6de49559e1bb2ff1de247dfbf8ff749d32ca3b2f785e844ccbf68d0c545f1e0", "fetched_at": "2026-08-28T04:06:16.463697+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jOOQ/jOOL"}, {"content_hash": "562a7d522bc688eecf4b465678136a271f8ca770776d453974e53edfc25aec40", "fetched_at": "2026-08-29T10:33:06.925780+00:00", "kind": "homepage", "missing": false, "url": "http://www.jooq.org/products"}, {"content_hash": "142f328a13809c1d00c03950e3f67ea33c0246581a5ea01b41004c137f06da85", "fetched_at": "2026-08-29T10:33:06.932383+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/doc/3.21/manual/getting-started/tutorials/jooq-in-7-steps"}, {"content_hash": "c5eab282f2ad93c4633ba4216bdcf2bb76941594d09e967998f05753aabf56ee", "fetched_at": "2026-08-29T10:33:06.934136+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/doc/latest/manual/getting-started/the-manual"}, {"content_hash": "ba6d52f4ddaab3b88753ba342d84f38725efeeed1ec0f7ef2496d4635578848a", "fetched_at": "2026-08-29T10:33:06.928703+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/download"}, {"content_hash": "d237f8493427820e7ef81a5c93a8dca46858a3e521895fd419aef22a7354a2be", "fetched_at": "2026-08-29T10:33:06.930731+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/faq"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.463697+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:16.463697+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:53:02.166610+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b6de49559e1bb2ff1de247dfbf8ff749d32ca3b2f785e844ccbf68d0c545f1e0", "fetched_at": "2026-08-28T04:06:16.463697+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jOOQ/jOOL"}, {"content_hash": "562a7d522bc688eecf4b465678136a271f8ca770776d453974e53edfc25aec40", "fetched_at": "2026-08-29T10:33:06.925780+00:00", "kind": "homepage", "missing": false, "url": "http://www.jooq.org/products"}, {"content_hash": "142f328a13809c1d00c03950e3f67ea33c0246581a5ea01b41004c137f06da85", "fetched_at": "2026-08-29T10:33:06.932383+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/doc/3.21/manual/getting-started/tutorials/jooq-in-7-steps"}, {"content_hash": "c5eab282f2ad93c4633ba4216bdcf2bb76941594d09e967998f05753aabf56ee", "fetched_at": "2026-08-29T10:33:06.934136+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/doc/latest/manual/getting-started/the-manual"}, {"content_hash": "ba6d52f4ddaab3b88753ba342d84f38725efeeed1ec0f7ef2496d4635578848a", "fetched_at": "2026-08-29T10:33:06.928703+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/download"}, {"content_hash": "d237f8493427820e7ef81a5c93a8dca46858a3e521895fd419aef22a7354a2be", "fetched_at": "2026-08-29T10:33:06.930731+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/faq"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:53:02.166610+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b6de49559e1bb2ff1de247dfbf8ff749d32ca3b2f785e844ccbf68d0c545f1e0", "fetched_at": "2026-08-28T04:06:16.463697+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jOOQ/jOOL"}, {"content_hash": "562a7d522bc688eecf4b465678136a271f8ca770776d453974e53edfc25aec40", "fetched_at": "2026-08-29T10:33:06.925780+00:00", "kind": "homepage", "missing": false, "url": "http://www.jooq.org/products"}, {"content_hash": "142f328a13809c1d00c03950e3f67ea33c0246581a5ea01b41004c137f06da85", "fetched_at": "2026-08-29T10:33:06.932383+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/doc/3.21/manual/getting-started/tutorials/jooq-in-7-steps"}, {"content_hash": "c5eab282f2ad93c4633ba4216bdcf2bb76941594d09e967998f05753aabf56ee", "fetched_at": "2026-08-29T10:33:06.934136+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/doc/latest/manual/getting-started/the-manual"}, {"content_hash": "ba6d52f4ddaab3b88753ba342d84f38725efeeed1ec0f7ef2496d4635578848a", "fetched_at": "2026-08-29T10:33:06.928703+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/download"}, {"content_hash": "d237f8493427820e7ef81a5c93a8dca46858a3e521895fd419aef22a7354a2be", "fetched_at": "2026-08-29T10:33:06.930731+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/faq"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:53:02.166610+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b6de49559e1bb2ff1de247dfbf8ff749d32ca3b2f785e844ccbf68d0c545f1e0", "fetched_at": "2026-08-28T04:06:16.463697+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jOOQ/jOOL"}, {"content_hash": "562a7d522bc688eecf4b465678136a271f8ca770776d453974e53edfc25aec40", "fetched_at": "2026-08-29T10:33:06.925780+00:00", "kind": "homepage", "missing": false, "url": "http://www.jooq.org/products"}, {"content_hash": "142f328a13809c1d00c03950e3f67ea33c0246581a5ea01b41004c137f06da85", "fetched_at": "2026-08-29T10:33:06.932383+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/doc/3.21/manual/getting-started/tutorials/jooq-in-7-steps"}, {"content_hash": "c5eab282f2ad93c4633ba4216bdcf2bb76941594d09e967998f05753aabf56ee", "fetched_at": "2026-08-29T10:33:06.934136+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/doc/latest/manual/getting-started/the-manual"}, {"content_hash": "ba6d52f4ddaab3b88753ba342d84f38725efeeed1ec0f7ef2496d4635578848a", "fetched_at": "2026-08-29T10:33:06.928703+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/download"}, {"content_hash": "d237f8493427820e7ef81a5c93a8dca46858a3e521895fd419aef22a7354a2be", "fetched_at": "2026-08-29T10:33:06.930731+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/faq"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:53:02.166610+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b6de49559e1bb2ff1de247dfbf8ff749d32ca3b2f785e844ccbf68d0c545f1e0", "fetched_at": "2026-08-28T04:06:16.463697+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jOOQ/jOOL"}, {"content_hash": "562a7d522bc688eecf4b465678136a271f8ca770776d453974e53edfc25aec40", "fetched_at": "2026-08-29T10:33:06.925780+00:00", "kind": "homepage", "missing": false, "url": "http://www.jooq.org/products"}, {"content_hash": "142f328a13809c1d00c03950e3f67ea33c0246581a5ea01b41004c137f06da85", "fetched_at": "2026-08-29T10:33:06.932383+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/doc/3.21/manual/getting-started/tutorials/jooq-in-7-steps"}, {"content_hash": "c5eab282f2ad93c4633ba4216bdcf2bb76941594d09e967998f05753aabf56ee", "fetched_at": "2026-08-29T10:33:06.934136+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/doc/latest/manual/getting-started/the-manual"}, {"content_hash": "ba6d52f4ddaab3b88753ba342d84f38725efeeed1ec0f7ef2496d4635578848a", "fetched_at": "2026-08-29T10:33:06.928703+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/download"}, {"content_hash": "d237f8493427820e7ef81a5c93a8dca46858a3e521895fd419aef22a7354a2be", "fetched_at": "2026-08-29T10:33:06.930731+00:00", "kind": "site_page", "missing": false, "url": "http://www.jooq.org/faq"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4567, "days_push": 762, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}