Вышла Java 21

Как и ожидалось, точно в срок была представлена Java 21. Ожидается, что большинство вендров представят свои сборки и предоставят по этой версии Long Term Support. Это значит, что по этой версии Java будут выпущены все основные на ближайшие 2 года книги, мануалы и туториалы, обновятся все библиотеки (Guava, Eclipse, JUnit) и фреймворки (Spring, Tomcat, Jetty и прочая), а также вскоре появится и сертификация программистов от Оракла (Oracle Certified Programmer) по этой версии.

Список реализованных JEPов можно посмотреть на сайте. Но какие из них выглядят наиболее вкусными и интересными с точки зрения производительности и low-latency? На мой взгляд следующие:

JEP 439: Generational ZGC. Улучшения в сборщике мусора ZeroGC нацеленным на повышение его производительности и снижение latency.

JEP 444: Virtual Threads. Улучшение работы с множеством кодом, где много потоков, которые собственно самих реальных потоков столько не требуется. Здесь вряд ли мы увидим какие-то высокие достижения в производительности и latency, но многопоточный код стало писать чуть удобнее.

Далее то, что попало в релиз, но находистя все еще в стадии Preview:

JEP 422: Foreign Function & Memory API (Third Preview). Продолжение альтернативы JNI. Когда это все достигнет стадии релиза JNI уже будет не нужен, хотя уверен, что во многих ваших системах JNI проторчит еще очень и очень долго просто потому, что переписывать лениво, либо — некому.

JEP 448: Vector API (Sixth Incubator). Доступ к векторным функциям процессоров. Пригодится тем, кто в торговых системах на Java делает сложные математические расчеты: вычисляет цены опционов, моделирует вероятностные процессы, стандартные отклонения, волатильности и прибыльности облигаций.

JEP 453: Structured Concurrency (Preview). Все те же улучшения нацеленные на упрощение написания многопоточных приложений.

Ссылки

2 комментария на “Вышла Java 21

  1. Kyryl Rybkin

    Привет! JEP 444: Virtual Threads — это история про остановку выполнения и продолжение (continuation)? Получается что мы инвалидируем cache cpu, загружаем новые даннык из памяти для того что бы код был лаконичнее. Virtual Threads — это про удобство в разработке?

    Нравится 1 человек

    1. alexk Автор записи

      да. но не все приложения в торговле связаны с low-latency. Иногда ради лаконичности и понятности кода в некоторых случаях можно пожертвовать и latency. например, приложения хранящие reference data. Им надо загрузить каждое утро при старте тысячи инструментов из базы данных и если это займет на 5 минут дольше, а код будет понятнее, то это терпимый trade-off

      Нравится 2 людей

Оставьте комментарий