Каждый выпуск Swing что-то ломал для нас, от 1,3 до 1,6.
Проблема JDBC уже упоминалась, но существующий код сработал.
С 1.5 до 1.6 произошло изменение в поведении Сокета, которое сломало клиент Cisco.
Конечно, были введены новые зарезервированные ключевые слова.
Самым большим, что, на мой взгляд, было непростительно для Солнца, был System.getenv (). Он работал в версии 1.0, а затем был объявлен устаревшим и изменен, чтобы выдавать ошибку на всех платформах под довольно сомнительным обоснованием того, что Mac не имеет системных переменных среды. Затем Mac получил системные переменные окружения, поэтому в 1.5 он был устаревшим и работал. Нет разумных оснований для этого. Верните пустой набор на Mac (у Swing гораздо больше кросс-платформенных проблем, если вы хотите позаботиться об этом уровне кроссплатформенности) или даже на всех платформах.
Я никогда не соглашался с тем, что они отключали эту функцию, но чтобы изменить ее на ошибку, это было просто чистым изменением, и если бы они собирались это сделать, им следовало бы просто полностью удалить метод.
Но на самом деле от 1.0 до 1.1 они были меньше озабочены обратной совместимостью. Например, они удалили «частную защиту» как модификатор.
Итак, в итоге каждая версия изменяется достаточно, чтобы требовать тщательной оценки, поэтому вы все еще видите много вопросов 1.4 здесь, на SO.