Похожие презентации:
The Latest Features in Java
1.
The Latest Features in JavaСамые горячие Preview Features
JEP 401: Value Classes and Objects
Часть проекта Valhalla. Классы-значения с меньшими накладными
расходами
JEP 489: Vector API
Написание векторных вычислений с использованием аппаратного
ускорения
JEP 487: Scoped Values
Замена ThreadLocal для использования с виртуальными потоками
static final ScopedValue<String> SV = ScopedValue.newInstance();
void example() {
ExecutorService executor = Executors.newVirtualThreadPerTaskExecutor();
ScopedValue.where(SV, “Initial Value”, () -> {
assert SV.get() == “Initial Value”
Улучшение Virtual Threads
- блокирующий код в synchronized-блоках больше не приводит к
блокировке основного потока-носителя
Stream Gatherers
пользовательские промежуточные операции для Stream API
четыре кастомизируемых компонента:
Initializer: создаёт начальное состояние
Integrator: обрабатывает каждый элемент
Combiner: объединяет состояния
Finisher: выполняет финальные действия
Ahead-of-Time Class Loading & Linking
информация об используемых классах записывается в кэш,
который может использоваться при повторном запуске
}
}
Java 18
void race(Callable<String> task1, Callable<String> task2) {
try (var scope = new StructuredTaskScope.ShutdownOnSuccess<String>()) {
scope.fork(task1)
scope.fork(task2)
score.join()
return scope.result()
}
}
VarHandles
Foreign Function & Memory API
Удалены методы:
Thread. suspend() / resume()
ThreadGroup. stop() / suspend() / resume()
Поддержка Markdown в комментариях
Улучшения в ZGC
поддержка поколений включена по умолчанию
Java 19
Новый метод:
HashMap.newHashMap(int numMappings)
Java 22
Foreign Function & Memory API
аллокация и взаимодействие с off-heap памятью
MemorySegment, MemoryAddress, SegmentAllocator
MemoryLayout, MemoryHandles, MemoryAccess
управление жизненным циклом ресурсов
ResourceScope
вызов внешних функций
SymbolLookup, CLinker
Улучшения в G1: Region Pinning
Безымянные переменные
- в качестве имени неиспользуемой переменной можно
использовать символ “_”
Java 21 (LTS)
Виртуальные потоки
- легковесные потоки, управляемые JVM
UTF-8 по умолчанию
- кодировкой по умолчанию на всех платформах. Рекомендуемая
опция для миграции -Dfile.encoding=UTF-8
Большое количество JEP в рамках подготовки к дальнейшим релизам
Sequenced Collectors
- удобный доступ к первому и последнему элементу коллекции
finalize()
Java 20
Pattern Matching
- упрощенное и удобное приведение типов в switch-выражениях
Исправлена ошибка в IdentityHashMap
Record Patterns
- удобное деконструирование записей в отдельные компоненты
- скоро будет удален, объявлен устаревшим. Замена:
JEP 499: Structured Concurrency
API для организации взаимодействия конкурентных задач
Очистка sun.misc.Unsafe
- операции доступа памяти через sun.misc.Unsafe будут удалены
в скором времени, объявлены устаревшими. Замена:
Классы из модуля jdk.random перенесены в java.base
Улучшения в G1
ScopedValue.where(SV, “Nested Value”, () -> {
executor.submit(() -> {
assert SV.get() == “Nested Value”
}
}
executor.submit(() -> {
assert SV.get() == “Initial Value”
}
Java 23
Java 24
try-with-resources
Cleaner API
Большое количество JEP в рамках подготовки к дальнейшим релизам
Большое количество JEP в рамках подготовки к дальнейшим релизам
Java 17 (LTS)
Java 16
Java 15
Sealed Classes
- фиксированная иерархия пользовательских типов с проверками
на этапе компиляции
улучшения Pattern Matching
- поддержка instanceof с автоматическим приведением типа
Текстовые блоки
- удобное использование многостроковых литералов
Новый класс и API:
Records
- неизменяемые объекты
java.util.HexFormat
Security Manager & Applet API
- объявлены устаревшими и буду удалены в дальнейшем
Поддержка поколений в ZGC/Shenandoah
Новые методы:
Stream.toList(), Stream.mapMulti()
Новые методы:
CharSequence.isEmpty(), String.translateEscapes(),
String.stripIndent(), String.formatted(Object… args)
Biased Locking
- оптимизация устарела и будет удалена в дальнейшем
2.
Предполагаемыйразмер: 90*40
Маркетинг