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.
Критерии готовности и созвон
Вы готовы откликаться, если чужой человек поднимает проект по README, тесты зелёные, вы объясняете транзакцию и ленивую загрузку без шпаргалки. Не готовы, если Spring «проходили», а приложение не стартует без пяти ручных шагов, которых нет в файле.
На интервью часто просят equals, коллекции, «что такое бин», «чем @Service от @Component». Это не вся Java. Держите свой сервис как главный рассказ: зачем слой, где сломались, что в логе. Общий каркас вопросов — подготовка к интервью. Файл прогоните через проверку резюме, чтобы не оставить «Spring, Hibernate, Kafka, microservices» при одном CRUD.
Тестовое и типичный созвон
Тестовое junior Java в CIS часто выглядит так: REST на Spring Boot, одна-две сущности, валидация, сохранение, пара тестов. Иногда просят Docker. Реже — «придумайте микросервисы». Делайте то, что в брифе. Переусложнение без работающего POST проигрывает скучному CRUD, который стартует.
На созвоне чередуются язык и фреймворк. Язык: коллекции, equals, исключения, иногда потоки на уровне «что такое race». Spring: жизненный цикл бина без трактата, инъекция, транзакция, почему ленивая загрузка стрельнула вне сессии. Отвечайте примером из своего сервиса заявок: какой статус нельзя перевести, где аннотация, какой тест это ловит. Общая подготовка — interview-prep, жанр домашки — тестовое задание.
Если дают live coding на алгоритмы, это должно быть в вакансии. Тогда 3–4 типовые задачи в неделю рядом с проектом, не вместо него. Если не дают — не имитируйте FAANG-подготовку целый квартал.
Резюме, письмо, поиск
Заголовок: Java developer / Java backend, не «Java/Kotlin/Android/Spring/Kafka engineer». Пули: что умеет сервис, миграции, тесты, Compose. В skills — то, что в репозитории. Kafka с видеокурса уберите. Как группировать стек — в как указать стек и в навыках в IT-резюме.
Письмо: роль как в объявлении, одна задача первого месяца, ссылка на сервис, честно про стаж, готовность к тестовому. Не абзац про «современную Java-экосистему». Каркас без опыта — в сопроводительном без опыта и в резюме без опыта.
Ищите совпадение Spring Boot + SQL, не «Java вообще». Часть объявлений с тремя годами всё равно рассматривает сильный учебный контур — но только если его можно открыть. Смотреть срез рынка удобно в каталоге Java-вакансий. Если штат слишком жёсткий — стажировка в IT.
Частые вопросы
Нужна ли сертификация?
Как замена проекта — нет. Как личная структура учёбы — можно, если не ест 90 дней. В CIS junior-отборе репозиторий сильнее бейджа. Если работодатель сам просит сертификат — это будет в вакансии, не в общем правиле рынка. Дампы экзамена без Boot-сервиса дают ложную уверенность: на тестовом просят код, не номер билета.
Java 8 или «самая новая»?
LTS, на котором живёт ваш Boot. Не пишите в skills три версии. Уметь читать var, records, text blocks — плюс, если используете. Не делайте версию языка главной строкой резюме. В командах до сих пор живёт 17; «я только на 25 preview» без проекта никого не впечатляет.
Стоит ли сразу Kotlin?
Если целевые вакансии Kotlin/Spring — да, отдельным проектом. Если Java — не размывайте 90 дней. Kotlin в плюсах без кода выглядит как курс. Синтаксис близкий, экосистема та же, но тестовое на Java вы не напишете «потому что Kotlin в резюме».
Сколько алгоритмов?
Столько, сколько обещает секция в вакансии. Иначе 2–3 задачи в неделю максимум. Проект важнее «решал на LeetCode на Java» без GitHub. Коллекции и сложность «на пальцах» закроют часть вопросов без олимпиады.
Oracle вместо Postgres в вакансии — переписывать проект?
Не обязательно. Покажите SQL-грамотность и миграции. Диалект доучивается. Если все пять вакансий про Oracle — поставьте Oracle в Docker, если тянете по лицензии/образу; иначе честно Postgres плюс понимание отличий. На созвоне скажите, чем LIMIT отличается от ROWNUM, если уже смотрели — или что посмотрите перед выходом.
Когда идти на стажировку?
Если сервис сырой и тестовое 8 часов страшно. Штатная junior-роль требует артефакта. Про формат стажировок — стажировка в IT. Не пишите в письме на штат «готов работать бесплатно» — это слабее, чем ссылка на Boot-сервис.
Что сделать сейчас
Снимите с плана сертификат и второй фреймворк. Соберите сервис заявок или заказов на Spring Boot с Postgres и тестами. В README напишите, чего нет. Затем резюме под одну роль и отклики туда, где стек совпадает — смотреть объявления удобно в каталоге Java-вакансий.
Roadmap без запускаемого jar — конспект. Работа начинается, когда другой человек может поднять ваш сервис и задать вопрос по коду, а не по курсу.