jspecify/jspecify
An artifact of fully-specified annotations to power static-analysis checks, beginning with nullness analysis. observed · 2026-09-03
Health v2 · maintenance only
87/100
- Activity 100
- Release rhythm 63
- Longevity 100
How is this computed?
round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10) — computed 2026-09-03. Adoption (stars, forks) is never an input.
- gap_med: n/a
- age_days: 2907
- days_rel: 35
- days_push: 1
- n_releases_24m: 1
Adoption not part of the score
1137 stars · 43 forks observed · 2026-09-03
What it is AI-extracted, prompt v1, taxonomy v1, 2026-08-30, confidence not recorded
JSpecify is a standard, tool-neutral set of Java annotations with precisely specified semantics for powering static analysis, currently focused on nullness analysis. It is developed by consensus of major JVM stakeholders (Google, JetBrains, Oracle, Sonar, and others) so library owners can annotate once and support many analysis tools.
Use cases
- annotate Java APIs with nullability so tools can catch NullPointerExceptions
- standardize nullness annotations across libraries instead of picking one tool's annotations
- make Kotlin and Java interop nullness-safe on the JVM
- build static analysis or bug-finding tools against a shared nullness spec
- document whether a type usage can be null in a machine-readable way
When to choose
- you maintain a Java/JVM library and want tool-independent nullness annotations
- you want consistent nullness semantics across Error Prone, NullAway, IntelliJ, Sonar, and Kotlin
- you are building a static analysis tool for JVM languages and want a standard to implement
When to avoid
- you need annotations for kinds of static analysis beyond nullness, which JSpecify does not yet cover
- your toolchain only supports a single vendor's annotation set and you cannot adopt new dependencies
- you work outside the JVM ecosystem
Facets
library · maturity stable
type-system developer-tools programming-languages developer-tools jvm nullness-analysis static-analysis annotations jvm-languages tool-neutral android
7 sources
- readme: https://github.com/jspecify/jspecify · fetched 2026-09-03 · 9a855f10c823
- homepage: https://jspecify.dev · fetched 2026-08-29 · a630ba450dea
- site_page: https://jspecify.dev/about · fetched 2026-08-29 · c2bd1eddcf46
- site_page: https://jspecify.dev/docs/start-here · fetched 2026-08-29 · a13d01767b31
- site_page: https://jspecify.dev/docs/api/org/jspecify/annotations/package-summary.html · fetched 2026-08-29 · a563c0421850
- site_page: https://jspecify.dev/docs/user-guide · fetched 2026-08-29 · bad8f0380e48
- site_page: https://jspecify.dev/docs/spec · fetched 2026-08-29 · 9311a9829e0f
Member repositories
| Repository | Role | Health v2 |
|---|---|---|
| jspecify/jspecify | main | 87 |
For agents
markdown · JSON · MCP: product_card(name="jspecify/jspecify")
Data as of 2026-08-30T08:39:29.467469+00:00 · Report a problem