Курс включает себя минимальную практику работы с JavaScript. Почему это нужно? В вакансиях backend разработчиков, как правило, отсутствуют требования глубокого знания JavaScript, но каждый разработчик должен уметь пользовать DevTools - инструментами разработчика в браузере, чтобы при работе над рабочими задачами по меньшей мере иметь возможность понять, происходит ли ошибка на стороне фронтенда или на стороне бэкенда, увидеть, какие данные уходят на сервер с фронтенда и так далее.
Также, конечно, минимальные знания JavaScript приятны, поскольку они дают вам возможность написать свой несложный проект хотя бы с минимальным фронтендом.
Существуют также fullstack-разработчики, от которых требуется способность полноценно решать задачи фронтенда на продакшене. Это требует довольно глубокого знания фронтенд-технологий и таких фреймворков, как Angular или React. Это требует много времени, и такая подготовка не входит в курс TopJava.
Говоря о трендах, хотелось бы сказать, что в настоящее время развиваются фреймворки, построенные на отказе от использования Reflection API. Dependency injection в Spring, сериализация с помощью Jackson построены на использовании Reflection, что сильно бьет по производительности, но было достаточно удобным решение до недавнего времени. Фреймворк Micronaut полностью построен на отказе от Reflection, и это дает существенный прирост производительности при измерении ряда параметров. Micronaut использует продвинутый компилятор и генерацию байткода, что позволяет создать все бины (управляемые фреймворком объекты) в ходе компиляции.
Пока доля Micronaut очень мала, но он используется в продакшене. Я предполагаю, что в какой-то момент Spring может также внедрить подобный подход.
Продолжает развиваться реактивное программирование, которое является в какой-то степени новой парадигмой в программировании.
Spring развивает свой реактивный фреймворк Spring WebFlux, который поддерживает библиотеку Reactor.
Ряд современных задач не решается традиционными методами, такими как блокирующий Input/Output, HTTP-протокол. Одним из решений данных вопросов является применение подходов реактивного программирования (Reactor, RxJava), использование новых протоколов передачи данных (RSocket). У нас также готовится курс ReactJava как продолжение TopJava на реактивном стеке.
ПО становится большим и сложным. Очень большое приложение сложно поддерживать одной командой, управлять его жизненным циклом: разработка, релиз. Приходиться все заново тестировать, долго ждать выхода новой фичи. Решение - микросервисы, когда над сервисом работает один человек или небольшая команда (есть правило двух пицц - команду можно накормить 2-мя пиццами). Это решает проблемы выше, но не бесплатно - разработка микросервисов, как и реактивного приложения, на порядок сложнее.
Следующий курс, готовый стать самым популярным после TopJava, - Микросервисы.
