Лекции Технопарка. 2 семестр. Java
[embedded content]В эфире очередной выпуск материалов рубрики «Лекции Технопарка». На этот раз вы можете изучить лекции курса, посвящённого углублённому программированию на Java. Цель курса — получение студентами практических навыков создания клиент-серверного приложения на примере разработки сервера простой многопользовательской online-игры в малых группах (4–6 человек).
Лекция 1. Знакомство, платформа Java, инструменты. Сервлеты История появления Java. Определения понятия «кроссплатформенность». Структурный состав Java-приложения. Цели, ради которых создавался язык, его преимущества и недостатки. Обзор платформы Java. Сборщик мусора. Версии Java. Именование в Java. Инструменты разработчика. Создание проекта. Знакомство с Jetty. Java Servlet. Примеры кода.[embedded content]
Лекция 2. Авторизация пользователя. Шаблоны, коллекцииПостановка задачи по авторизации пользователя, описание условий. Модули и процессы, задействованные в операциях регистрации, авторизации, обработки учётной записи и выхода пользователя. Знакомство с шаблонами Java. Класс с шаблонным типом. Метод с шаблонным типом. Синтаксис. Сужение области параметра. Специфика использования шаблонов. Шаблоны и наследование. Определение коллекций. Интерфейсы для работы с коллекциями. Иерархия контейнеров. List, Set, Queue, Map. Интерфейс сравнения Comparable. HTTP-сессии.[embedded content]
Лекция 3. Углубленные основы языка, развёртывание проекта Наследование в Java. Множественное наследование. Работа с классами. ClassLoader — загрузчик данных о классе. Основные методы класса. Примитивные типы и их обёртки. Boxing и Unboxing. Массивы в Java. Строковые переменные. Размер объектов в Java. Администрирование сервера. PORT в параметры. Maven — средство сборки. Сборка и запуск проекта. Остановка сервера.[embedded content]
Лекция 4. Тестирование и нагрузка Обеспечение качества ПО: критерии, оценка соответствия критериям, формальные проверки. Автоматизация обеспечения качества: статический анализ кода, тесты, коммит-хуки, непрерывная интеграция. Подходы к тестированию. Юнит-тесты. Функциональное и нагрузочное тестирование. Проверка отдельных модулей. Безопасный рефакторинг. Совместимость модулей. Защита от повторения багов. Требования к тестам. Первый тест. Терминология тестирования. Абстракция. Интерфейс и реализация тестов. Дублёры: Fake, Dummy, Stabs, Spies, Mocks, Mockito. Правила проведения тестирования. Ожидание исключения. Функциональные тесты. Организация, инструменты и результаты нагрузочного тестирования. Сборщик мусора. Интерфейс Autoclosable. Сборщик мусора в Java 7 и 8. Логирование. Удалённый дебаггинг. Использование расширения Java Management eXtension.[embedded content]
Лекция 5. Интерфейсы. Аннотации. Игровая механика. Утилиты Организация кода. Интерфейсы. Сервисы и дескрипторы. Изменения кода. Реакторинг. Аннотации — метаданные о коде. NotNull. Стандартные аннотации. Синтаксис, обработка и виды аннотаций. WebSockets. Разбор игровой механики и соединения с пользователем на примере игры «Кто больше накликает». Шаблоны Singleton и Context. Исключения и их роль. Класс Throwable. События, их регистрация. Pattern Observer. Коллбэки.[embedded content]
Лекция 6. Работа с файловой системой Потоки ввода-вывода. Байтовые потоки (Byte Streams). Шаблон Decorator. Закрытие потоков. Понятие сериализации. Интерфейс Serializable. Что подвергается и не подвергается сериализации. Запись в файл. Десериализация. Reflection: разбор объекта и его перевод в массив байт. Возможности Reflection, его недостатки. ReflectionHelper. Сериализация XML-документа. SAX-парсер, его методы. Десериализация XML. Обработчик. Использование Reflection. DOM-парсер. Ресурсная система, интерфейс Resource, фабрика ресурсов.[embedded content]
Лекция 7. Работа с базами (часть 1) Термины и сокращения. Инструменты. Определение и особенности JDBC, его API. Управление драйверами JDBC. Соединение с базой (Connection). Состояния соединений (Statements). Объект ResultSet. Решение задачи передачи интерфейса в Java 7 и Java 8 (лямбда-выражение). Объект Executor, содержащий методы для работы с запросами. Обновление и выбор состояний. Вызов execQuery. Типизация.[embedded content]
Лекция 8. Работа с базами (часть 2) Связь между объектной моделью программы и реляционной моделью базы (Object-Relational Mapping). Java Persistence API. DataSet — объект, содержащий данные одной строки таблицы. Объект доступа к данным (Data Access Object), варианты операций над базой. Интерфейс UsersDAO. ORM-библиотека Hibernate, её конфигурирование. Создание или проверка схемы базы при создании SessionFactory. Фабрика сессий (Session Factory). Аннотации для DataSet. Знакомство с Hibernate Query Language. Вставка и чтение HQL, поиск по ключу, получение всех записей. Сервис, скрывающий работу с базой (Database Service). Транзакции на две и более таблиц.[embedded content]
Лекция 9. Многопоточность Определение процессов и потоков. Роль операционной системы при работе с потоками. Интерфейс Runnable. Класс Thread. Доступ к объекту потока. Остановка выполнения и прерывание выполнения потока. Остановка текущего потока для окончания другого. Термины, связанные с многопоточностью. Критический участок кода. Семафор, Mutex. Мягкая и обязательная блокировки. Высокоуровневая конструкция Monitor. Взаимодействие потоков. Возможные ошибки одновременного доступа. Модель взаимодействия потоков через общую память. Синхронизация, её методы и состояния. Блокировка объектов. Ситуация Deadlock. Служба в отдельном потоке. Методы wait () и notify (). Контейнеры, безопасные для многопоточного доступа.[embedded content]
Лекция 10. Система обмена сообщениями Архитектура сервера, вариант без многопоточности. Понятие системы обмена сообщениями в рамках сервера. Взаимодействие потоков. Объект для обмена данными MessageSystem. Классы Address, Abonent и Message. Сообщение об авторизации. Иерархия сообщений. Использование MessageSystem. Взаимодействие потоков Frontend и AccountService. Состояния. Балансировка нагрузки: AddressService.[embedded content]
Предыдущие выпуски Технопарк: Техносфера: Подписывайтесь на youtube-канал Технопарка и Техносферы!