digital-garden/source/доклады/Прокачка от 17 до 21. Большое путешествие к новой Java LTS.md
2024-06-13 21:01:37 +03:00

3.6 KiB
Raw Blame History

tags date zero-link author source
зрелость/🌱
2023-10-09
00 Разработка
Олег Чирухин Joker 2023
  • ==Виртуальные потоки==
  • Теперь есть метод для переворачивания List
  • Паттерн матчинг
  • 32 битная винда больше не поддерживается

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

Все вендеры, которые хотят называться Java (JDK) должны пройти эти тесты.

Шаблон для JEP

Теперь можно не создавать Main класс. На самом деле класс создается в момент компиляции.

jep 430. Интерполяция строк.

Record pattern Java 8

jep441

Scoped Values вместо ThreadLocal По факту те же ThreadLocal только с четко ограниченной областью действия.

Generational ZGC Научился работать с поколениями. Хранит их в разных местах. Будет чаще собирать молодые поколения.

Пример написания Java Agent

Virtual Thread Проблема старых тредов в том, что они базируются на обычных тредах ОС

Количество платформенных потоков ограничено количеством потоков ОС. Есть ThreadLocal. Они подходят для выполнения любых задач. Но они ограничены по ресурсам, и чтобы они заканчивались нужно заморочится.

Виртуальный поток не привязан к конкретному потоку ОС. При вызове блокирующей операции Java останавливает этот поток, до момента пока его можно будет вызвать. То есть мы освобождаем настоящий поток ОС, чтобы он не простаивал.

В виртуальных потоках не рекомендуется использовать ThreadLocal.

Подходят для выполнения задач, которые часто находятся в состоянии блокировки. Не подходят для выполнения длительных вычислений и систем в реальном времени.

В Quarkus есть аннотация для запуска на виртуальных потоках @RunOnVirtualThread

Пока ресурсов железа хватает никакой разницы нет. Когда железо заканчивается, то виртуальные треды начинают отрабатывать быстрее (раза в 2-3).