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.

Порядок внутри фреймворка:

  1. Контроллер, DTO, валидация входа, статус-коды.
  2. Сервис и транзакция: где граница, что нельзя тащить в контроллер.
  3. Spring Data JPA: сущность, репозиторий, ленивая загрузка, N+1.
  4. Тесты: @SpringBootTest точечно, лучше slice-тесты на веб и на репозиторий, если уже понимаете разницу. Хотя бы несколько тестов, которые падают при сломанной валидации.
  5. Безопасность: не «весь 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. Дни 1–20. Сущности, миграции, CRUD заявки, ошибка 400 на пустой текст. Без UI.
  2. Дни 21–45. Фильтр по статусу, пагинация, запрет нелегального перехода статуса. Тесты на сервис статусов.
  3. Дни 46–70. Docker Compose, переменные окружения, health-эндпоинт. Короткий журнал: один найденный N+1 и как убрали.
  4. Дни 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 — конспект. Работа начинается, когда другой человек может поднять ваш сервис и задать вопрос по коду, а не по курсу.