Полная программа
Java Developer.
Professional
Java Developer. Professional
Длительность курса: 190 часов
Модуль 1. Продвинутый Java Core
Тема 1 Цель занятия
Знакомство с курсом. познакомиться с программой курса;
Введение в системы обсудить организационные вопросы;
сборки проектов узнать зачем нужны системы сборки проектов.
Краткое содержание
программа курса;
организационные вопросы;
введение в системы сборки проектов
Тема 2 Цель занятия
Gradle детально изучить Gradle
Краткое содержание
build.gradle;
задачи (tasks);
Gradle wrapper;
структура Gradle проекта;
Java plugin;
зависимости;
репозитории
Тема 3 Цель занятия
Углубленный разбор научиться работать с Git на продвинутом уровне
Git
Краткое содержание
принципы работы Git;
откат изменений;
работа с ветками;
merge vs rebase;
конфигурирование локального и удаленного репозитория.
Тема 4 Цель занятия
Продвинутое изучить библиотеки для тестирования JUnit и Mockito;
тестирование // ДЗ научиться покрывать код тестами
Краткое содержание
принципы покрытия кода тестами;
детальный разбор библиотек JUnit и Mockito
Домашние задания
Практика тестирования
Цель
Научиться покрывать код тестами.
Тема 5 Цель занятия
Основы JVM и научиться работать и конфигурировать JVM;
Garbage Collector познакомиться со сборщиком мусора в Java.
Краткое содержание
принципы работы JVM;
концепция сборки мусора в JVM;
виды сборщиков мусора;
мониторинг работы сборщиков;
примеры проблем производительности, связанных с мусором.
Тема 6 Цель занятия
Reflection API + познакомиться с механизмом Reflection в Java;
Аннотации // ДЗ узнать что такое аннотации и как с ними работать.
Краткое содержание
Reflection API;
аннотации;
разбор класса "на части"
Домашние задания
Построение "тестового фреймворка" на основе Reflection API
Цель
Понять механизм работы Reflection API
Тема 7 Цель занятия
Углубленное ООП углубить знания в теме ООП
Краткое содержание
внутренние, вложенные, анонимные внутренние классы;
функциональные интерфейсы;
лямбды
Тема 8 Цель занятия
Stream API // ДЗ Научиться обрабатывать наборы объектов с помощью Stream API
Краткое содержание
Stream API
создание потоков (streams)
промежуточные операции
терминальные операции
примеры работы с коллекциями через Stream API
Домашние задания
Практика Stream API
Цель
Научиться работать с Stream API
Тема 9 Цель занятия
Многопоточность. Научиться строить эффективные многопоточные приложения
Часть 1
Краткое содержание
Повторение основ работы с многопоточностью в Java
Тема 10 Цель занятия
Многопоточность. Научиться строить эффективные многопоточные приложения
Часть 2
Краткое содержание
пулы потоков;
пакет java.util.concurrent;
интерфейс Lock и его реализации.
Тема 11 Цель занятия
Многопоточность. познакомиться с основными проблемами многопоточности;
Часть 3 // ДЗ объяснить зачем придумали JMM;
рассмотреть основные положения JMM.
Краткое содержание
детально про Java Memory Model
основная проблема многопоточности;
«железные» оптимизации;
«программные» оптимизации;
Volatile;
Happens before;
Lock-free алгоритмы, CAS.
Домашние задания
Практика многопоточности
Цель
Понять как работают пулы потоков в Java
Тема 12 Цель занятия
Чистый код и научиться писать качественный код
рефакторинг
Краткое содержание
избавляемся от мусора в коде;
лаконичные конструкции;
написание структур данных;
как избегать ошибок;
переиспользование кода.
Тема 13 Цель занятия
Профилирование и получить навыки отладки и профилирования приложений
отладка
Краткое содержание
дебагинг в IDEA;
дебагинг приложения;
точка остановы;
точка остановы с условием;
цепочка точек основ с условием;
дебагинг стримов;
изменение значений переменных, фреймов и т.д. в дебагинге;
профилирование, fly recorder;
мониторинг приложения в VisualVM
Модуль 2. Проектирование
Тема 1 Цель занятия
Концепты научиться проектировать приложения
проектирования ООП
Краткое содержание
идеальная архитектура;
coupling и cohesion;
полиморфизм;
SOLID, DRY, KISS принципы.
Тема 2 Цель занятия
Паттерны. Часть 1 // изучить часто встречаемые в работе паттерны
ДЗ
Краткое содержание
абстрактная фабрика;
фабричный метод;
фасад;
строитель;
итератор
Домашние задания
Практика по работе с паттернами
Цель
Умение использовать паттерны в работе
Тема 3 Цель занятия
Паттерны. Часть 2 // изучить часто встречаемые в работе паттерны
ДЗ
Краткое содержание
прокси;
chain of responsibility;
декоратор;
синглтон
Домашние задания
Практика по работе с паттернами
Цель
Научиться работать с паттернами
Модуль 3. Работа с РСУБД
Тема 1 Цель занятия
Общие вопросы изучить архитектуру РСУБД
работы с СУБД,
архитектура РСУБД
Краткое содержание
архитектура РСУБД;
планы запросов;
статистика;
индексы;
уровни изоляции
Тема 2 Цель занятия
Углубленный разбор детально разобраться в технологии JDBC
JDBC
Краткое содержание
CRUD операции на JDBC;
управление уровнями изоляции и транзакциями;
драйвера;
пулы подключений
Тема 3 Цель занятия
Взаимодействие Java изучить способы организации взаимодействия Java приложений с
приложений с базами реляционными базами данных
данных // ДЗ
Краткое содержание
разбор способов организации взаимодействия Java приложений с
реляционными базами данных
Домашние задания
Продвинутая практика по работе с JDBC
Цель
Закрепить навыки работы с JDBC
Тема 4 Цель занятия
Построение сложных научиться строить сложные SQL запросы
запросов
Краткое содержание
практика построения SQL запросов
Модуль 4. Введение в веб-разработку
Тема 1 Цель занятия
Подробно про детально разобраться в протоколе HTTP.
протокол HTTP // ДЗ
Краткое содержание
протокол HTTP;
HTTP запросы и ответы, их структура;
HTTP методы;
заголовки;
коды ответов;
Домашние задания
Самописный веб-сервер
Цель
Разобраться как работают Java сервера приложений
Тема 2 Цель занятия
Web сервер // ДЗ разобраться на примере Java EE приложения как работают веб-
приложения на языке Java.
Краткое содержание
сервера приложений;
сервлеты: servlet API, жизненный цикл сервлета;
Java EE веб-приложения.
Домашние задания
Основы разработки веб-приложений на Java
Цель
Научиться на базовом уровне работать с Java EE
Тема 3 Цель занятия
Spring Context // ДЗ узнать фундаментальные основы Inversion of Control (IoC) и
Dependency Injection (DI);
научиться работать с Spring Context и Spring бинами.
Краткое содержание
понятия Inversion of Control (IoC) и Dependency Injection (DI);
что такое Spring Context;
что такое Spring бины;
способы конфигурирования контекста;
способы создания и конфигурирования бинов;
Домашние задания
Практика Spring Context
Цель
Научиться работать с Spring Context
Тема 4 Цель занятия
Spring Boot. Часть 1 // познакомиться со Spring Boot и научиться с ним работать.
ДЗ
Краткое содержание
что такое Spring Boot;
стартеры;
простое Spring Boot приложение;
структура Spring приложения;
базовые возможности.
Домашние задания
Основы построения веб-приложений с использованием Spring Boot
Цель
Научиться основам построения веб-приложений с использованием
Spring Boot
Модуль 5. Java Persistence API
Тема 1 Цель занятия
Основы познакомиться с Java Persistence API и Hibernate.
JPA/Hibernate. Часть
1
Краткое содержание
спецификация Java Persistence API;
сущности;
требования к сущностям;
состояния сущностей;
жизненный цикл сущностей;
контекст постоянства;
связь между Hibernate и JPA.
CRUD операции.
Тема 2 Цель занятия
Основы познакомиться с Java Persistence API и Hibernate.
JPA/Hibernate. Часть
2 // ДЗ
Краткое содержание
связи между сущностями;
управление связями.
кеширование;
стратегии загрузки сущностей;
понимание N + 1 проблемы;
управление транзакциями.
Домашние задания
Применение Java Persistence API
Цель
Научиться работать с Hibernate
Тема 3 Цель занятия
Spring Data JPA научиться работать со Spring Data JPA;
узнать как Spring Data JPA позволяет упростить работу.
Краткое содержание
что такое Spring Data JPA;
репозитории;
работа с сущностями;
управление транзакциями;
выполнение нативных SQL и JPQL запросов;
миграция БД с помощью Flyway.
Тема 4 Цель занятия
Язык запросов JPQL // изучить язык запросов JPQL.
ДЗ
Краткое содержание
JPQL запросы.
Домашние задания
Использование Hibernate
Цель
На практике освоить основы Hibernate.
Понять как аннотации-hibernate влияют на формирование sql-
запросов.
Тема 5 Цель занятия
Spring Data JDBC // ДЗ научиться работать со Spring Data JDBC;
узнать разницу между Spring Data JPA и Spring Data JDBC.
Краткое содержание
основные приемы использования Spring Data JDBC;
репозитории;
формирование запросов;
отличия Spring Data JDBC от Spring Data JPA.
Домашние задания
Практика Spring Data JDBC
Цель
Научиться работать с Spring Data JDBC
Модуль 6. Продвинутая веб-разработка
Тема 1 Цель занятия
Spring Boot. Часть 2 познакомиться со Spring Boot и научиться с ним работать.
Краткое содержание
конфигурирование приложения;
профили;
продвинутая работа с Spring Boot.
Тема 2 Цель занятия
Архитектура REST изучить принципы построения REST сервисов.
Краткое содержание
основные принципы REST API;
взаимодействие между сервисами;
единый формат обмена данными JSON;
взаимодейтсиве фронт-бэк
версионирование и стратегии версионирования;
обработка ошибок;
документирование API.
Тема 3 Цель занятия
Построение REST- научиться правильно проектировать REST сервисы на Spring.
сервисов на Spring //
ДЗ
Краткое содержание
REST API в Spring;
WebClient;
RestTemplate;
DTO;
Swagger;
обработка ошибок;
JSON.
Домашние задания
Построение REST сервсиов на Spring Boot
Цель
Понять принципы построения REST сервисов на Spring Boot
Тема 4 Цель занятия
Сериализация // ДЗ познакомиться с функционалом сериализации объектов.
Краткое содержание
библиотеки для сериализации объектов;
настройка процесса сериализации.
Домашние задания
Сериализация и десериализация Java объектов
Цель
Научиться сериализовывать и десериализовывать Java объекты
Тема 5 Цель занятия
Основы Spring изучить основы Spring Security.
Security. Часть 1.
Введение в
безопасность веб-
приложений
Краткое содержание
авторизация и аутентификация;
рользователи, роли и пермиссии;
минимальная конфигурация Spring Security;
базовые классы SpringSecurity;
матчеры;
защита от Session Fixation, CSRF.
Тема 6 Цель занятия
Основы Spring получить навыки развертывания безопасного распределенного веб-
Security. Часть 2 приложения со внешней авторизацией на основе Keycloak и Spring
Security;
изучить основные понятия Application Security.
Краткое содержание
"проблемы безопасности в вебе. Протокол http, слабые ключи и хэши,
самоподписанные сертификаты
авторизация и аутентификация;
варианты выбора;
OAuth/OpenId;
виды токенов;
Keycloak как сервер авторизации и аутентификации;
сквозная авторизация/аутентификация;
System и Application security (краткий экскурс).
Тема 7 Цель занятия
HTTPS изучить принципы построения защищенного канала между
приложениями на основе протокола https.
Краткое содержание
ассиметричное шифрование
электронная цифровая подпись
электронный сертификат
протокол HTTPS. HTTPS handshake
keystore, truststore, CRL (Certificate Revocation List).
Тема 8 Цель занятия
Docker для познакомиться с основами Docker и научиться его использовать.
разработчиков
Краткое содержание
контейнеризация приложений;
виртуализация и контейнеризация;
LXC (Linux Containers), возможности Linux для создания контейнеров;
что такое Docker и его архитектура;
чем Docker полезен разработчику;
как сделать Docker-образ для java-приложения.
Тема 9 Цель занятия
Применение Kafka. познакомиться с платформой Kafka и возможностями ее
Часть 1 применения в Java приложениях.
Краткое содержание
что такое Kafka;
принципы работы Kafka;
топики;
партицирование;
consumer groups.
Тема 10 Цель занятия
Применение Kafka. познакомиться с платформой Kafka и возможностями ее
Часть 2 применения в Java приложениях.
Краткое содержание
интеграция Kafka с Java веб-приложениями.
Тема 11 Цель занятия
Spring JMS // ДЗ узнать специфику работы Spring приложения с системами обмена
сообщениями через JMS.
Краткое содержание
что такое Spring JMS;
подключение к Kafka через Spring JMS;
подключение к RabbitMQ через Spring JMS.
Домашние задания
Практика работы с Spring JMS
Цель
Научиться работать с Kafka из Spring веб-приложения
Тема 12 Цель занятия
Введение в научиться строить веб-приложения с микросервисной архитектурой.
микросервисы. Часть
1 // ДЗ
Краткое содержание
практика по построению микросервисного веб-приложения.
Домашние задания
Практика по работе с микросервисами
Цель
Научиться разрабатывать микросервисы
Тема 13 Цель занятия
Введение в научиться строить веб-приложения с микросервисной архитектурой.
микросервисы. Часть
2 // ДЗ
Краткое содержание
практика по построению микросервисного веб-приложения.
Домашние задания
Практика по работе с микросервисами
Цель
Научиться разрабатывать микросервисы
Тема 14 Цель занятия
Введение в научиться строить веб-приложения с микросервисной архитектурой
микросервисы. Часть
3 // ДЗ
Краткое содержание
практика по построению микросервисного веб-приложения.
Домашние задания
Практика по работе с микросервисами
Цель
Научиться разрабатывать микросервисы
Модуль 7. Проектная работа
Тема 1 Цель занятия
Основы CI/CD познакомиться с основами развертывания приложений.
Краткое содержание
проблемы "ручной" сборки приложения и деплоя;
что такое CI/CD, что это дает;
популярные инструменты: Jenkins, TeamCity, GitLab;
понятие CI/CD pipeline;
CI/CD pipeline на примере GitLab.
Тема 2 Цель занятия
Знакомство с узнать, что такое Kubernetes и чем он полезен Java-разработчику.
Kubernetes
Краткое содержание
что такое Kubernetes;
основные части (абстракции);
требования к приложению;
демонстрация Minikube;
демонстрация managed Kubernetes.
Тема 3 Цель занятия
Консультация по получить ответы на вопросы по проекту, ДЗ и по курсу.
проектным работам
Краткое содержание
вопросы по улучшению и оптимизации работы над проектом;
затруднения при выполнении ДЗ;
вопросы по программе.
Домашние задания
Проект
Цель
применение полученных знаний в создании проекта;
формирование проекта для портфолио.
Тема 4 Цель занятия
Защита проектных защитить проект и получить рекомендации экспертов.
работ
Краткое содержание
презентация проектов перед комиссией;
вопросы и комментарии по проектам.