Java 10: ключевые особенности и модель выпуска
Java 10 — важный релиз в-cadence выпуска Java, вышедший 20 марта 2018 года. С Java 10 Oracle изменила модель выпуска: теперь новые версии выходят каждые 6 месяцев, а для Oracle Java SE продуктов введена модель LTS (Long Term Support — длительная поддержка).
Каждый релиз содержит одну или две главные фичи. Используется концепция «release train» — фичи, не успевшие к дедлайну, переносятся на следующий поезд.
Oracle JDK vs OpenJDK
Большинство бинарников Oracle JDK проприетарны и имеют ограничения на перераспространение. OpenJDK более дружественен к сообществу разработчиков. С Java 10 Oracle сделала OpenJDK основным JDK для community-разработки. Oracle JDK будут выпускаться каждые 3 года как LTS-версии. OpenJDK-билды выходят каждые 6 месяцев.
OpenJDK удобен для облаков и контейнеров — его можно свободно распространять как часть контейнера. Это делает Java более привлекательной для cloud/container разработки.
Java 9 и 10 — не-LTS релизы. Java 11 — первый LTS-релиз в новой модели.
Новые возможности (JEP)
- JEP 286 — Local Variable Type Inference (вывод типов локальных переменных, ключевое слово
var). - JEP 322 — Time-Based Release Versioning (временная версияция).
- JEP 304 — Garbage-Collector Interface (интерфейс сборщика мусора).
- JEP 307 — Parallel Full GC for G1 (параллельный полный GC для G1).
- JEP 316 — Heap Allocation on Alternative Memory Devices (куча на альтернативных устройствах памяти, NV-DIMM).
- JEP 296 — Consolidate the JDK Forest into a Single Repository (объединение репозиториев JDK в один).
- JEP 310 — Application Class-Data Sharing (AppCDS, совместное использование данных классов приложения).
- JEP 314 — Additional Unicode Language-Tag Extensions (расширения Unicode для локалей).
- JEP 319 — Root Certificates (встроенные корневые сертификаты).
- JEP 317 — Experimental Java-Based JIT Compiler (экспериментальный JIT-компилятор Graal на Java).
- JEP 312 — Thread-Local Handshakes (потоковые рукопожатия для ускорения safepoints).
- JEP 313 — Remove the Native-Header Generation Tool (удаление утилиты
javah).
Java 10 обогатила 70+ API новыми методами, удалила устаревшие API и опции. Подробности в следующих статьях.
java
- Освоение операторов Java: типы, синтаксис и практические примеры
- Комментарии в Java: типы, использование и лучшие практики
- Освоение улучшенного цикла for в Java: синтаксис, примеры и лучшие практики
- Освоение строк в Java: создание, методы и лучшие практики
- Интерфейсы в Java: концепции, реализация и лучшие практики
- Анонимные внутренние классы в Java: определение, синтаксис и практические примеры
- Try-with-resources в Java: автоматическое управление ресурсами
- Аннотации в Java: типы, размещение и практические примеры
- Assertions в Java: практическое руководство по обнаружению багов и обеспечению надежности кода
- Язык программирования Java: эволюция, версии и области применения