Стратегия, которая хорошо сработала для нас, заключается в том, чтобы заранее решить, какие версии JRE мы будем поддерживать.Мы делаем это, учитывая платформы, используемые нашими пользователями, специфические для конкретной версии функции JRE, которые мы хотели бы использовать, и даты выпуска версий JRE.Все это делается в тесной консультации с нашим отделом поддержки клиентов.(Конечно, при прочих равных мы предпочитаем более новые выпуски, так как они имеют тенденцию к исправлению ошибок, оптимизации, обновлениям безопасности и т. Д.)
Затем это становится входом в наш процесс обеспечения качества.Наши усилия по тестированию должны охватывать все версии JRE, которые мы поддерживаем.
Наконец, мы используем возможность указывать конкретные версии JRE в файле JNLP при развертывании нашего приложения, чтобы гарантировать, что клиенты, которыепопробуйте запустить наше приложение с неподдерживаемой версией, чтобы получить «быстрый отказ» (с полезным сообщением о том, как получить правильную версию JRE), а не загадочные сбои в будущем.
Одна вещь, которую мы делаемминимизировать несовместимости - значит избегать недокументированных API (sun.misc
и т.конкретная версия JRE.Если такая ошибка обнаруживается достаточно рано, мы предпочитаем просто удалить эту версию JRE из списка поддерживаемых версий.