TGViewer
Java: fill the gaps Java: fill the gaps @java_fillthegaps · 12.3K subscribers
Post #647 13K
Релиз Java 25

будет завтра. А сегодня - краткий обзор фич новой версии.

Пропущу JEP в статусе Preview, хотя среди них много интересных вроде Stable Values или Structured Concurrency. Расскажу только о новшествах, которые обрели финальную форму.

🍑 JEP 519: Compact Object Headers

Самая полезная фича в новом релизе. В чем суть. У каждого объекта есть заголовок, в котором хранится служебная информация для JVM.

В Java 25 размер заголовка сократился с 12 байт до 8.

Вроде немного, но в одном бенчмарке это сэкономило аж 22% памяти и 8% CPU. В реальных приложениях результат будет скромнее, но всё равно приятно.

Включается флажком -XX:+UseCompactObjectHeaders, по умолчанию Compact Headers выключены.

Следующие 2 фичи вряд ли потребуются каждый день, но знать о них стоит.

🍑 JEP 513: Flexible Constructor Bodies

Писала о них отдельный пост, поэтому кратко - в конструкторах перед вызовом super можно добавить проверки аргументов:
class Employee extends Person {
  Employee(int age) {
    if (age < 18)
        throw new IllegalArgumentException(...);
    super(age);
  }
}


🍑 JEP 506: Scoped Values

ScopedValue - новый класс, чтобы передавать служебные данные между методами без явной передачи через параметры.

Традиционно для этих целей используется ThreadLocal. Яркий пример - SecurityContext из Spring Security. Мы не тащим SecurityContext в каждый метод, но информация о текущем пользователе всегда под рукой.

Scoped Value - это ThreadLocal Premium:
👑 Доступен только в пределах заданной области
👑 Значение неизменяемое
👑 Автоматически удаляется после использования
👑 Совместим с виртуальными потоками

Остальные фичи довольно специфичны, опишу их кратко

🍑 JEP 510: Key Derivation Function API

Квантовые компьютеры активно развиваются, они очень мощные и будут щёлкать текущие алгоритмы как орешки. Этот JEP - часть работ по внедрению в джаву Post-Quantum Cryptography - новых алгоритмов безопасности.

🍑 JEP 511: Импорт модулей

Вместо
import java.util.*; 
import java.util.function.*;
import java.util.stream.*;

Можно написать короче:
import module java.base;

Любая IDE управляет импортами за нас, поэтому полезность фичи под вопросом. Возможно, разработчики джавы не вспомнили названия модулей, когда подтверждали свои навыки на HH. Но это не точно.

🍑 JEP 503: Remove the 32-bit x86 Port

Не учитывать в дальнейшей разработке 32х-битные процессоры

🍑 JEP 512: Compact Source Files and Instance Main Methods

Более короткий Hello World:
void main() { 
  IO.println("Hello, World!");
}


🍑 JEP 520: JFR Method Timing & Tracing, JEP 515: Ahead-of-Time Method Profiling, JEP 520: JFR Method Timing & Tracing

Профайлинг стал точнее и стартует чуть быстрее.

🍑 JEP 521: Generational Shenandoah

Сборщик мусора Shenandoah теперь делит объекты на старые и новые, раньше это была экспериментальная фича.

Такой вот релиз будет завтра✨
  • 🔥 121
  • 👍 42
  • ❤ 15
More from @java_fillthegaps
  1. Apr 30, 2026Get Your Hands Dirty on Clean Architecture: отзыв на книгу Когда я подняла тему чистой арх…
  2. Apr 27, 2026​Clean Architecture: отзыв на книгу Наконец-то дочитала книгу Clean Architecture Роберта М…
  3. Mar 4, 2026Как переиспользовать контекст в интеграционных тестах Сегодня расскажу базовый минимум для…
  4. Mar 4, 2026Post #660
  5. Mar 4, 2026Тестовый контекст поднимается 2 минуты. У нас 4 класса с интеграционными тестами, их конфи…
  6. Feb 25, 2026Чистая архитектура. Главы 3-5 Продолжаем спидран по Clean Architecture Роберта Мартина. ⭐️…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →