Java roadmap под работу — это не «сначала сертификация Oracle, потом Spring, потом всё остальное». В CIS в 2026-м junior чаще нанимают по простому контуру: язык без паники на созвоне, Spring Boot, данные, тесты, умение поднять сервис локально. Сертификат сам по себе отклик не закрывает.
Ниже — карта до первой роли, а не перечень всего экосистемы. Что учить в каком порядке, какой 90-дневный проект стыкуется с вакансиями, чего не тащить в резюме с курса и как понять, что вы уже не студент туториала.
Коротко:
- Цель — junior Java backend, не «Java как язык вообще». Android — отдельная карта.
- База: типы, коллекции, исключения, равенство объектов, потоки ввода, сборка через Maven или Gradle — один инструмент.
- Фреймворк в вакансиях CIS почти всегда Spring Boot, не «чистый Servlet ради дисциплины».
- JPA плюс SQL на уровне понимания, что делает Hibernate за кадром. Без этого тестовое разваливается.
- Готовность — запускаемый сервис с тестами и README, не бейдж и не «прошёл 80 часов Spring».
Какую Java-роль вы закрываете
Откройте вакансии Java-разработчика. Большинство junior — backend: API, PostgreSQL или Oracle, Spring. Мобильная Java/Kotlin — другой поиск. «Java + Selenium» без Spring — скорее автоматизация, не эта карта. Смешивать три направления в одном резюме — частая причина тишины.
На 90 дней возьмите backend. Как устроена профессия целиком — в как стать Java-разработчиком. Здесь — порядок навыков под найм, без культа версий языка «самая новая любой ценой». В командах живут LTS. Учите ту линию, на которой поднимается ваш Spring Boot, и не коллекционируйте preview-фичи ради резюме.
База языка, которая всплывает на созвоне
Вас не будут спрашивать всю спецификацию. Спросят то, на чём ломается повседневный код:
- equals/hashCode и почему объект «пропал» из HashMap;
- список vs множество vs карта, итерация, ConcurrentModification на пальцах;
- checked и unchecked, что логировать, что пробрасывать;
- строки, immutability, путаница с ==;
- generics на уровне «не сырой List», не « PECS наизусть»;
- исключения при работе с I/O и почему try-with-resources.
Многопоточность: понимать, что такое гонка и зачем пул потоков. Не строить «свой акторный фреймворк» в первый месяц. Stream API — да, как инструмент коллекций. Не заменять им ясный цикл там, где читаемость важнее.
ООП в Java на входе — не UML и не «все паттерны Gang of Four». Это: инкапсуляция в сущности, наследование только где правда is-a, интерфейс там, где два поведения. Record для DTO — нормальный 2026, если команда уже на вашей LTS. Не тратьте неделю на visitor, пока POST заявки не сохраняется.
Сборка должна быть скучной и повторяемой: mvn test или gradle test с нуля. Если проект открывается только через «импорт в IDEA и нажать зелёную кнопку», в README допишите команды. Рекрутер и тестовое часто гоняют голову без вашей IDE. Зафиксируйте версию JDK в toolchain или в README: 17 или 21, не «просто Java».
Логи: SLF4J + один бэкенд, уровни, не System.out в сервисе. На учебном проекте хватит видеть id заявки в логе при ошибке 500. Это мелочь, по которой отличают туториал от сервиса, который уже пытались дебажить.
Spring Boot — рабочий центр, не опция
В объявлениях CIS Spring Boot встречается как гигиена. Учить «сначала Servlets, потом Spring MVC вручную три месяца» имеет смысл только если вы понимаете HTTP. Для найма быстрее: один сервис на Boot, слои, валидация, ошибки в JSON, конфигурация через application.yml.
Порядок внутри фреймворка:
- Контроллер, DTO, валидация входа, статус-коды.
- Сервис и транзакция: где граница, что нельзя тащить в контроллер.
- Spring Data JPA: сущность, репозиторий, ленивая загрузка, N+1.
- Тесты: @SpringBootTest точечно, лучше slice-тесты на веб и на репозиторий, если уже понимаете разницу. Хотя бы несколько тестов, которые падают при сломанной валидации.
- Безопасность: не «весь Spring Security». Для учебного сервиса — базовая проверка токена или HTTP basic с пометкой в README, что это учебный контур, не прод.
Kafka, микросервисы, reactive WebFlux — не первые 90 дней, если в пяти вакансиях этого нет. Не копируйте архитектуру из блога про highload.
Данные: SQL не заменяется аннотациями
Hibernate не освобождает от понимания таблиц. На тестовом просят запрос, план «на пальцах», почему появились дубли после JOIN. Тренируйте SQL отдельно: см. SQL roadmap. В Java-проекте: схема заказа/тикета, внешние ключи, миграции Flyway или Liquibase — один инструмент.
PostgreSQL в продуктовых командах встречается чаще учебной H2 как единственной БД. H2 допустим в тестах, если вы понимаете отличия. В README напишите, как поднять Postgres в Docker — это уже сигнал, что вы жили не только в туториале.
Что не тащить в карту новичка
- сертификаты Oracle/Spring как главная цель учёбы;
- все модули Jakarta EE «для полноты»;
- Kotlin «на всякий случай», если вакансии на Java и у вас нет Kotlin-проекта;
- Kubernetes при одном jar;
- пять способов логирования и три билда одновременно.
Английский: документация Spring на английском. Устный — по вакансии. Не откладывайте проект до C1.
Пример 1. 90-дневный проект
Сервис «заявки в поддержку»: пользователь, заявка, статусы, комментарий. Java, Spring Boot, PostgreSQL, Flyway, JUnit, Docker Compose.
- Дни 1–20. Сущности, миграции, CRUD заявки, ошибка 400 на пустой текст. Без UI.
- Дни 21–45. Фильтр по статусу, пагинация, запрет нелегального перехода статуса. Тесты на сервис статусов.
- Дни 46–70. Docker Compose, переменные окружения, health-эндпоинт. Короткий журнал: один найденный N+1 и как убрали.
- Дни 71–90. README: запуск, что сделано, чего нет (нет SSO, нет очереди). Резюме по резюме Java-разработчика. Десять откликов на вакансии, где Spring Boot в тексте.
Откликаюсь на junior Java (Spring Boot). Собрал сервис заявок: JPA, миграции Flyway, тесты на смену статуса, Docker Compose. Коммерческого стажа нет. Могу на созвоне разобрать сущность и почему статус меняется в сервисе, не в контроллере. Репозиторий: [ссылка]. Готов к тестовому в том же стеке.
Письмо короче курса. Каркас — в генераторе сопроводительного, факт — только из README.
Пример 2. План учёбы до и после
Было. Месяц на «Java с нуля» без репозитория. Месяц на видео Spring. Неделя на сертификационный тренажёр. Результат: теория, ни одного compose up.
Стало. Недели 1–3: язык внутри заготовок будущего сервиса. Недели 4–10: Spring Boot и БД. Недели 11–12: тесты, Docker, резюме, отклики.
Второй путь хуже выглядит в соцсетях и лучше на тестовом. Как группировать стек в файле — как указать стек в резюме и навыки backend.