16 вересня 2025 року вийшла Java 25 — перша Long-Term Support версія після Java 21. За 15 років роботи з Java я навчив програмувати декілька десятків людей, і зараз разом із командою створюємо курси для мільйонів студентів. Вивчив новинки Java 25 — є цікаві речі, які спростять життя розробникам.

Поки інші платформи чекають на офіційний реліз, ми вже запустили курс. Ми не чекаємо, поки всі обговорять нову Java, а одразу робимо курс 💪

Коли ми запустили JavaRush у 2012 році, наша мета була проста — дати людям практичні навички програмування, а не красиві презентації про те, "як важливо вивчати основи". За 12 років понад 2 мільйони людей пройшли наші курси. Тепер ми створили перший у світі курс з Java 25, і хочу розповісти, що там цікавого.

Compact Source Files — Java для початківців

Найпомітніша зміна в Java 25 — спрощення синтаксису для новачків. Тепер можна писати програми без явного оголошення класів:

Java

// Раніше потрібно було так
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

// Тепер достатньо цього
void main() {
    IO.println("Hello, World!");
}

Якщо у файлі .java є методи або поля поза явним оголошенням класу, компілятор автоматично створює неявний top-level клас. Для тих, хто вивчає програмування, це значно знижує поріг входу.

Instance Main Methods — без static та String[]

Java 25 дозволяє використовувати instance-методи як точки входу в програму. Більше не потрібно пояснювати новачкам, що таке static:

Java

void main() {
    // Звичайний instance-метод
    processData();
}

void processData() {
    IO.println("Обробка даних...");
}

Якщо в класі немає відповідного static main методу, лаунчер Java шукає instance main метод і автоматично створює екземпляр класу.

java.lang.IO — простий ввід-вивід

Новий клас java.lang.IO спрощує роботу з консоллю. Більше не потрібно запам'ятовувати System.out.println:

Java

void main() {
    String name = IO.readln("Введіть ваше ім'я: ");
    IO.println("Привіт, " + name + "!");
}

Клас знаходиться в пакеті java.lang, тому доступний без імпорту. Є методи для виведення, введення та читання рядків із промптом.

Flexible Constructor Bodies — гнучкі конструктори

В Java 25 можна виконувати операції перед викликом super() або this():

Java

public class User {
    private final String email;
    private final String domain;
    
    public User(String email) {
        // Операції перед викликом super()
        this.domain = extractDomain(email);
        validateDomain(domain);
        
        super(); // Виклик конструктора Object
        
        this.email = email;
    }
    
    private String extractDomain(String email) {
        return email.substring(email.indexOf('@') + 1);
    }
}

Це дозволяє ініціалізувати поля та виконувати валідацію до створення об'єкта, роблячи конструктори більш природними.

Module Import Declarations — спрощені імпорти

JEP 511 вводить можливість імпортувати всі пакети модуля одним рядком:

Java

import module java.base;

// Тепер доступні всі класи з java.base без explicit імпортів
void main() {
    var list = new ArrayList<String>();
    var file = new File("data.txt");
    var decimal = new BigDecimal("123.45");
}

Це особливо корисно при роботі з великими модулями, де потрібно багато класів.

Stable Values — оптимізовані константи

Новий API для роботи з незмінними значеннями, які можна ініціалізувати пізніше:

Java

class Configuration {
    static final StableValue<String> DATABASE_URL = 
        StableValue.of(() -> loadFromConfig("db.url"));
        
    void connectToDatabase() {
        String url = DATABASE_URL.get(); // Ледача ініціалізація
        // Підключення до БД
    }
}

Stable Values допомагають оптимізувати час запуску застосунків і забезпечують thread-safety при відкладеній ініціалізації.

Primitive Types in Patterns — розширений Pattern Matching

Java 25 розширює Pattern Matching на всі примітивні типи:

Java

static String classify(Number n) {
    return switch (n) {
        case int i -> "Integer: " + i;
        case long l -> "Long: " + l;
        case double d -> "Double: " + d;
        case float f -> "Float: " + f;
        default -> "Unknown number type";
    };
}

Тепер можна використовувати pattern matching з int, long, double, float та іншими примітивами в switch expressions та instanceof.

Compact Object Headers — економія пам'яті

В Java 25 розмір заголовків об'єктів зменшений із 96-128 біт до 64 біт на 64-бітних архітектурах:

Java

// Кожен об'єкт тепер займає менше пам'яті
List<String> list = new ArrayList<>(); // Менше overhead
Map<String, User> users = new HashMap<>(); // Економія на кожному entry

Це особливо помітно в застосунках із великою кількістю об'єктів — мікросервісах та застосунках із великими heap'ами.

Scoped Values — безпечний контекст

Фінальна версія Scoped Values дозволяє передавати незмінні дані між методами та потоками:

Java

private static final ScopedValue<User> CURRENT_USER = ScopedValue.newInstance();

public void handleRequest(User user) {
    ScopedValue.where(CURRENT_USER, user)
        .run(() -> {
            processOrder();  // Всередині доступ до user через CURRENT_USER.get()
            sendNotification();
            logActivity();
        });
}

На відміну від ThreadLocal, Scoped Values простіші у використанні, мають менші накладні витрати та краще працюють із virtual threads.

JFR покращення — кращий профайлінг

Java 25 покращує Java Flight Recorder трьома новими можливостями:

JFR Cooperative Sampling — більш безпечний збір stack traces без bias'у та з підтримкою concurrent stack walking.

JFR Method Timing & Tracing — відстеження часу виконання конкретних методів без зміни коду:

Bash

java -XX:StartFlightRecording:jdk.MethodTiming#methods=com.myapp.Service.* MyApp

CPU-Time Profiling on Linux — точний профайлінг CPU часу з використанням можливостей Linux kernel.

Key Derivation Functions API

Новий API для роботи з функціями виводу ключів (KDF):

Java

// Приклад використання KDF для генерації похідних ключів
KeyDerivationFunction kdf = KeyDerivationFunction.getInstance("PBKDF2WithHmacSHA256");
SecretKey derivedKey = kdf.deriveKey(password, salt, iterations, keyLength);

Це критично важливо для криптографічних застосунків та реалізації безпечного зберігання паролів.

Навіщо вивчати Java 25

Java розвивається швидко — нові LTS версії виходять кожні 3 роки. Ті, хто освоює новинки першими, отримують перевагу на ринку праці.

Java 25 — це LTS реліз із 5 роками підтримки від Oracle. Компанії будуть мігрувати на цю версію та шукати розробників, які знають нові можливості мови.

Перший курс з Java 25

Коли Oracle оголосили дату релізу Java 25, ми вирішили не чекати. JavaRush завжди був попереду — перші зробили гейміфіковане навчання програмуванню, перші створили інтерактивні задачі з автоперевіркою.

Тепер ми перші, хто дає можливість вивчити Java 25 на практиці. Курс включає як новинки Java 25, так і важливі можливості попередніх версій — лямбди та Stream API з Java 8, модулі з Java 9, var з Java 10, Text Blocks з Java 13, Records з Java 14, Pattern Matching з Java 17, Virtual Threads з Java 21.

Що є в курсі:

  • 325+ лекцій із поясненням кожної новинки Java 25
  • 880+ завдань від простих до enterprise-рівня
  • AI-наставник, який аналізує код і дає рекомендації
  • Інтеграція з IntelliJ IDEA — навчайтеся на професійних інструментах

Практика — основа навчання

За роки викладання зрозумів просту істину: теорія без практики — пуста трата часу. Можна прочитати всю документацію з Compact Source Files, але поки не напишете декілька програм із новим синтаксисом, не відчуєте зручність.

У курсі кожна новинка Java 25 одразу закріплюється практикою. Вивчили Flexible Constructor Bodies — написали безпечну систему ініціалізації об'єктів. Освоїли Scoped Values — створили багатопотокову програму з передачею контексту. Розібралися з Module Import Declarations — спростили структуру великих проектів.

AI-наставник у курсі

Найцікавіша особливість нашого курсу — AI, який аналізує код студентів. Це не загальні поради від ChatGPT, а спеціалізована система, яка:

  • Знає контекст кожного завдання курсу
  • Аналізує стиль програмування
  • Дає персональні рекомендації

Гейміфікація навчання

Програмування може бути нудним, якщо вивчати його неправильно. Тому в JavaRush навчання побудовано як гра: рівні, досягнення, рейтинги.

У курсі Java 25:

  • Досягнення за розв'язання завдань різної складності
  • Загальний рейтинг студентів
  • Рівні як у грі

Від нуля до готовності до роботи

Курс побудовано так, що навіть початківець через 65 рівнів отримає знання, достатні для роботи в серйозній компанії. Повна програма курсу включає вивчення сучасної Java 25, але також охоплює:

  • Сучасний синтаксис та нові оператори
  • ООП із новими можливостями мови
  • Колекції та Stream API
  • Роботу з файлами через сучасне API
  • Багатопотоковість та управління потоками

Плагін для IntelliJ IDEA

Одна з фішок JavaRush — плагін для IntelliJ IDEA. Студенти розв'язують завдання прямо в професійному середовищі розробки, з підсвічуванням синтаксису, автодоповненням, відладчиком.

Миттєва перевірка розв'язань

У JavaRush можна розв'язати завдання та через пару секунд дізнатися результат. Система автоматично перевіряє код, виконує тести та дає зворотний зв'язок.

Для Java 25 система перевірки розуміє:

  • Новий синтаксис Compact Source Files
  • Instance Main Methods
  • Flexible Constructor Bodies
  • Module Import Declarations

Чому JavaRush для вивчення Java 25

За 12 років роботи ми зрозуміли, як навчати програмуванню ефективно. Рекрутери в IT-компаніях знають JavaRush і часто запитують на співбесідах: "Який у вас рівень на JavaRush?" Не тому що ми їм за це платимо, а тому що знають — якщо людина дійшла до 40 рівня, вона вміє програмувати, а не просто вивчила синтаксис.

Курс Java 25 — розвиток нашої методики. Та ж практична спрямованість, але з найсучаснішими технологіями.

Почати вивчення зараз

Java 25 уже вийшла, але вивчати її можна вже зараз — поки конкуренти читають release notes. У нашому курсі зібрано всі нововведення з практичними прикладами.

65 рівнів практичних завдань, AI-наставник, інтеграція з професійними інструментами — все для того, щоб ви освоїли сучасну Java швидко та ефективно.

Станьте Java-розробником, готовим до 2025 року.

Готові вивчити Java 25? Починайте на JavaRush — єдиній платформі з повноцінним практичним курсом із найновішої версії Java.

65 рівнів | 880+ завдань | AI-наставник | Інтеграція з IDEA

Почати вивчення Java 25 →