👩💻Java 25 выходит уже сегодня!Четверть века назад язык, придуманный для «умных тостеров», стал символом корпоративного софта и огромных систем. Сегодня Java продолжает эволюционировать, и каждая новая версия всё сильнее ломает стереотип о «тяжёлом корпоративном динозавре». Встречаем 25 версию Java!
Небольшая часть фич:🛑
Scoped Values (JEP 506) — более безопасная и эффективная альтернатива ThreadLocal:
ScopedValue<String> USER = ScopedValue.newInstance();
ScopedValue.where(USER, "admin").run(() ->
System.out.println(USER.get()) // admin
);
🛑Structured Concurrency (JEP 505,
пятое preview) — читаемый и контролируемый параллелизм:
try (var scope = StructuredTaskScope.shutdownOnFailure()) {
Future<String> f1 = scope.fork(this::loadUser);
Future<String> f2 = scope.fork(this::loadOrders);
scope.join();
System.out.println(f1.resultNow() + f2.resultNow());
}
🛑
Primitive Types в pattern matching (JEP 507,
третье preview) — теперь switch и instanceof понимают примитивы без лишнего бокса.
int x = 42;
switch (x) {
case 0 -> System.out.println("zero");
case 42 -> System.out.println("the answer");
default -> System.out.println("other");
}
🛑
Vector API (JEP 508,
Tenth Incubator) — быстрые SIMD-операции прямо из Java:
var a = IntVector.fromArray(SPECIES, arr1, 0);
var b = IntVector.fromArray(SPECIES, arr2, 0);
var c = a.add(b); // параллельное сложение
🛑
Module Import Declarations (JEP 511) — чище и короче исходники:
import module java.base;
🛑
Compact Object Headers (JEP 519) — меньше overhead на каждый объект ⇒ экономия памяти без изменений в коде.
🛑
Generational Shenandoah GC (JEP 521) — теперь сборщик разделяет молодые и старые поколения, уменьшая паузы и ускоряя работу.
🛑Ещё:
улучшения в G1 GC, компактные исходники (JEP 512), гибкие конструкторы (JEP 513) и многое другое.
🛑А в контейнерах
JVM стала меньше и умнее, лучше учитывает лимиты памяти и CPU. Для Kubernetes – меньше сюрпризов и затрат на облака.
🛑И напоследок... Oracle официально выводит GraalVM из Java Ecosystem Train.Что это значит:
GraalVM для JDK 24 стал последним релизом, поддерживаемым в составе Oracle Java SE. Экспериментальный GraalVM JIT также более не будет поставляться OracleJDK. Native Image как Early Adopter-технология больше не входит в Java SE.
Дальше развитие GraalVM для Java переходит в Project Leyden — именно там теперь будут решать задачи ускорения старта, снижения footprint и улучшения по time-to-peak performance.
Сам же GraalVM сосредоточится на других языках — GraalPy, GraalJS и прочих.
Как быть?– Если вы использовали Graal JIT — переходите на стандартный C2 JIT в Oracle JDK.
– Если интересовались AOT — смотрите на Java 25: там уже
JEP 514 (Ahead-of-Time Command-Line Ergonomics) и
JEP 515 (Ahead-of-Time Method Profiling).
⚠️ Это не значит, что GraalVM проект более не развивается. Как высказался
Thomas Wuerthinger, Project Lead GraalVM и отдельный Product Manager Java Standard Edition в данном посте на Reddit - GraalVM как проект остается и никуда не уходит. Происходит лишь реорганизация продукта GraalVM JIT.
📚Более подробно ознакомиться с фичами можно в нашей статье на Хабр: https://habr.com/ru/companies/spring_aio/articles/947420/🥳
Празднуем в комментах!