JEP 212: Resolve Lint and Doclint Warnings

AuthorJoseph D. Darcy
OwnerJoe Darcy
Created2014/05/09 21:55
Updated2016/07/12 22:07
StatusClosed / Delivered
Discussionjdk9 dash dev at openjdk dot java dot net
Reviewed byBrian Goetz
Endorsed byBrian Goetz


The JDK code base contains numerous lint and doclint errors as reported by javac. These warnings should be resolved, at least for the fundamental parts of the platform.


Operationally, the goal is to have at least the packages for the fundamental packages in the platform (those discussed on core-libs, awt-dev, swing-dev, 2d-dev, etc.) compile cleanly under javac's lint and doclint warnings. It is desirable for other packages, such as those comprising JAXP, JAX-WS, and CORBA to also compile cleanly with all warnings enabled.

Success Metrics

A successful build of the sources in question when the -Xlint:all option is used for the javac command. A slightly weaker goal that may be acceptable is for all the source-related lint options to be enabled, but not the lint options for non-source properties. For example, some lint options concern properties of the javac command line rather than the sources being compiled.


This JEP proposes to complete efforts to fix warnings that have been underway in JDK 8 and JDK 9 as well as to formalize a subset of source-code improvements previously proposed to jdk9-dev. Most of the warnings are resolved by modifying the interior of method bodies. Resolving some of rawtypes warnings involves changing method signatures, such as changing a parameter type from a raw java.lang.Class to a java.lang.Class<?> or some more specific type. Any API changes will stay within the general evolution policy of the JDK.


A successful compile / build is the primary test for most changes, but the existing regression tests should continue to pass. Where a Java SE API has a signature change, the corresponding JCK signature test will need to be updated accordingly.


Resolving the deprecation warnings in the JDK would be eased if importing a deprecated type does not trigger a deprecation warning.