Управление совместимостью версий Java

Я прочитал это "JDKs обычно вперед-совместимы, и JREs, как правило, обратно-совместимы."

какую проверку версий делают разработчики Java в своих приложениях?

вы обновляете свой JDK с каждым выпуском?

Как минимизировать несовместимость между выпусками?

2 ответов


стратегия, которая хорошо сработала для нас, - это решить, какие версии JRE мы будем поддерживать. Мы делаем это, рассматривая платформы, используемые нашими пользователями, особенности версии конкретной JRE, которую мы хотели бы использовать, и даты выпуска версий JRE. Все это делается в тесной консультации с нашим отделом поддержки клиентов. (Конечно, при прочих равных мы предпочитаем более новые версии, поскольку они, как правило, имеют исправления ошибок, оптимизации, обновления безопасности, так далее.)

затем это становится входным сигналом в наш процесс QA. Наши усилия по тестированию должны охватывать все версии JRE, которые мы поддерживаем.

наконец, мы используем возможность указать конкретные версии JRE в файле JNLP при развертывании нашего приложения, чтобы гарантировать, что клиенты, которые пытаются запустить наше приложение с неподдерживаемой версией, получают "сбой-быстрый" опыт (с полезным сообщением о том, как получить правильную версию JRE), а не таинственные сбои вниз по дорога.

одна вещь, которую мы делаем для минимизации несовместимости, - это избегать недокументированных API (sun.misc, etc.).

явная проверка текущей версии JRE из вашего кода должна рассматриваться только как последнее средство для работы с известной ошибкой в конкретной версии JRE. Если такая ошибка обнаружена достаточно рано в процессе, мы предпочитаем, чтобы просто удалить версию JRE из списка поддерживаемых версий.


как минимизировать несовместимость между выпусками?

enter image description here

отчет генерируется с помощью japi-compliance-checker.