~/talk

JSpecify: Getting Rid of the Billion-Dollar Mistake in Java for Good This Time

Talkat JCON EUROPE 2026 · 2026-04-20..04-23· [java, documentation]
slides:none on file

JSpecify defines only four annotations (ternary nullable / non-null / unspecified), keeps runtime retention so annotations are transitive, and formalizes nullability as a type system rather than IDE hints. Successful enforcement requires compiler plugins like ErrorProne plus NullAway and compiler/module flags or a nullability Maven plugin. Kotlin callers will fail if annotations tighten APIs. Migration finds real bugs but can be time consuming — a small library migration took about five hours — and some tools still miss cases like nullable varargs, so runtime checks remain necessary.

AI-written summary · about

  1. 0:00Introduction and speaker intro
  2. 1:49What is JSpecify and its scope
  3. 4:57History of null-related annotations in Java
  4. 7:26JSpecify’s ternary null safety model
  5. 10:17Scoping null safety with annotations
  6. 12:48Formal type system behind JSpecify
  7. 14:52Practical example with IntelliJ warnings
  8. 18:02Enforcing null safety with NullAway
  9. 21:36Impact on Kotlin interoperability
  10. 22:39Configuring ErrorProne and NullAway
  11. 24:46Maven plugin for nullability checks
  12. 25:29Recommendations for new vs existing projects
  13. 27:59AI tools for null safety analysis
  14. 29:42Future of Java and JVM optimizations
  15. 31:51Closing remarks and Q&A
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.