Java 11 официально выпущен, интерпретация новых функций

Java .NET JVM Oracle
Автор | Ян Сяофэн Редактор | Хэ Сяо, Сяо Чжи

26 сентября по пекинскому времени Oracle официально объявила об официальном выпуске Java 11. Это первый выпуск с долгосрочной поддержкой после значительного изменения цикла выпуска Java, и за ним стоит следить. Вы можете нажать на следующий адрес для немедленной загрузки:

https://www.oracle.com/technetwork/java/javase/downloads/index.html

В последнем выпуске Java11 будут представлены важные функции, такие как ZGC и HTTP-клиент, включая в общей сложности 17 JEP (предложения по улучшению JDK, предложения по улучшению JDK).

Помимо этих важных фич, на что еще стоит обратить внимание в Java 11? Java обновляется так часто, стоит ли вам подумать об обновлении? Инженеры должны продолжать учиться, должны ли они учиться? Приди и посмотри!


Неосознанно был выпущен JDK 11. Начиная с версии 9, JDK вошел в ритм обновлений, который делает людей неспособными к обучению. Для большинства инженеров Java это на самом деле отношения любви и ненависти. Быстрая эволюция Java означает, что он по-прежнему будет быть в состоянии поддерживать ядро ​​предприятия Статус технологической платформы, наши инвестиции в Java и наши рабочие места в безопасности, но в то же время это также вносит путаницу в обучение и выбор.

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

  • JDK так часто обновляется, стоит ли мне подумать об обновлении?В соответствии с новой моделью выпуска, какие корректировки необходимо внести в ИТ-стратегию предприятия?

  • Какие функции JDK 11 или более поздних версий JDK помимо того, что они крутые, действительно стоит использовать в производственной среде? Инженер хочет продолжить?

Что касается первого вопроса, я совершенно уверен, что JDK 11 будетПредприятия нельзя игнорироватьверсия.

Прежде всего, с точки зрения момента времени, выпуск JDK 11 происходит как раз перед истечением срока действия бесплатного обновления JDK 8, а JDK 9 и 10 также стали ""историческая версия", см. дорожную карту поддержки Oracle JDK ниже:

Важны ли обновления JDK? Очень важно, За последние много лет Oracle и сообщество OpenJDK предоставили почти бесплатный обед, заставив людей игнорировать огромную работу и ценность, стоящую за этим, включая, помимо прочего:

  • Последние обновления безопасности, такие как обновление и обслуживание инфраструктуры, такой как протоколы безопасности, а также своевременное исправление уязвимостей безопасности, являются одной из основ для превращения Java в основную инфраструктуру предприятия. Эксперты по безопасности знают, что даже при разработке серверных сервисов, не имеющих прямого доступа к интерфейсу, безопасность языка программирования по-прежнему остается главным приоритетом.

  • Большое количество новых функций, исправления ошибок, таких как поддержка контейнерной среды, улучшения в основных областях, таких как GC. Многие взломы в производственной разработке на самом деле могут быть решены путем обновления JDK.

  • Постоянно совершенствующаяся JVM, обеспечивающая почти нулевые затраты на оптимизацию производительности.

«Просто дешево»? Хотя прогресс Java «легко получить», не игнорируйте его ценность, которая обусловлена ​​молчаливыми усилиями производителей и сообщества OpenJDK.

Во-вторых, JDK 11 — это версия с долгосрочной поддержкой (LTS, Long-Term-Support).

Для предприятий Вариант 11 будет означать долгосрочную, надежную и предсказуемую технологическую карту. Некоторые люди говорят, что это для клиентов с платной подпиской. Вам не нужно учитывать 11, если вы не подписываетесь?

Нет, будьте уверены, 11 обязательно получит долгосрочную поддержку сообщества OpenJDK. В настоящее время Oracle предоставляет сборку OpenJDK. Хотя план дальнейших действий не определен, он обещает «поддерживать его по крайней мере до следующего года». Даже если выпуск последующих обновлений JDK11 будет остановлен, эксперты сообщества, такие как Эндрю Хейли, дали четкие гарантии того, что они сформируют и возглавят проект «JDK-11-updates», а также гарантируют:

«Пожалуйста, позвольте мне заверить вас в одном: будь то Oracle, Red Hat или кто-то еще, выпуски JDK LTS будут по-прежнему поддерживаться. Мы все много вложили в Java, и мы не позволим ей упасть».

Таким образом, LTS-версия будет версией, которую лица, принимающие решения в области корпоративных ИТ, смогут с уверенностью выбрать.

Возвращаясь ко второму вопросу, давайте посмотрим на прорывы в возможностях JDK 11, которые могут заставить нас почувствовать, что обновление до JDK 11 — это большая ценность.

С точки зрения JVM GC, JDK 11 представил два новых GC, в том числе, возможно, эпохальный ZGC. Хотя это все еще экспериментальная функция, это огромный прорыв для OpenJDK с точки зрения возможностей. Строгие требования предоставляют возможный вариант . Например, для некоторых корпоративных основных СХД и других продуктов, если можно гарантировать паузу GC не более 10 мс, надежность значительно повысится. вопрос можно и нельзя. Я полагаю, что вы уже знакомы со следующими данными.

Интерпретаций характеристик ZGC было много, и в этой статье мы не будем их повторять. Здесь я сосредоточусь на менее неясных, но более важных для производственной системы частях. Например, для G1 GC, по сравнению с JDK 8, обновление до JDK 11 предоставляет бесплатный доступ к: параллельному полному GC, быстрому сканированию CardTable, адаптивной регулировке занятости кучи (IHOP), выгрузке типов во время параллельной фазы маркировки и т. д. Это непрерывные улучшения для G1, в том числе серийный полный сборщик мусора и другие недостатки, которые широко критиковались.Вы обнаружите, что настройка и настройка сборщика мусора в JDK11 становятся все более и более удобными.

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

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

Какие еще инструменты мы используем для диагностики Java-приложений? JConsole, JProfiler или различные «собственные» инструменты? Большинство текущих инструментов предназначены для диагностики одного Java-приложения.Представьте, что в нашем кластере сотни или тысячи машин или контейнеров, и на каждой машине есть несколько или десятки процессов Java, тогда:

  • Как эффективно отслеживать большое количество процессов Java и точно определять пространство производительности, которое можно оптимизировать, не мешая работе производственной системы?

  • Как гарантировать «случайные» проблемы JVM без дополнительных, вызывающих головную боль «повторений»?

JDK 11 незаметно предоставляет нам более мощные базовые возможности, в основном в двух частях:

JEP 328: Бортовой самописец (JFR)Это мощная функция, исходный код которой Oracle только что открыл. Мы знаем, что существуют различные инструменты и фреймворки для профилирования в производственных системах с разных сторон, но большинство из них неудовлетворительны с точки зрения объема возможностей, надежности и накладных расходов.

JFR – это набор фреймворков механизма событий, интегрированных в JDK и JVM. Благодаря хорошо структурированной и разработанной фреймворку, экстремальной оптимизации на аппаратном уровне и тщательной проверке в производственной среде он может обеспечить исключительную надежность и низкие накладные расходы. В бенчмарках, таких как SPECjbb2015, максимальная потеря производительности JFR не превышает 1%, поэтому инженеры могут использовать его в больших распределенных производственных системах без какой-либо психологической нагрузки, а это значит, что мы можем активно открывать JFR в любое время для конкретных задач. , также можно позволить системе запускать JFR в течение длительного времени для анализа «постфактум» в сложных средах. Все еще нужно беспокоиться о воспроизведении случайных проблем? JFR значительно упрощает проблему.

На основе обеспечения низких накладных расходов JFR также предоставляет впечатляющие возможности, такие как:

  • Мы можем выполнять профилирование размещения объектов без BCI, и, наконец, нам не нужно беспокоиться о том, что BTrace и тому подобное зависают в процессе.

  • Очень детальный анализ конкуренции блокировок, блокировки, задержки, JVM GC, SafePoint и других областей.

  • Можно даже углубиться в JIT-компилятор, чтобы полностью понять методы работы с горячими точками, встраивание, деоптимизацию и многое другое.

  • JFR предоставляет стандартные API-интерфейсы Java, C++ и других расширений, которые можно настраивать и интегрировать с приложениями на различных уровнях, предоставляя комплексные решения для сложных стеков корпоративных приложений или сложных распределенных приложений.

И все это встроено в JDK и JVM, никаких дополнительных зависимостей не требуется, и работает из коробки.

С другой стороны, так же незаметноJEP 331: Low-Overhead Heap Profiling. Мы знаем, что эффективное понимание того, какие объекты размещены в куче Java, является одной из основных отправных точек для диагностики проблем с памятью. JEP 331 исходит из первой линии практики ведущих производителей в отрасли, таких как Google.Получение Call-site распределения объектов дополняет некоторые недостатки в диагностике распределения объектов для JDK.Инженеры могут использовать эту возможность для улучшения своих собственных инструментов через JVMTI.

С точки зрения разработки библиотеки классов Java, наибольший прогресс JDK 11 также наблюдается в двух аспектах:

Во-первых, редкий современный клиентский API HTTP/2, Java-инженеры наконец-то могут избавиться от старого HttpURLConnection. Новый HTTP API обеспечивает поддержку ведущих отраслевых стандартов, таких как HTTP/2, упрощенный и дружественный интерфейс API, а также эквивалентную или даже более высокую производительность по сравнению с основными API с открытым исходным кодом (такими как Apache HttpClient, Jetty, OkHttp и т. д.). В то же время это первая производственная практика JDK в Reactive-Stream, широко используемый Java Flow API и т. д., наконец, позволивший Java Стандартная библиотека классов HTTP отвечает потребностям современного Интернета с точки зрения возможностей расширения.

Во-вторых, это крупномасштабное обновление библиотек и стандартов классов безопасности, особенно JEP 332: Transport Layer Security (TLS) 1.3. Помимо важной ценности в области безопасности, это также проект JDK, возглавляемый китайским экспертом по безопасности Фэном. Xuelei, полностью отличающийся от предыдущего мастерства, это очень масштабный проект.

Кроме того, JDK все еще постепенно худеет или погашает исторические долги, такие как спецификации JVM и Java, такие как

  • 181: Nest-Based Access Control

    http://openjdk.java.net/jeps/181

  • 309: Dynamic Class-File Constants

    http://openjdk.java.net/jeps/309

  • 320: Remove the Java EE and CORBA Modules

    http://openjdk.java.net/jeps/320

  • 330: Launch Single-File Source-Code Programs

    http://openjdk.java.net/jeps/330

  • 335: Deprecate the Nashorn JavaScript Engine

    http://openjdk.java.net/jeps/335

  • 336: Deprecate the Pack200 Tools and API

    http://openjdk.java.net/jeps/336

Наиболее примечательным из них является JEP 335, который дополнительно разъясняет, что Graal, вероятно, станет основным выбором для эволюции JVM, а Java-on-Java шаг за шагом становится реальностью.

Есть ли сожаления по поводу JDK 11? Многие проекты, такие как Valhalla, Loom, Panama и т. д., продолжают восполнять недостатки, такие как сопрограммы, тип значения и т. д., которые все еще недоступны. свои недостатки., продолжают быстро развиваться.

С момента своего первого выпуска в 1995 году и до настоящего времени язык Java переживал взлеты и падения в течение 23 лет. За последние 23 года Java много лет подряд находилась в центре внимания, и за последние два года в Java произошел спад, который нельзя игнорировать. Является ли Java лучшим языком? Нет, для каждой области есть более подходящий язык программирования, и нет всемогущего существования.

Какие преимущества есть у языка Java, чтобы занять первое место в списке?

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

После того, как Java была изменена, чтобы выпускаться каждые шесть месяцев, она становилась все лучше и лучше с точки зрения слияния ключевых функций и быстрого получения отзывов от разработчиков.Мы явно видим увеличение инвестиций в Java со стороны различных производителей и сообществ. Хотя недавно выпущенный JDK 11 нельзя назвать эпохальным прогрессом, он должен быть важной версией в развитии JDK.Различные улучшения, такие как производительность, могут быть получены путем обновления JDK, а всесторонний прогресс и прорывы в основных возможностях все объяснено Пришло время начать оценку и начать планировать обновление до JDK 11.