TGViewer
devmark_ru devmark_ru @devmark_ru · 224 subscribers
Post #152 308
Вчера вышла Java 25!

Это версия с долговременной поддержкой, поэтому имеет смысл переходить на неё в ближайшее время. Она привносит следующие изменения:

1) import module — меньше бойлерплейта (JEP 511)

Позволяет подтянуть экспортируемые пакеты модуля одной строкой — удобно для утилит и «скриптового» кода.

// List, Map, Path и пр. без отдельных import
import module java.base;

void main() {
var names = List.of("James", "Bill", "Guy");
IO.println(names);
}


2) Compact Source Files and Instance Main Methods (JEP 512)

Можно запускать файл без создания явного класса. Метод main() теперь не обязательно должен быть static. Мы можем писать код в "скриптовом" стиле, что удобно для начинающих.

String msg = "Hello, Java 25!";

void main() {
IO.println(msg);
}


3) Flexible Constructor Bodies (JEP 513)

Flexible Constructor Bodies, которые были в preview три релиза (Java 22, Java 23, Java 24), стали постоянной фичей языка. Теперь можно писать инструкции в конструкторе перед явным вызовом конструктора (super() или this()):

public class PositiveBigInteger extends BigInteger {
public PositiveBigInteger(long value) {
if (value <= 0)
throw new IllegalArgumentException("non-positive value");
super(value);
}
}


4) Scoped Values (JEP 506)

Класс ScopedValue позволяет обмениваться иммутабельными данными без их передачи через аргументы методов. Он является более оптимизированной альтернативой существующему классу ThreadLocal.

private static final ScopedValue<FrameworkContext> CONTEXT = ScopedValue.newInstance();

void serve(Request request, Response response) {
var context = createContext(request);
ScopedValue.where(CONTEXT, context)
.run(() -> Application.handle(request, response));
}

public PersistedObject readKey(String key) {
var context = CONTEXT.get();
var db = getDBConnection(context);
db.readKey(key);
}


5) Компактные заголовки объектов (JEP 519)


Включаются флагом UseCompactObjectHeaders; экономят память и ускоряют сборку мусора.

java -XX:+UseCompactObjectHeaders -jar app.jar


Конечно же, это далеко не все изменения в Java 25. Всё перечисленное выше - уже production-ready. Помимо этого в статусе очередного preview находятся ещё несколько интересных фич:

6) Примитивы в pattern/instanceof/switch — третий preview (JEP 507)

7) Stable Values — preview (JEP 502) - позволяет создавать неизменяемые поля с отложенной инициализацией

8) PEM-кодирование криптообъектов — preview (JEP 470)

9) Structured Concurrency — пятый preview (JEP 505)

10) Vector API (Tenth Incubator) (JEP 508)


P.S. Мне, как человеку, который делает обучающие материалы по Java, особенно интересные фичи 1 и 2.

А что показалось наиболее интересным вам? Планируете ли переход на Java 25 в ближайшее время? Пишите в комментариях!
  • 👍 5
  • 🎉 4
  • 🔥 2
  • 💅 2
  • ⚡ 1
More from @devmark_ru
  1. Sep 7, 2026Новый этап автоматизации SDLC от Dockhost! Спустя 3 месяца после появления LLM инференса н…
  2. Jul 16, 2026OpenIDE представила свой клиент для базы данных! На днях вышла новая версия OpenIDE Pro, в…
  3. Jun 30, 2026Channel photo updated
  4. Jun 26, 2026"Товарищ Сталин, что вы курите?" В процессе "общения" с LLM вспомнился один старый номер и…
  5. Jun 15, 2026Вышел стабильный релиз Spring AI 2.0 Чуть больше года назад появился Spring AI версии 1.0,…
  6. May 29, 2026Ваш персональный ChatGPT от Dockhost Продолжаю серию постов про альтернативные LLM, которы…
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 →