Подтвердить что ты не робот

Java 8 обновление 151 или 152?

Есть две загрузки Java 8 на странице Oracle.

примечания к выпуску 152 отмечают две вещи более 151:

  • Улучшения производительности BigInteger.
  • Компиляторы принимают модификацию конечных полей вне методов инициализации

Последний кажется скорее комментарием по строкам "это ошибка, но не исправлена ​​в 8, она будет исправлена ​​в Java 9". Так что это относится и к версии 151, хотя это не упоминается.

Я не уверен в первом. Почему это не в 151? Я нахожу это очень расстраивающим. Две версии без четкого указания, какая из них "лучше" или "предпочтительная" версия для большинства разработчиков.

Отсюда мой вопрос: лучше ли использовать 152 в производстве или 151? Существуют ли какие-либо индикаторы, которые я могу или должен использовать, чтобы решить?

4b9b3361

Ответ 1

Общая идея состоит в том, что

  • 8u151 (тег jdk8u151-b12) - это выпуск исправления критического обновления (CPU)
  • 8u152 (тег jdk8u152-b16) является выпуском обновления набора обновлений (PSU)

От официального Oracle Разъяснения по процессору и PSU

Начиная с выпуска Java SE 7 Update 71 (Java SE 7u71) в Октябрь 2014 года, Oracle выпустит обновление критического обновления (CPU) на в то же время, что и соответствующее обновление набора исправлений (PSU) для Java SE 7.

Какую версию Java я должен выбрать: процессор или блок питания? Oracle настоятельно рекомендует, чтобы все пользователи Java SE обновлялись до новейшего процессора релиз, доступный для семейства релизов. Большинство пользователей должны выбрать Релиз CPU.

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

Последующий выпуск ЦП будет содержать все исправления из текущий блок питания. По этой причине организации должны Блок питания в их среде в ожидании включения этих исправлений в следующем CPU.

В чем разница между процессором Java и выпуском блока питания? Java SE Критические обновления исправлений (CPU) содержат исправления уязвимостей безопасности и критические исправления ошибок. Oracle настоятельно рекомендует, чтобы все Java SE пользователи обновляются до последних выпусков ЦП, поскольку они становятся доступными. Релизы Java SE CPU являются версиями с нечетным номером (т.е. 7u71, 7u65 - см. подробнее о схемах нумерации версий Java SE здесь).

Обновления обновления патча Java SE (PU) содержат все исправления в соответствующий ЦП, а также дополнительные некритические исправления. Java-блок питания релизы следует использовать, только если на вас воздействует одна из исправлены ошибки в этой версии. В примечаниях к выпуску вызывается дополнительные исправления, доступные в версиях Java SE PSU.

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

Также читайте В чем разница между нечетными и даже обновлениями Java?


Чтобы найти полный список общедоступных исправлений ошибок, вам нужно открыть страницу "Исправления ошибок" в нижней части примечаний к выпуску.


Таким образом, в блоке питания (8u152) исправлено 238 ошибок (не только улучшения производительности BigInteger). И есть большая вероятность того, что вы все равно получите большинство из них в следующем выпуске ЦП. Поэтому рекомендуется обновлять как можно быстрее до 8u151 и протестировать/настроить код для сравнения с 8u152. Вы можете обновить до 8u152, если вам действительно нужно исправление.

Ответ 2

На страницы загрузки Oracle

Java SE 8u151 содержит важные исправления ошибок. Oracle настоятельно рекомендует, чтобы все пользователи Java SE 8 обновились до этой версии. Java SE 8u152 - обновление исправления, включая все 8u151 плюс дополнительные функции (описанные в примечаниях к выпуску).

Что это означает для практических целей, так это то, что если вы полагаетесь на jdk8u144 для своего приложения, вы можете обновить до 151 и ожидать, что ничего не сломается.

Но если вы собираетесь обновиться и не особенно заботитесь об улучшениях, включенных в 152, вы можете продолжить.

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

Ответ 3

У меня есть две причины, чтобы предпочесть 8u151:

  • Настольный редактор Java для Windows обновляется до 8u151, когда я прошу его проверить наличие обновлений. Я интерпретирую это как "Oracle считает, что это версия, которую большинство людей хотят/должны иметь".

  • Улучшения производительности BigInteger, по-видимому, являются единственной разницей между 151 и 152. Если это изменение было хорошо протестировано и готово к выпуску, Oracle перевернула бы его на 151, чтобы избежать путаницы. Они этого не сделали.

Ответ 4

В общем, вот как я думаю, нужно выбирать между процессором или блоком питания... на основе Oracle Разъяснения процессоров и блоков питания (цитируется выше).

  • Если у вас есть критические Java-приложения 1 изначально выберите CPU через блок питания. ЦП имеет меньший риск обновления приложения.

    Затем вы планируете скоро перейти на БП. Причина в том, что следующий выпуск ЦП, скорее всего, будет включать усовершенствования в этом блоке питания. Если вы пропустите блок питания в этом цикле обновления, вы откладываете поиск/исправление любых неожиданных поломков до следующего (обязательного) CPU. Вы не можете предсказать, что это вызовет проблемы.

  • В противном случае, если вам нужны перечисленные усовершенствования блока питания, выберите блок питания через процессор.

  • Если ни одно из указанных выше не применяется, не имеет значения, что вы выбрали.

Обратите внимание, что это изображение, если у вас нет контракта на поддержку. Если у вас есть контракт на поддержку, могут быть другие варианты; например заплатив за Oracle, чтобы открутить ваши пользовательские патчи безопасности, которые могут позволить вам отложить установку улучшений... неопределенно.

Обратите внимание, что это идеализированный процесс принятия решений. На практике разработчикам программного обеспечения /devops часто приходится балансировать конкурирующие риски и графики без ресурсов для выполнения надлежащей работы.


По теме, почему Oracle не может дать вам четких советов....

  • Они не могут точно знать, что обновление производительности BigInteger не нарушит ваш код.

  • Они знают, что исправления компилятора могут изменить поведение кода некоторых людей (сломанного). Но нет простого способа идентифицировать этот сломанный код априори.

В любом случае они не знают, повлияют ли изменения в PSU на вас. Информация приведена в примечаниях к выпуску, чтобы вы могли принять решение. Они не предоставили вам явное дерево решений... но, учитывая характер изменений, наиболее практичным подходом является "попробовать его".

И это также объясняет, почему "самая знающая группа людей на Земле 2" также не может дать четких советов. Нет окончательного ответа.


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

2 - Потяните другой: он получил колокольчики!