The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск Java SE 26 и OpenJDK 26. Проект по интеграции поддержки JavaScript и Python в JVM

17.03.2026 22:23 (MSK)

После шести месяцев разработки компания Oracle опубликовала платформу Java SE 26 (Java Platform, Standard Edition 26), в качестве эталонной реализации которой используется открытый проект OpenJDK. За исключением удаления некоторых устаревших возможностей в Java SE 26 сохранена обратная совместимость с прошлыми выпусками платформы Java - большинство ранее написанных Java-проектов без изменений будут работоспособны при запуске под управлением новой версии. Готовые для установки сборки Java SE 26 (JDK, JRE и Server JRE) подготовлены для Linux (x86_64, AArch64), Windows (x86_64) и macOS (x86_64, AArch64). Разработанная в рамках проекта OpenJDK эталонная реализация Java SE 26 полностью открыта под лицензией GPLv2 с исключениями GNU ClassPath, разрешающими динамическое связывание с коммерческими продуктами.

Java SE 26 отнесён к категории выпусков с обычным сроком поддержки, обновления для которого будут выпускаться до следующего релиза. В качестве ветки с длительным сроком поддержки (LTS) следует использовать Java SE 25, Java SE 21 или Java SE 17, обновления для которых будут выпускаться до 2033, 2031 и 2029 годов соответственно (общедоступные - до сентября 2030, 2028 и 2026 годов). Расширенная поддержка LTS-ветки Java SE 8 продлится до 2030 года, а Java SE 11 - до 2032 года.

Среди изменений в Java SE 26 (1, 2, 3, 4):

  • Реализован вывод предупреждения при использовании глубокой рефлексии для изменения полей, помеченных ключевым словом "final". В будущем планируется отключить по умолчанию небезопасные возможности языка и, среди прочего, сделать поля, помеченные как final, полностью не изменяемые, убрав обходной путь для их изменения через глубокую рефлексию (API Reflection).
  • Удалён API Applet (java.applet.Applet*, javax.swing.JApplet), применявшийся для запуска Java-приложений в браузере. Данный API потерял актуальность после прекращения поддержка Java-плагина для браузеров и был объявлен устаревшим в 2021 году.
  • Реализована возможность использования предварительно формируемого кэша (AOT - ahead-of-time) c любыми сборщиками мусора, включая ZGC (Z Garbage Collector). Изменение подразумевает поддержку последовательной загрузки прокэшированных Java-объектов в память, используя универсальный и не зависящий от сборщиков мусора формат вместо прямого маппинга в память специфичных представлений кэша. Использование AOT-кэша сокращает время запуска и ускоряет актуализацию (warmup) виртуальной машины HotSpot.
  • В API HTTP Client добавлена поддержка протокола HTTP/3, позволяющая приложениям и библиотекам обращаться к серверам по HTTP/3 после минимальных изменений кода.
  • Повышена производительность сборщика мусора G1, благодаря сокращению блокировок для синхронизации потоков приложения с потоками сборщика мусора.
  • Предложен второй предварительный вариант API для кодирования и декодирования объектов с криптографическими ключами, сертификатами и списками отозванных сертификатов, используя формат PEM (Pivacy-Enhanced Mail).
  • Предложен для тестирования шестой предварительный вариант API для cтруктурированного параллелизма (Structured Concurrency), упрощающего разработку многопоточных приложений за счёт обработки нескольких задач, выполняемых в разных потоках, как единого блока.
  • Добавлен вторая предварительная редакция API Lazy Constants для работы с объектами, содержащими неизменяемые данные и обрабатываемыми в JVM как константы. К подобным объектам применяются оптимизации производительности, аналогичные полям с ключевым словом "final". В отличие от "final" новый API разделяет создание постоянных значений и их инициализацию, гарантирует, что значение может быть инициализировано только один раз, сокращает время запуска программ и позволяет применять в пользовательском коде оптимизации сворачивания констант (constant-folding), ранее использовавшиеся только во внутреннем коде JDK.
    
       class Application {
           // Было:
           // static final UserService USERS = new UserService();
           // Теперь можно:
           static final StableValue<UserService> USERS = StableValue.of();
    
           public static UserService users() {
              return USERS.orElseSet(UserService::new);
           }
        }
    
  • В механизме сопоставления с образцом предложен четвёртый предварительный вариант возможности использования примитивных типов (int, byte, char и другие базовые типы, не являющиеся объектами) во всех видах шаблонов, в операторе "instanceof" и в блоках "switch".
    
       switch (x.getStatus()) {
           case 0 -> "okay";
           case 1 -> "warning";
           case 2 -> "error";
           case int i -> "unknown status: " + i;
       }
       if (i instanceof byte b) {
        ... b ...
       }
    
  • Предложена одиннадцатая тестовая реализация API Vector, предоставляющего функции для векторных вычислений, которые выполняются с использованием векторных инструкций процессоров x86_64 и AArch64 и позволяют одновременно применить операции сразу к нескольким значениям (SIMD). В отличие от предоставляемых в JIT-компиляторе HotSpot возможностей по автовекторизации скалярных операций, новый API даёт возможность явно управлять векторизацией для параллельной обработки данных.

Кроме того, компания Oracle анонсировала проект Detroit, который будет развиваться в составе OpenJDK и нацелен на улучшение переносимости между Java, JavaScript и Python. В рамках проекта намерены предоставить возможность встраивания в процесс JVM runtime с JavaScript-движком V8 и интерпретатором CPython. Ранее компания Oracle уже развивала JavaScript-движок Nashorn, работающий поверх виртуальной машины JVM, но свернула проект из-за проблематичности разрабатывать отдельную реализацию JavaScript в условиях, когда основная экосистема завязана на движке V8.

Дополнительно можно отметить публикацию обновления платформы для создания приложений с графическим интерфейсом JavaFX 26. В ближайшие часы также ожидается выпуск универсальной виртуальной машины GraalVM 26, поддерживающей запуск приложений на JavaScript (Node.js), Python, Ruby, R, любых языках для JVM (Java, Scala, Clojure, Kotlin) и языках, для которых может формироваться биткод LLVM (C, C++, Rust).

  1. Главная ссылка к новости (https://blogs.oracle.com/java/...)
  2. OpenNews: Выпуск Java SE 25 LTS и OpenJDK 25
  3. OpenNews: Доступна платформа Jakarta EE 11, продолжающая развитие Java EE
  4. OpenNews: Выпуск Java SE 24 и OpenJDK 24
  5. OpenNews: Выпуск Java SE 23 и OpenJDK 23
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/65009-java
Ключевые слова: java
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (12) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, мелстрой (-), 22:50, 17/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Почему бы jvm ещё и rust не загружать?
     
     
  • 2.2, Аноним (2), 23:01, 17/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Rust - это не среда исполнения
     
     
  • 3.4, Аноним (4), 23:04, 17/03/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 3.5, assfdfg (?), 23:09, 17/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    JVM это среда исполнения
     
  • 3.10, 12yoexpert (ok), 01:11, 18/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    расскажи это его рантайму
     
  • 2.6, Аноним (6), 23:13, 17/03/2026 [^] [^^] [^^^] [ответить]  
  • –2 +/
    кто тебе сейчас мешает на Rust сделать библиотеку и цеплять через JNI, балбес?
     
     
  • 3.12, 12yoexpert (ok), 01:12, 18/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    здравый смысл? критическое мышление? мозги? образование и знания?
     

  • 1.3, Аноним (4), 23:03, 17/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > четвёртый предварительный вариант возможности использования

    Может, сначала всё-таки надо определиться, а потом в релиз?

     
  • 1.7, 12yoexpert (ok), 00:17, 18/03/2026 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • –1 +/
     
  • 1.8, Аноним (8), 00:52, 18/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    GraalVM прям может запустить любое приложение написанное на Python? А web-приложение на Django?
     
  • 1.9, Аноним (9), 01:02, 18/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Сижу на Java 8, буду сидеть, и никакие силы не заставят слезть. Просто потому, что восьмёрка итак overkill по возможностям.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2026 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру