Это масштабная и сложная проблема. В её решении помогает в первую очередь семантическое версионирование и механизм прекращения поддержки (deprecation).
В новой версии библиотеки некоторые компоненты API могут получать аннотацию
@Deprecated
. Функционально она не делает в программе ничего, но разработчик получит на этапе компиляции предупреждение: компонент устарел и не должен больше использоваться.Ранее мы уже писали об особенностях использования
@Deprecated
. Собираясь удалить компонент API, нужно прежде отметить его @Deprecated(forRemoval=true)
.Обычно разработчики библиотеки дают пользователю запас времени на миграцию. Они предоставляют Deprecation policy – документ, в котором дают обещание, сколько времени (или версий) после появления
@Deprecated
компонент всё еще не будет удален.Для поиска в коде использования deprecated компонентов комплект JDK содержит утилиту jdeprscan. Утилита
javadoc
собирает список устаревших компонентов в отдельную страницу deprecated-list.html
.