1. Цикл разработки
Обзор целей и структуры курса, цикл разработки, процесс разработки, инструментальное окружение разработчика ПО
2. Среды разработки
Обзор основных возможностей сред разработки на технологии Java. Обоснование выбора среды IntelliJ IDEA
Практика: Установка и настройка среды, загрузка проекта из каталога с использованием скриптов автосборки, загрузка из систем контроля версий (СКВ), создание нового проекта с нуля, запуск проекта на исполнение, запуск модульных тестов
3. Работа с кодом
Описание структуры проекта. Организация мультиязычного проекта. Размещение тестового кода и ресурсов, профили. Навигация, редактирование и рефакторинг. Разработка через тестирование. Управление библиотеками.
Практика «Организация проекта и работа с кодом в среде IntelliJ IDEA»: Работа с существующим кодом, решение типовых задач цикла разработки в отношении исходного кода.
4. Автоматизация сборки
Артефакты. Сборка артефактов и другие элементы цикла разработки. Средства автоматизации цикла разработки, ориентированные на применение сценариев (скриптов): Ant, Maven, Gradle. Структура и синтаксис скриптов различных инструментов. Задача управления зависимостями
Практика «Инструмент Gradle»: build.gradle: очистка, сборка, тестирование, запуск, управление зависимостями. Работа в командной строке и в среде IntelliJ IDEA
5. Взаимодействие с системами контроля версий
Задача управления версиями. Эволюция систем контроля версий (СКВ). Централизованные и распределенные системы. Обзор возможностей систем SVN и Git. Связь возможностей СКВ и цикла разработки. Работа с СКВ в командной строке и в среде разработки IntelliJ IDEA
Практика «Система контроля версий Git»: Типовые действия в СКВ на примере инструмента Gradle: организация веток, ветвление - слияние, создание и применение патчей, просмотр истории, сравнение изменений, нтеграция СКВ со средой IDEA, работа в командной строке
6. Взаимодействие с базами данных
СУБД с точки зрения разработчика приложений. Средства предоставляемые современными СУБД. Средства среды IntelliJ IDEA Ultimate. Взаимодействие приложений на Java и СУБД. Проблема сопровождения конфигурации БД и исходного кода.
Практика «Взаимодействие с СУБД. JDBC, Hibernate, JPA»: Создание пустой БД, подключение, формирование запросов. CRUD-операции
Практика «Управление БД с помощью Liquibase»: Настройка, управление скриптами сопровождения БД
7. Модульное тестирование
Модульное тестирование, принципы разработки через тестирование. Фреймворки тестирования. Применение заглушек.
Практика «Разработка через тестирование Junit»: Базовые возможности. Интеграция со средой разработки IntelliJ IDEA
Практика «Фреймворк Mockito»: Применение заглушек
8. Элементы параллельного программирования
Параллельное (многопоточное) программирование в Java: базовые средства, эволюция. Высокоуровненвые средства многопоточности.
Практика «Базовые средства многопоточности, синхронизация: Thread, Runnable. Жизненный цикл потоков».
Практика «Высокоуровневые средства многопоточности».