◐ Shell
clean mode source ↗

Стажировка Enterprise Java-разработчик (TopJava)

Проект Spring/ JPA Enterprise (TopJava)

Возможно, ты уже видел известное видео Java-чемпиона Якова Фaйна Как стать профессиональным Java-разработчиком. Не надо устраиваться на работу как Junior. Получи опыт работы в реальном Spring/JPA Enterprise проекте!

Разработка полнофункционального Spring/ JPA enterprise-приложения c авторизацией и правами доступа на основе ролей на самом востребованном Java стеке: Maven, Spring MVC, Security, JPA(Hibernate), REST(Jackson), JUnit 5, Bootstrap (css,js), Stream and Time API, миграцию на JDK 25, сохранением в базах данных PostgreSQL и HSQLDB и деплоем на собственный выделенный сервер (первое занятие курса Startup)
Миграция на Spring Boot 4, Lombok, JPA, H2, Swagger/OpenAPI 3.0

Демо разрабатываемого приложения

Лучшие выпускные проекты участников

Ваши вопросы:

Насколько это "свежий" курс?

Мы разрабатываем наш проект на чистом Spring (без Spring Boot) чтобы были понятны внутренности и механизм работы. К тому же достаточно еще осталось много больших корпоративных Java проектов именно на Spring. Также используется пакет javax, на не новый jakarta, но разницы для нашего кода и используемых на проекта технологий - практически никакой.
В конце курса мы мигрируем наш проект на последнюю версию Spring Boot 4.x.

Начиная с 4-го занятия участники пишут свой выпускной проект и он уже на Spring Boot последней версии. Таким образом мы изучаем, что такое Spring Framework изнутри, чтобы иметь возможность, например, понимать и исправить код, сгенерированный ИИ-агентом и, одновременно, код после миграции проекта и код вашего выпускного — самый актуальный.

Почему убрали потоки?

Поток - когда вся группа идет по заданному расписанию и делает один и тот же урок.

Плюсы прохождения в потоке - участники смотрят друг на друга, обсуждаются те же самые вопросы между собой, кураторам проще делать ревью кода. Это оптимальный вариант, когда участников больше 10 чел. Если участников меньше - эффект совместного прохождения сводится на нет.

Минусы потока - приходилось ждать начало потоков (курс стартовал 3 раза в год) и необходимость всем держать одинаковый темп, хотя опыт и скорость обучения у каждого своя. Когда учеников немного, лучше подходит индивидуальное обучение, поэтому сейчас мы перешли на него.

При этом стоимость индивидуального обучения осталась как в потоке.
Время прохождения осталось 4 месяца на обучения и сдачу выпускного + возможность продления на 2 недели и 1,2,3 месяца.

Структура проекта

Требования к участникам:

Некоторый опыт программирования на Java: предполагается, что вы уже знаете, что такое классы, конструкторы, аннотации, анонимные классы, исключения и пр. Желательно знание сервлетов. Мы начинаем использовать их на первом занятии, кратко повторяя основы. Желательно знание JDBC/SQL (на уровне Select/Update/Delete), самых основ JavaScript, HTML. Весь "Enterprise": Maven, Git (в том объеме, который нам нужен), Spring, Hibernate, REST даются с азов.

Формат обучения:

  • Стажировка ведется по готовым материалам: видео, тематические ресурсы, проект, патчи, подобно вступительному занятию, без привязки к времени и местоположению.
  • Все домашние задания подобраны по темам занятия, требуют реализации функциональности, схожей с пройденным на занятии и являются частью проекта. Разбор домашних заданий происходит в начале каждого следующего урока.
  • Поддержка преподавателя, ответы на вопросы и обсуждение занятий и домашних заданий происходит в различных каналах группы проекта (используем мессенджер Telegram). Каждый урок/домашнее задание обсуждается в своей теме.
  • Самый эффективный способ научиться программировать: проходить ревью кода домашних заданий (ошибки в стиле, структурах данных, алгоритмах и кодировании). После проверки можно исправить замечания и пройти ее еще раз.
  • Начиная с 4-го занятия, участники разрабатывают собственный выпускной проект на стеке Maven/ Spring MVC, Security/ Hibernate/ REST, ревью которого входит в участие с проверкой.
  • На заключительном занятии каждый участник деплоит свой проект на собственный выделенный сервер

Отзыв Александра Верхотуркина (всего более 250!)
Прошел курс TopJava летом 2019. Очень понравилась тесная связь с практикой - никаких нудных лекций с теорией по 3 часа. Прослушал/прочитал небольшое объяснение и вперед - читать код. Прочитал? Напиши сам! При этом есть огромное количество ссылок на дополнительный материал, если нужно копнуть глубже. Понравился стек технологий, всё актуально и постоянно обновляется. Наличие выпускного проекта - ещё один огромный плюс, позволяет почувствовать что ты уже способен на что-то сам. В целом - прекрасный курс, огромное спасибо Григорию и команде javaops!

Пример 7-го занятия TopJava, некоторые видео открыты.

  • Основное внимание будет уделяться способам решения многочисленных проблем разработки в Spring 5/JPA, а также структурному (красивому и надежному) кодированию и архитектуре приложения.
  • Несмотря на относительно небольшой размер, приложение разрабатывается с нуля как большой проект (например, мы используем кэш 2-го уровня Hibernate, настраиваем Jackson для работы с ленивой загрузкой Hibernate, делаем конверторы для типов LocalDateTime (time API). Разбираются архитектурные паттерны: слои приложения и как правильно разбивать логику по слоям, когда нужно применят Data Transfer Object. На выходе получается не учебный проект, а хорошо маштабируемый шаблон для большого проекта на всех пройденных технологиях.
  • Большое внимание уделяется деталям: популяция базы, использование транзакционности, тесты сервисов и REST-контроллеров (в проекте более 100 JUnit тестов!), насторойка EntityManagerFactory, выбор реализации пула коннектов, кэширование на уровне Hibernate и приложения. Особое внимание уделяется работе с базой: через Spring JDBC Template, Spring ORM и Spring Data Jpa.
  • Используются самые востребованные на сегодняшний момент фреймворки: Maven, Spring 5, Hibernate 5.2, Ehcache 3.x, библиотека логирования logback, реализующая SLF4J, повсеместно используемый Bootstrap 4 и jQuery.
  • Код проекта постоянно рефакторится: появились настройки пользователя, сохранения собственных типов в Hibernate, модальные окна bootstrap, переключение локали, JsonView и Validation groups, сильно уменьшено количество и упрощена работа с java script. Появилась логика фильтрации таблицы и сброс фильтра. В каждом уроке добавляются ответы на ваши вопросы по занятию, дополнительные домашние задания и подсказки по выполнению домашних заданий.

Стоимость за месяц за 4 месяца стажировки
(с возможностью продления)
Скидка 25%

Без проверки
домашних заданий

  • Доступ ко всем материалам занятий
  • Ведение enterprise-проекта
  • Домашние задания к каждому занятию
  • Подробный видеоразбор решений домашних заданий
  • Большой чат в Telegram для общения и обмена опытом (на каждое занятие и тему - свой канал)
  • Ответы на все вопросы и помощь с проектом

С индивидуальной проверкой домашних заданий и ревью выпускного проекта

Ревью вашего кода позволит увидеть свои ошибки в стиле, структурах данных, алгоритмах и коде

Самый эффективный метод научиться программировать
Отзывы участников с проверкой

Всем участникам предоставляются:

Поддержка преподавателя, ответы на вопросы и обсуждение занятий и домашних заданий в группе участников.

Общение с нашими выпускниками в специальной группе Slack и канале Telegram

Свежие вакансии для начинающих разработчиков, помощь с Java, отзывы о работодателях, события IT, интересные видео...

Доступ ко всем материалам навсегда, без привязки ко времени и местоположению

Все видео доступны для просмотра онлайн и скачивания в любое время и без ограничения по срокам. Записи разбиты по темам и тщательно отредактированы. Большое количество подобранных ресурсов для углубления в детали.

Специальные цены участника на все наши проекты

Способы оплаты:

Возврат стоимости неактивированных курсов (при покупке пакета) и непроверенных уроков в течение месяца со дня оплаты

Результаты опроса выпускников:


Программа

  • Осваиваем Java Enterprise. Трудоустройство. Ответы на вопросы.
  • Системы управления версиями. Git.
  • Работа с проектом (выполнять инструкции)
  • Домашнее задание (HW0 + Optional)
  • Замечания к HW0
  • Разбор домашнего задания вступительного занятия (вместе с Optional)
  • Обзор используемых в проекте технологий. Интеграция ПО
  • Maven
  • WAR. Веб-контейнер Tomcat. Сервлеты
  • Логирование
  • Уровни и зависимости логгирования
  • Домашнее задание 1-го занятия (HW1 + Optional)
  • Разбор домашнего задания HW1 + Optional
  • Слои приложения. Создание каркаса приложения
  • Обзор Spring Framework. Spring Context
  • Пояснения к HW2. Обработка Autowired
  • Домашнее задание (HW2 + Optional)
  • Разбор домашнего задания HW2 + Optional
  • Жизненный цикл Spring-контекста
  • Тестирование через JUnit
  • Spring Test
  • Базы данных. Обзор NoSQL и Java persistence solution без ORM
  • Развертывание PostgreSQL. Docker
  • Настройка Database в IDEA
  • Скрипты инициализации базы. Spring Jdbc Template
  • Тестирование UserService через AssertJ
  • Логирование тестов
  • Домашнее задание (HW3 + Optional)
  • Разбор домашнего задания HW3 + Optional
  • Методы улучшения качества кода
  • Spring: инициализация и популирование DB
  • Подмена контекста при тестировании
  • ORM. Hibernate. JPA
  • Поддержка HSQLDB
  • Домашнее задание (HW4 + Optional)
  • Начало выполнения выпускного проекта
  • Обзор JDK 9/17. Миграция TopJava с 1.8 на 17
  • Разбор вопросов
  • Разбор домашнего задания HW4 + Optional
  • Транзакции
  • Профили Maven и Spring
  • Пул коннектов
  • Spring Data JPA
  • Spring кэш
  • Домашнее задание (HW5 + Optional)
  • Разбор домашнего задания HW5 + Optional
  • Кэш Hibernate
  • Spring Web
  • JSP, JSTL, internationalization
  • Динамическое изменение профиля при запуске
  • Конфигурирование Tomcat через maven plugin. Jndi-lookup
  • Spring Web MVC
  • Spring Internationalization
  • Домашнее задание (HW6 + Optional)
  • Разбор домашнего задания HW6 + Optional
  • Автогенерация DDL по модели
  • Тестирование Spring MVC
  • Миграция на JUnit 5
  • Принципы REST. REST-контроллеры
  • Тестирование REST-контроллеров. Jackson
  • jackson-datatype-hibernate. Тестирование через матчеры
  • Тестирование через SoapUi. UTF-8
  • Домашнее задание (HW7 + Optional)
  • Разбор домашнего задания HW7 + Optional
  • WebJars. jQuery и JavaScript frameworks
  • Bootstrap
  • AJAX. Datatables. jQuery
  • jQuery notifications plugin
  • Добавление Spring Security
  • Домашнее задание (HW8 + Optional)
  • Разбор домашнего задания HW8 + Optional
  • Spring Binding
  • Spring Validation
  • Перевод DataTables на Ajax
  • Форма login / logout
  • Реализация собственного провайдера авторизации
  • Принцип работы Spring Security. Проксирование
  • Spring Security Test
  • Cookie. Session
  • Домашнее задание (HW9 + Optional)
  • Разбор домашнего задания HW10 + Optional
  • Локализация datatables, ошибок валидации
  • Защита от XSS (Cross Site Scripting)
  • Обработка ошибок 404 (NotFound)
  • Доступ к AuthorizedUser
  • Ограничение модификации пользователей
  • Настройка хостинга и деплой на сервер (первое занятие курса Startup)
    • Регистрация хостинга, доступ к серверу
    • Создание пользователя, регистрация домена
    • Установка JDK
    • Установка Tomcat
    • Установка PostgreSQL, создание БД
    • Деплой war на сервер
  • Собеседование. Разработка ПО
  • Возможные доработки приложения
  • Основы Spring Boot. Spring Boot maven plugin
  • Lombok, база H2, ApplicationRunner
  • Spring Data REST + HATEOAS
  • Swagger/ OpenAPI 3.0
  • Тестирование и кэширование в Spring Boot
  • Миграция приложения TopJava на Spring Boot

Общий срок проверки + сдача выпускного проекта на ревью: 4 месяца с возможностью продления

Составление и ревью личного резюме

После стажировки мы составляем твое резюме Java разработчика:

  • Обязательно убери из резюме любое упоминание Junior. Количество обращений возрастет на порядок.
    Еще из рекомендаций сделать позицию: «Java-разработчик»
  • После завершения проекта ты освоишь все заявленные в нем технологии - вставь их в квалификацию.
    Обязательно должен быть Spring Boot, это майнстрим!
  • В разделе опыт работы (если нет коммерческого опыта Java разработчика) вставь:
    • участие в разработке Spring/ JPA enterprise-приложения c авторизацией и правами доступа на основе ролей на стеке: Maven, Spring MVC, Spring Security, REST (Jackson), Stream API:
      • реализация сохранения в базы PostgreSQL и HSQLDB на основе Spring JDBC, JPA(Hibernate) и Spring-Data-JPA
      • реализация и тестирование REST и AJAX контроллеров (более 130 JUnit тестов)
      • реализация клиента на Bootstrap (css/js), datatables, jQuery + plugins.
    • реализация с нуля приложения голосования за рестораны с REST API на стеке Spring Boot 4, Lombok, JPA, H2, Swagger/OpenAPI 3.0

Делай упор не на обучение, а на полученный практический опыт. Выполнение домашних заданий и собственный выпускной проект это полноценный опыт по всем пройденным технологиям. На собеседовании смотрят не на то, что ты заканчивал, а на твои практические навыки. Постарайся рассказать как можно больше о своем выпускном, участии в проекте и пройденных технологиях и оффер тебе обеспечен. Ссылку на компанию можно поставить, например в LinkedIn.

Ревью выпускного проекта

Начиная с 4-го занятия, участники разрабатывают собственный выпускной проект на стеке Maven/ Spring MVC, Security/ Hibernate/ REST, ревью которого входит в участие с проверкой. По данным National Training Laboratories "немедленное применение знаний на практике" дает максимальную эффективность обучения.

Трудоустройство

  • Если рассмотриваешь предложения по работе, подними в своем профиле этот флаг и обязательно заполни ссылку на резюме. Обновления нашей базы выпускников (за исключением корпоративных участников) смотрят уже более 750 партнеров по трудоустройству (компании и индивидуальные рекрутеры). Проверь содержание "Информация для HR": по нему принимают решение, смотреть резюме или нет.
  • Жду твой выпускной проект. С успешным выпускным проектом в большом городе не трудоустроится практически невозможно
  • Вступай в нашу общую группу участников Slack: каналы помощи с Java, отзывы о работодателях, обсуждение тестовых заданий, вакансии, цены на рынке труда, IT-события, интересные видео и многое другое.
  • Подпишись на рассылку вакансий под себя

После прохождения испытательного срока на первой работе
жду твою историю успеха

Отзывы реальных участников (более 250)

Отзыв Дмитрия Холодилова:

Всем привет!
В ИТ и в разработке ПО я не новичок, однако с миром Java не пересекался. Java Core изучал самостоятельно, но посмотрев на разгул фреймворков и спецификаций в Java EE, решил, что будет быстрее и эффективнее подписаться на какой-нибудь курс. Тут как раз встретился на просторах сети TopJava. Впечатлило количество технологий, при этом технологий востребованных на рынке – вывод делал по анализу вакансий на хедхантерских сайтах. Также плюсом TopJava виделось обучение через разработку веб проекта. Изучать программирование теоретически – бесполезная трата времени. Подписался на курс с проверкой заданий. Три месяца пролетели в активном кодинге и изучении нового. В целом остался очень и очень доволен.

Отмечу, что особенно понравилось:

  • Проект живой, в процессе выполнения заданий находились более актуальные и эффективные решения, и они включались в итоговую сборку.
  • Курс охватывает все основные аспекты разработки веб-приложения от БД до фронтенда, при этом демонстрируются подходы к решению задачи с помощью различных технологий. Например, работа с БД показана последовательно через Spring JDBC Template, JPA и Spring Data.
  • Не книжно-шаблонные, а реальные задачи и домашние задания дают понимание тонкостей и сложностей применяемых технологий

Считаю, что необходимо проходить этот курс с проверкой заданий. Код ревью дает обратную связь от разработчика с огромным опытом в Java. Всегда с большим интересом и нетерпением ждал проверок и получил массу полезных рекомендаций и комментариев по своему коду. Григорий, как истинный джавист, уделяет большое внимание качеству кода и рефакторингу. Подытоживая, рекомендую TopJava всем, кто готов погрузится в сложный, но интересный мир Java Enterprise. Для оптимальной отдачи от проекта нужна база в Java и программировании.

Григорию спасибо! Всем участникам проекта удачи и успеха!