Разработка web-приложения "База данных резюме"

В данном курсе вы создадите с нуля web-приложение, реализуя разные способы хранения резюме. Проект включает в себя следующее:

  • Технологии: Java 8, GitHub/Git, JUnit, Logging, GSON, JAXB, SQL, PostgreSQL, Сервлеты, HTML, JSP, JSTL, Tomcat, Maven и многое другое
  • Различные способы реализации хранения резюме:
    • в сортированном и не сортированном массиве
    • в коллекциях (List, Map)
    • в файловой системе:
      • с использованием File и Path API
      • в стандартной и кастомной сериализации Java
      • в формате JSON (Google Gson)
      • в формате XML (JAXB)
    • в реляционной базе PostgreSQL
  • Установку (деплой) web-приложения:
    • в контейнер сервлетов Tomcat
    • в облачный сервис Heroku

Любое знание стоит воспринимать как подобие семантического дерева: убедитесь в том, что понимаете фундаментальные принципы, то есть ствол и крупные ветки, прежде чем лезть в мелкие листья-детали. Иначе последним не на чем будет держаться

— Илон Маск

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

Программа курса

Занятие 1 (бесплатное)

  • Обзор курса и методики обучения
  • Подготовка и настройка рабочего окружения
  • Подходы, применяемые при разработке ПО
  • Обзор инструментов и технологий, используемых Java-разработчиками
  • Введение в язык Java: история создания, JDK, JVM, JRE, JIT-компиляция
  • Системы управления версиями. Git
  • Домашнее задание

Занятие 2

  • Типы данных
  • Введение в объектно-ориентированное программирование
  • Принципы ООП
  • Классы и объекты
  • Классы-обертки
  • Модификаторы доступа
  • Конструктор
  • Структура памяти java-программы: Heap (куча), Stack (стек)
  • Пакеты
  • Домашнее задание

Занятие 3

  • Разбор домашнего задания
  • Обзор суперкласса Object
  • Связь между equals() и hashCode()
  • Статические методы и переменные
  • Программирование с помощью интерфейсов
  • Абстрактные классы
  • Сложность алгоритмов
  • Паттерн проектирования Template Method
  • Домашнее задание

Занятие 4

  • Разбор домашнего задания
  • Конструктор
  • Работа со строками: String, StringBuilder, StringBuffer
  • String literal pool
  • Исключения (Exceptions)
  • Ключевые слова: this, super
  • Reflection
  • Аннотации
  • Введение в модульное тестирование. JUnit
  • Домашнее задание

Занятие 5

  • Разбор домашнего задания
  • Коллекций. Иерархия классов
  • Списки (List)
  • Множества (Set)
  • Ассоциативные массивы (Map)
  • Введение в Iterator
  • Домашнее задание

Занятие 6

  • Разбор домашнего задания
  • Паттерн проектирования Iterator
  • Autoboxing и Unboxing
  • Вложенные классы
  • Внутренние классы
  • Локальные классы
  • Анонимные классы
  • Введение в лямбда-выражения
  • Функциональный интерфейс
  • Домашнее задание

Занятие 7

  • Разбор домашнего задания
  • Дженерики (Generic)
  • Введение в логирование. Log4J, Java Logging API
  • Паттерн проектирования Singleton
  • Перечисления (Enum)
  • Объектная модель
  • Домашнее задание

Занятие 8

  • Разбор домашнего задания
  • Классы работы с датами: Date, Calendar, TimeZone
  • Дата и время в Java 8+
  • File API
  • Освобождение ресурсов: try-with-resources
  • Домашнее задание

Занятие 9

  • Разбор домашнего задания
  • Обзор пакета java.io
  • Классы чтения/записи потоков: InputStream и OutputStream
  • Паттерн проектирования Decorator
  • Классы чтения/записи символов: Reader и Writer
  • Сериализация объектов
  • Обзор пакета java.nio
  • Введение в Java 8+ Stream API
  • Домашнее задание

Занятие 10

  • Разбор домашнего задания
  • Паттерн проектирования Strategy
  • Работа с XML (JAXB)
  • Работа с JSON (GSON)
  • Классы чтения/записи примитивных типов: DataInputStream и DataOutputStream
  • Домашнее задание

Занятие 11

  • Многопоточность
  • Закон Мура и Амдала
  • Потоки. Синхронизация доступа
  • Обзор методов класса Object
  • Ленивая инициализация
  • Java Memory Model
  • Deadlock
  • Домашнее задание

Занятие 12

  • Разбор домашнего задания
  • Обзор классов java.util.concurrent
  • Синхронизаторы
  • ThreadLocal-переменные
  • Сравнение с обменом (Compare-and-swap)
  • Домашнее задание

Занятие 13

  • Разбор домашнего задания
  • Введение в реляционные базы данных
  • Язык SQL
  • Обзор NoSQL баз данных
  • Установка и настройка СУБД PostgreSQL
  • Работа с базами данных из IDEA
  • Конфигурирование базы данных и каталога хранения
  • Подключение базы данных к проекту
  • Обзор JDBC-архитектуры
  • Домашнее задание

Занятие 14

  • Разбор домашнего задания
  • Операции соединения таблиц. JOIN
  • Транзакции
  • Требования к транзакциям. ACID
  • Уровни изоляции транзакций в SQL
  • Установка и настройка контейнера сервлетов Tomcat
  • Домашнее задание

Занятие 15

  • Разбор домашнего задания
  • Введение в HTML
  • Основы протокола HTTP
  • Настройка web.xml
  • Деплой web-приложения в Tomcat
  • Сервлеты
  • Домашнее задание

Занятие 16

  • Разбор домашнего задания
  • Жизненный цикл сервлета
  • Создание динамических страниц. JSP
  • Расширенные возможности JSP. JSTL
  • Redirect и Forward
  • CRUD-операции
  • Домашнее задание

Занятие 17

  • Разбор домашнего задания
  • Деплой приложения в облачный сервис Heroku
  • Загрузка классов в Java. Classloader
  • Домашнее задание

Рекомендуемые книги

Ресурсы в сети