Die NullPointerException ist nach wie vor einer der häufigsten Laufzeitfehler in Java-Anwendungen.
Das eigentliche Problem ist selten der einzelne vergessene Check, sondern dass an keiner Stelle festgehalten ist, welche Werte überhaupt null sein dürfen und welche nicht.
Diese Information steckt bestenfalls im Kopf der Entwickler oder in der Dokumentation, aber nicht im Typsystem.
JSpecify ist ein herstellerübergreifender Satz von Annotationen, der genau diese Information ausdrückt.
Mit Spring Framework 7 und Spring Boot 4 ist das gesamte Spring-API mit diesen Annotationen versehen.
Damit die Annotationen nicht nur Dokumentation bleiben, braucht es ein Werkzeug, das sie prüft.
Im Maven-Build übernimmt das Error Prone zusammen mit dem NullAway-Plugin von Uber.