{"id":16169357,"url":"https://github.com/jabrena/functional-rosetta-stone","last_synced_at":"2025-07-11T10:43:41.187Z","repository":{"id":42205437,"uuid":"171358482","full_name":"jabrena/functional-rosetta-stone","owner":"jabrena","description":"A repository to review the main concepts about Functional Programming with Java","archived":false,"fork":false,"pushed_at":"2024-07-21T08:39:19.000Z","size":25081,"stargazers_count":9,"open_issues_count":4,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-02T20:23:05.711Z","etag":null,"topics":["functional-programming","java","java-stream-api","java-streams"],"latest_commit_sha":null,"homepage":"https://jabrena.github.io/functional-rosetta-stone/","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jabrena.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/roadmap.pdf","authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-02-18T21:26:40.000Z","updated_at":"2024-06-22T13:03:32.000Z","dependencies_parsed_at":"2024-05-20T16:32:05.760Z","dependency_job_id":"e5ee287b-adf4-4133-ad58-329aff940338","html_url":"https://github.com/jabrena/functional-rosetta-stone","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/jabrena/functional-rosetta-stone","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jabrena%2Ffunctional-rosetta-stone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jabrena%2Ffunctional-rosetta-stone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jabrena%2Ffunctional-rosetta-stone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jabrena%2Ffunctional-rosetta-stone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jabrena","download_url":"https://codeload.github.com/jabrena/functional-rosetta-stone/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jabrena%2Ffunctional-rosetta-stone/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264787463,"owners_count":23663937,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["functional-programming","java","java-stream-api","java-streams"],"created_at":"2024-10-10T03:14:45.238Z","updated_at":"2025-07-11T10:43:41.139Z","avatar_url":"https://github.com/jabrena.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Functional Rosetta Stone\n\n[![Java CI](https://github.com/jabrena/functional-rosetta-stone/actions/workflows/maven.yml/badge.svg)](https://github.com/jabrena/functional-rosetta-stone/actions/workflows/maven.yml)\n\n![](./docs/rosetta_stone.png)\n\n## Goal\n\nA repository to review the main concepts about Functional Programming with Java.\n\n## How to build the project in local?\n\n```bash\nsdk env install\n./mvnw clean test -DexcludedGroups=performance,endtoend\n./mvnw clean test -DexcludedGroups=performance,endtoend -pl training\n./mvnw clean test -DexcludedGroups=performance,endtoend -Dtest=EitherTest -pl training\n./mvnw clean compile exec:java -Dexec.mainClass=\"info.jab.fp.concepts.FunctionalCompositionExamples\" -Dexec.args=\"--enable-preview\" -pl training\n./mvnw clean test -Dgroups=performance\n./mvnw clean test -Dgroups=endtoend\n\n./mvnw versions:display-property-updates\n./mvnw versions:display-dependency-updates\n./mvnw versions:display-plugin-updates\n./mvnw dependency:tree -pl problems \n```\n\n## Functional programming features in Java\n\n- [x] [Lambda Expressions](https://openjdk.org/jeps/126) (Functional interfaces, Functions, Supplier, Consumer \u0026 Predicates)\n- [x] [Optional](https://openjdk.org/jeps/401)\n- [x] [Stream API](https://openjdk.org/jeps/107) \u0026 [Gatherers](https://openjdk.org/jeps/461)\n- [x] [CompletableFuture](https://openjdk.org/jeps/266) \u0026 [Structural Concurrency](https://openjdk.org/jeps/453)\n- [x] [Immutable Lists](https://openjdk.org/jeps/269)\n- [x] [Sealed Classes](https://openjdk.org/jeps/409)\n- [x] [Pattern Matching for Switch](https://openjdk.org/jeps/441)\n- [x] [Records](https://openjdk.org/jeps/395) \u0026 [Record Patterns](https://openjdk.org/jeps/440)\n\n## Functional programming features\n\n- [x] Equational Reasoning\n- [ ] Pure/Impure functions\n- [ ] Referential Transparency\n- [ ] Immutability\n- [x] Functional composition\n- [x] Eager vs Lazy\n\n## How to run the presentation in local?\n\n```bash\njwebserver -p 9000 -d \"$(pwd)/docs/\"\n```\n\n## Performance\n\nUsing the [jmh-results.json](https://github.com/jabrena/functional-rosetta-stone/blob/master/docs/jmh-results.json) \nyou can review the performance results: \n\n- [https://jmh.morethan.io/](http://jmh.morethan.io/?source=https://raw.githubusercontent.com/jabrena/functional-rosetta-stone/master/docs/jmh-results.json)\n- https://nilskp.github.io/jmh-charts/\n- https://github.com/akarnokd/jmh-compare-gui\n\n## References\n\n- https://github.com/jabrena/latency-problems\n- https://github.com/forax/loom-fiber\n- https://cr.openjdk.org/~vklang/Gatherers.html\n- https://github.com/forax/we_are_all_to_gather\n- https://www.infoq.com/articles/data-oriented-programming-java/\n- https://inside.java/2024/05/23/dop-v1-1-introduction/\n- https://inside.java/2024/05/27/dop-v1-1-immutable-transparent-data/\n- https://inside.java/2024/05/29/dop-v1-1-model-data/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjabrena%2Ffunctional-rosetta-stone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjabrena%2Ffunctional-rosetta-stone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjabrena%2Ffunctional-rosetta-stone/lists"}