{"id":51183439,"url":"https://github.com/dfa1/zstd-java","last_synced_at":"2026-06-27T09:00:28.371Z","repository":{"id":367475878,"uuid":"1280651963","full_name":"dfa1/zstd-java","owner":"dfa1","description":"Java FFM (Foreign Function \u0026 Memory) bindings for zstd — hermetic zig build, dictionary support, zero-copy MemorySegment API","archived":false,"fork":false,"pushed_at":"2026-06-26T07:05:11.000Z","size":196,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-26T07:20:08.220Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dfa1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"docs/supported.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-25T19:58:12.000Z","updated_at":"2026-06-26T07:05:16.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/dfa1/zstd-java","commit_stats":null,"previous_names":["dfa1/zstd-java"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/dfa1/zstd-java","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dfa1%2Fzstd-java","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dfa1%2Fzstd-java/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dfa1%2Fzstd-java/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dfa1%2Fzstd-java/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dfa1","download_url":"https://codeload.github.com/dfa1/zstd-java/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dfa1%2Fzstd-java/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34847287,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-27T02:00:06.362Z","response_time":126,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2026-06-27T09:00:18.780Z","updated_at":"2026-06-27T09:00:28.354Z","avatar_url":"https://github.com/dfa1.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# zstd-java\n\n[![CI](https://github.com/dfa1/zstd-java/actions/workflows/ci.yml/badge.svg)](https://github.com/dfa1/zstd-java/actions/workflows/ci.yml)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=dfa1_zstd-java\u0026metric=alert_status)](https://sonarcloud.io/summary/new_code?id=dfa1_zstd-java)\n[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=dfa1_zstd-java\u0026metric=coverage)](https://sonarcloud.io/summary/new_code?id=dfa1_zstd-java)\n[![Maven Central](https://img.shields.io/maven-central/v/io.github.dfa1.zstd/zstd.svg?label=Maven%20Central)](https://central.sonatype.com/artifact/io.github.dfa1.zstd/zstd)\n![zstd](https://img.shields.io/badge/zstd-1.5.7-green.svg)\n![Java](https://img.shields.io/badge/Java-25%2B-orange.svg)\n[![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](LICENSE)\n\n**zstd-java** is a Java wrapper for [Zstandard](https://github.com/facebook/zstd)\nbuilt on the **Foreign Function \u0026 Memory (FFM) API** — no JNI, no `sun.misc.Unsafe`.\nIt targets **JDK 25+** (for stable `java.lang.foreign`) and leads with the\nfeature missing from most JVM zstd bindings: **dictionary compression**, trained\nstraight from your own data.\n\n\u003e **AI-assisted development:** This project uses Claude Code for implementation —\n\u003e C header mapping, test generation, docs. Architecture, API design, and all\n\u003e decisions are human-driven.\n\n## Documentation\n\nThe docs follow the [Diátaxis](https://diataxis.fr) framework:\n\n| | Purpose | Start here |\n|---|---|---|\n| **[Tutorial](docs/tutorial.md)** | Learning by doing | Clean checkout → first round-trip |\n| **[How-to guides](docs/how-to.md)** | Solving a specific task | Hot paths, dictionaries, zero-copy, self-built lib |\n| **[Reference](docs/reference.md)** | Looking up facts | Platforms, API surface, symbol coverage, build |\n| **[Explanation](docs/explanation.md)** | Understanding the why | Why FFM + Zig, when zero-copy pays, benchmarks |\n\nArchitecture decisions are recorded as [ADRs](adr/ADR.md) (MADR 3.0) — the\nfoundational choices and their trade-offs, one file per decision.\n\n## Install\n\nThe `zstd` jar is pure Java and ships no `libzstd` — you always pair it with a\nnative artifact. Two ways:\n\n**1. Everything, any platform** — one dependency on `zstd-platform`, an empty jar\nthat transitively pulls the bindings plus all six natives (~3.8 MB). Zero choices;\nthe build runs on any OS/arch.\n\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003eio.github.dfa1.zstd\u003c/groupId\u003e\n  \u003cartifactId\u003ezstd-platform\u003c/artifactId\u003e\n  \u003cversion\u003e0.4\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n**2. Leaner, one platform** — import `zstd-bom` to pin versions, then take `zstd`\nplus only the `zstd-native-\u003cclassifier\u003e` you target.\n\n```xml\n\u003cdependencyManagement\u003e\n  \u003cdependencies\u003e\n    \u003cdependency\u003e\n      \u003cgroupId\u003eio.github.dfa1.zstd\u003c/groupId\u003e\n      \u003cartifactId\u003ezstd-bom\u003c/artifactId\u003e\n      \u003cversion\u003e0.4\u003c/version\u003e\n      \u003ctype\u003epom\u003c/type\u003e\n      \u003cscope\u003eimport\u003c/scope\u003e\n    \u003c/dependency\u003e\n  \u003c/dependencies\u003e\n\u003c/dependencyManagement\u003e\n\n\u003cdependencies\u003e\n  \u003cdependency\u003e\n    \u003cgroupId\u003eio.github.dfa1.zstd\u003c/groupId\u003e\n    \u003cartifactId\u003ezstd\u003c/artifactId\u003e\n  \u003c/dependency\u003e\n  \u003cdependency\u003e\n    \u003cgroupId\u003eio.github.dfa1.zstd\u003c/groupId\u003e\n    \u003cartifactId\u003ezstd-native-osx-aarch64\u003c/artifactId\u003e\n    \u003cscope\u003eruntime\u003c/scope\u003e\n  \u003c/dependency\u003e\n\u003c/dependencies\u003e\n```\n\nClassifiers: `osx-aarch64`, `osx-x86_64`, `linux-x86_64`, `linux-aarch64`,\n`windows-x86_64`, `windows-aarch64`. Gradle and more detail in the\n[tutorial](docs/tutorial.md). Requires JDK 25+ and\n`--enable-native-access=ALL-UNNAMED` at runtime. Building from source is for\ncontributors — see the [reference](docs/reference.md).\n\n## License\n\n[BSD 3-Clause](LICENSE) — the same primary license as zstd, which is bundled\nunder its BSD terms (zstd is dual BSD / GPLv2, © Meta Platforms, Inc.).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdfa1%2Fzstd-java","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdfa1%2Fzstd-java","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdfa1%2Fzstd-java/lists"}