Какую интересную технологию или фреймворк в экосистеме Java ты изучал недавно?

«Какую интересную технологию или фреймворк в экосистеме Java ты изучал недавно?» — вопрос из категории Софт-скиллы, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый пример ответа, который можно адаптировать под свой опыт.

Ответ

Project Loom (включен в Java 19+ как инкубационный модуль, а затем как предварительная версия) — технология для упрощения высококонкурентного программирования за счет виртуальных потоков (virtual threads).

Суть проблемы: Классические потоки (platform threads) Java тяжеловесны и ограничены ресурсами ОС (обычно тысячи). Это создает сложности для сервисов с большим количеством одновременных I/O-операций (HTTP-запросы, работа с БД).

Решение Loom: Виртуальные потоки — это легковесные потоки, управляемые JVM, а не ОС. Их можно создавать в огромных количествах (миллионы).

Пример: обработка 10 000 одновременных запросов.

// Создание ExecutorService на виртуальных потоках
try (ExecutorService executor = Executors.newVirtualThreadPerTaskExecutor()) {
    List<Future<Integer>> futures = new ArrayList<>();

    for (int i = 0; i < 10_000; i++) {
        futures.add(executor.submit(() -> {
            // Имитация блокирующей I/O-операции (например, запрос к БД)
            Thread.sleep(Duration.ofSeconds(1));
            return i;
        }));
    }
    // Все задачи выполнятся конкурентно примерно за 1 секунду,
    // а не за 10 000 секунд, как в случае с пулом из 10 платформенных потоков.
}

Ключевые преимущества:

  • Масштабируемость: Возможность создавать миллионы потоков для блокирующих операций.
  • Упрощение кода: Позволяет писать простой, синхронный, блокирующий код, который под капотом эффективно масштабируется. Отпадает необходимость в сложных асинхронных API (CompletableFuture, Reactive Streams) для многих сценариев.
  • Совместимость: Виртуальные потоки — это все те же объекты java.lang.Thread. Большинство существующих библиотек и код будут работать без изменений.

Идеально подходит для: высоконагруженных веб-серверов, микросервисов, обработчиков, которые часто ожидают ответов от других сервисов или БД.