Основы Java SE - HTTP Server
4.1 (30 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
153 students enrolled

Основы Java SE - HTTP Server

Программирование на Java
4.1 (30 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
153 students enrolled
Created by DevStudy .net
Last updated 9/2019
Russian
Current price: $13.99 Original price: $19.99 Discount: 30% off
5 hours left at this price!
30-Day Money-Back Guarantee
This course includes
  • 26 hours on-demand video
  • 12 articles
  • 15 downloadable resources
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
Training 5 or more people?

Get your team access to 4,000+ top Udemy courses anytime, anywhere.

Try Udemy for Business
What you'll learn
  • Создавать классы объектов предметной области;
  • Использовать принципы ООП (инкапсуляцию, наследование и полиморфизм) на практике;
  • Работать с абстрактными классами и интерфейсами;
  • Использовать интерфейсы для создания слабых связей в приложении;
  • Корректно обрабатывать ошибке в Java программах;
  • Использовать наиболее подходящий класс коллекции для решения любой задачи;
  • Работать с потоками данных, читать и писать файлы на жестком диске;
  • Создавать и управлять потоками выполнения;
  • Взаимодействовать с реляционными базами данных с помощью JDBC;
  • Использовать логгер в проекте;
  • Создавать Unit тесты;
  • Использовать такие инструменты как Maven, Cobertura, FingBugs для сборки качественного продукта на Java.
Course content
Expand all 32 lectures 26:10:54
+ Обзор основных принципов ООП в Java
11 lectures 08:48:11
  1. Предпосылки создания объектно-ориентированного программирования (ООП);

  2. Определение объектно-ориентированного программирования;

  3. Класс - универсальный, комплексный тип данных;

  4. Примеры декомпозиции игры Крестики-нолики на классы;

  5. Класс Student как пример сложной структуры данных;

  6. Понятия объекта, ссылки, new, null и сборщика мусора (GC);

  7. Значения по умолчанию для полей класса;

  8. Проблема динамических массивов;

  9. Пример класса решающий проблему динамического массива;

  10. Важность инкапсуляции на примере динамического массива;

  11. Модификаторы доступа к полям и методам класса;

  12. Применение модификаторов доступа к полям и методам класса динамического массива;

  13. Конструкторы;

  14. Задание начальных значений полей объекта;

  15. Ключевое слово this;

  16. Полноценный класс Student;

  17. Соглашение об именовании в Java;

  18. Выводы;

Preview 01:36:02
Домашнее задание: Введение в ООП. Классы. Инкапсуляция
02:26
  1. Выполнение домашнего задания с предыдущего урока:

  2. Определение наследования;

  3. Реализация наследования на примере класса ForeignStudent;

  4. Назначение ключевого слова protected;

  5. Композиция vs наследование;

  6. Переопределение методов;

  7. Вызов родительского метода с дочернего класса;

  8. Восходящий поиск выполняемого метода;

  9. Ссылка на родительский класс;

  10. Определение полиморфизма;

  11. Перегрузка методов;

  12. Перегрузка vs Переопределение;

  13. Единый родитель. Object;

  14. Методы equals, hashCode и toString;

  15. Иерархия DataSet: DynaArray и LinkedList;

  16. Демонстрация преимуществ наследования структур данных;

  17. Передача по ссылке объектов в методы;

  18. Ключевое слово final;

  19. Пример неизменяемого объекта: ImmutableDataSet;

  20. Демонстрация восходящего поиска метода на примере toString();

  21. Определение типа: instanceof vs getClass();

  22. Выводы;

Лекция 2. Наследование и полиморфизм в Java
01:33:26
Домашнее задание: Наследование и полиморфизм в Java
00:39
  1. Выполнение домашнего задания с предыдущего урока;

  2. Статические переменные;

  3. Статические методы;

  4. Инициализация статических и нестатических полей;

  5. Инициализация final полей;

  6. Абстрактные классы;

  7. Типы классов в Java;

  8. Непубличный класс, доступный только внутри пакета;

  9. Внутренний статический и нестатический класс;

  10. Внутренний анонимный класс;

  11. Создание объектов в Java. Шаблон Singleton;

  12. Параметризация;

  13. Object vs T;

  14. Классы-обвертки над примитивами;

  15. Параметризация динамического массива и двусвязного списка;

  16. Параметризация конвертера;

  17. Выводы;

  18. Пояснение синтаксической конструкции переменного числа параметров метода;

Лекция 3.Статические методы, переменные и секции. Абстрактные внутренние классы.
01:32:30
Домашнее задание: Статические методы, переменные и секции.
00:04
  1. Выполнение домашнего задания с предыдущего урока:

  2. Определение интерфейса;

  3. Интерфейс vs абстрактный класс;

  4. Проблема множественного наследования;

  5. Решение проблемы ромба в JDK 1.8;

  6. implements vs extends;

  7. Разрешение неопределенности с помощью интерфейсов;

  8. Создание слабых связей между компонентами программы с помощью интерфейсов;

  9. Указатель на функцию (Шаблон Callback);

  10. Сравнение объектов больше/меньше. java.lang.Comparable;

  11. Поиск максимума;

  12. Нестандартный порядок сравнения. java.util.Comparator;

  13. Перечисления (Enum);

  14. Создание перечисления CellValue;

  15. Пользовательские атрибуты перечислений;

  16. Выводы;

Лекция 4.Интерфейсы, Перечисления
01:32:04
Домашнее задание: Интерфейсы, Перечисления
00:16
  1. Выполнение домашнего задания с предыдущего урока:

  2. Определение исключительной ситуации (Exception);

  3. Иерархия исключений;

  4. Генерация исключений: Автоматическая и программная;

  5. Обработка исключений;

  6. Выполнение методов при возникновении исключения;

  7. Особенности проверяемых исключений;

  8. Checked (проверяемые) vs unchecked (непроверяемые) исключения;

  9. Рекомендации по использованию сhecked и unchecked исключений;

  10. Полезные примеры при работе с исключениями;

  11. Как и где обрабатывать исключение;

  12. Правильное сообщение об ошибке;

  13. Как интерпретировать трассу стека;

  14. Создание пользовательских исключений;

  15. Выводы;

Лекция 5. Обработка ошибок. Exceptions
01:34:47
Домашнее задание: Обработка ошибок. Exceptions
00:17
  1. Выполнение домашнего задания с предыдущего урока;

  2. Перечисление CellValue;

  3. Игровое поле;

  4. Алгоритм проверки победителя;

  5. Алгоритм хода компьютера;

  6. Как решить проблему с разработкой алгоритма игры, если никогда не разрабатывал и не знаешь с чего начать;

  7. Диаграмма классов для игры Гомоку;

  8. Обзор кода игры Гомоку;

  9. Преимущества интерфейсов при проектировании игры Гомоку;

  10. Выводы;

Лекция 6. Использование ООП для реализации игры Гомоку
55:39
+ Обзор Java API для взаимодействия с окружением
7 lectures 07:29:06
  1. Определение коллекций;

  2. Интерфейс java.util.Collection;

  3. Интерфейс java.util.List;

  4. ArrayList vs LinkedList;

  5. Интерфейс java.util.Set;

  6. Реализации множества: HashSet, LinkedHashSet и TreeSet;

  7. Интерфейс java.util.Map;

  8. HashMap. Алгоритм хеширования;

  9. Требования к реализации метода hashCode();

  10. Демонстрация потери объекта в хеш карте;

  11. LinkedHashMap. Хеширование и связный список;

  12. TreeMap. Сбалансированное двоичное дерево;

  13. Set vs Map;

  14. Comparable vs Comparator;

  15. Сравнение по равно. Определение дубликата;

  16. Коллекции и массивы;

  17. Проход по элементам коллекции. Синтаксис foreach;

  18. Шаблон Iterator;

  19. java.lang.Iterable;

  20. Collections utils;

  21. Другие коллекции: Queue, Deque, Hashtable, Vector, Stack;

  22. Использование коллекций для решения задачи поиска слов в тексте;

  23. Выводы;

Лекция 7. Структуры данных в Java. Collections
01:43:59
Домашнее задание: Структуры данных в Java. Collections
01:51
  1. Выполнение домашнего задания с предыдущего урока:

  2. Определение потока ввода/вывода;

  3. Подсистема IO в Java;

  4. java.io.InputStream;

  5. Потомки InputStream;

  6. java.io.OutputStream;

  7. Потомки OutputStream;

  8. java.io.Reader;

  9. Потомки Reader;

  10. java.io.Writer;

  11. Потомки Writer;

  12. Чтение текста из файла;

  13. Закрытие ресурсов. try with resources конструкция;

  14. Копирование потоков;

  15. java.io.File;

  16. java.nio.file.Path;

  17. Поиск файлов;

  18. java.nio.file.Files;

  19. Properties файлы;

  20. System.out.println;

  21. Выводы;

Лекция 8. Работа с потоками данных в Java. IO. Files, Properties
01:51:59
Домашнее задание: Работа с потоками данных в Java. IO. Files, Properties
01:35
  1. Выполнение домашнего задания с предыдущего урока;

  2. Определение процесса;

  3. Определение потока (нити) выполнения;

  4. Простая программа;

  5. javaw процесс;

  6. Многопоточность;

  7. Выполнение задачи в потоке;

  8. Интерфейс java.lang.Runnable;

  9. Класс java.lang.Thread;

  10. Свойства потока;

  11. Методы потока;

  12. Остановка потока;

  13. Проблема синхронизации ресурсов;

  14. Схема работы синхронизации ресурсов;

  15. synchronized методы и блоки;

  16. Понимание работы synchronized;

  17. Ключевое слово volatile;

  18. ThreadLocal переменные;

  19. ExecutorService;

  20. Выводы;

Лекция 9. Работа с потоками (нитями) выполнения в Java. Threads. ExecutorService
01:45:35
Домашнее задание: Работа с потоками (нитями) выполнения в Java. Threads.
00:47
  1. Выполнение домашнего задания с предыдущего урока:

  2. Определение технологии JDBC;

  3. Архитектура JDBC;

  4. Основные классы и интерфейсы JDBC;

  5. Типы данных: DataBase vs Java;

  6. Последовательность работы с JDBC;

  7. Регистрация драйвера;

  8. Строка подключения;

  9. Получение соединения;

  10. Объекты SQL команд;

  11. Методы SQL команд;

  12. Выполнение запросов;

  13. ResultSet – набор данных;

  14. Обработка результата запроса;

  15. Обработка любого результата запроса;

  16. Примеры операторов DML;

  17. Пакетное выполнение запросов;

  18. MySQL вместо PostgreSQL;

  19. Управление транзакциями;

  20. JDBCUtils;

  21. Пул соединений;

  22. Выводы;

Лекция 10. Работа с реляционными базами данных в Java. JDBC.
02:03:19
+ Обзор Java инструментов для разработки ПО
4 lectures 04:26:34
  1. Выполнение домашнего задания с предыдущего урока;

  2. Важность логирования;

  3. System.out.println(): достоинства и недостатки;

  4. Логгеры: Log4j, java.util.logging, Apache Commons Logging, Simple Logging Facade for Java, Logback;

  5. SLF4J + Logback: необходимые библиотеки;

  6. logback.xml;

  7. Пример логирования;

  8. Уровни логирования;

  9. Пример использование логгера в приложении;

  10. Appender, Encoder, Layout;

  11. Конфигурация;

  12. Отладочные сообщения - не забываем о производительности;

  13. Выводы;

Preview 01:08:02
  1. Выполнение домашнего задания с предыдущего урока;

  2. Определение процесса тестирования программного обеспечения;

  3. Классификация по степени автоматизации;

  4. Уровни тестирования;

  5. Регрессионное тестирование;

  6. Библиотека JUnit;

  7. main vs JUnit;

  8. ArithmeticOperationTests;

  9. Окружение теста;

  10. Результаты тестирования;

  11. Опции теста;

  12. Методы сравнения. Assert;

  13. Тестирование исключений;

  14. Пример пользовательского Matcher;

  15. Работа с внешними ресурсами теста;

  16. Параметризованные тесты;

  17. Stubs & Mocks;

  18. Использование Mocks с помощью Mockito;

  19. Обзор библиотеки Mockito;

  20. Корректное написание теста;

  21. Пример реального теста;

  22. Выводы;

Лекция 12. Unit тестирование в Java. Junit. Mockito.
01:53:25
Домашнее задание: Unit тестирование в Java. Junit. Mockito.
00:11
  1. Выполнение домашнего задания с предыдущего урока:

  2. Определение сборщика проектов;

  3. Сборщики проектов Java: Ant, Maven, Gradle;

  4. Maven: архетипы;

  5. Maven: структура проекта;

  6. Maven: pom.xml: packaging;

  7. Maven: pom.xml: dependencies;

  8. Dependency Scope;

  9. Maven repositories;

  10. Жизненный цикл Maven проекта;

  11. Использование maven build plugins в проекте Gomoku;

  12. Использование maven reporting plugins в проекте Gomoku;

  13. Выводы;

Лекция 13. Сборщик проектов Maven
01:24:56
+ Проектирование HTTP сервера на Java
10 lectures 05:27:01
  1. Определение протокола HTTP;

  2. Свойства протокола;

  3. URI (Uniform Resource Identifier);

  4. Структура протокола;

  5. Стартовая строка HTTP;

  6. Методы запроса;

  7. Коды состояния;

  8. Заголовки HTTP;

  9. Тело сообщения HTTP;

  10. Версии протоколов;

Preview 24:04
  1. Определение сокета;

  2. Поиск приложения в сети: адрес и порт;

  3. Клиентские и серверные сокеты;

  4. Пример клиентского сокета;

  5. Пример клиентского защищенного (SSL) сокета;

  6. Пример серверного сокета;

  7. HTTP запрос / ответ;

  8. Обработка keep-alive;

  9. Перечень функций, которые должен поддерживать HTTP сервер;

  10. Архитектура HTTP сервера;

  11. Выводы;

Лекция 15. Работа с сетью. Сокет. Архитектура будущего HTTP сервера
46:26
  1. Создание Maven проекта, добавление зависимостей и плагинов;

  2. Создание интерфейсов HTTP: HttpServer, HttpRequest, HttpResponse;

  3. Создание интерфейсов шаблонизации: HtmlTemplateManager и ServerInfo;

  4. Создание интерфейса контекста: HttpServerContext;

  5. Создание интерфейсов обработки запросов: HttpHandler, HttpRequestDispatcher;

  6. Создание классов исключений: HttpServerException, BadRequestException, HttpVersionNotSupportedException, MethodNotAllowedException;

  7. Создание интерфейсов обработки данных: HttpClientSocketHandler, HttpRequestParser, HttpResponseBuilder, HttpResponseWriter, HttpServerConfig;

  8. Создание пакета будущих реализаций: net.devstudy.httpserver.io.impl;

  9. Создание класса CLI для запуска сервера;

  10. Описание задачи парсинга HTTP запроса и формирования HTTP ответа;

  11. Примеры HTTP запросов;

Лекция 16. Создание ключевых интерфейсов и классов архитектуры HTTP сервера
01:16:09
  1. Выполнение домашнего задания с предыдущего урока:

  2. Реализация DefaultHttpServerConfig;

  3. Реализация DefaultHttpServerContext;

  4. Реализация DefaultThreadFactory;

  5. Реализация DefaultClientSocketHandler;

  6. Реализация DefaultHttpServer;

  7. Реализация HttpServerFactory;

  8. Создания обработчика по умолчанию, который отображает Hello World на любой запрос;

  9. Демонстрация работы сервера, согласно разработанной архитектуры;

  10. Алгоритм обработки HTTP запроса в Debug режиме сервера;

  11. Демонстрация работы пула рабочих потоков сервера;

Лекция 17. Создание основных компонентов HTTP сервера
01:16:20
  1. Выполнение домашнего задания с предыдущего урока;

  2. Реализация HandlerConfig;

  3. Реализация HtmlTemplateManager;

  4. Создание диспетчера запросов по умолчанию;

  5. Обработчик статического содержимого;

  6. Обработчик отображения информации о сервере;

  7. Обработчик работы с JDBC;

  8. Демонстрация работы обработчиков ошибок;

  9. Демонстрация работы отображения информации о сервере;

  10. Демонстрация работы с JDBC;

  11. Демонстрация проблем с базой данных, если соединения не будут закрываться;

  12. Демонстрация расширения возможностей сервера;

Лекция 18. Создание диспетчера запросов и стандартных обработчиков для сервера
37:43
  1. Выполнение домашнего задания с предыдущего урока;

  2. Обзор реализованных функций сервера;

  3. Тестирование HttpRequestParser;

  4. Тестирование HttpUtils;

  5. Тестирование ReadableHttpResponse;

  6. Тестирование HttpRequestDispatcher;

  7. Сборка проекта и запуск написанных тестов;

  8. Оценка покрытия тестами проекта;

Лекция 19. Написание тестов для проекта HTTP сервер
22:20
  1. Выполнение домашнего задания с предыдущего урока:

  2. Демонстрация важности unit тестов для проекта и выявления регрессионных ошибок;

  3. Демонстрация использования HTTP сервера конечным пользователем:

    1. Запуск приложения с командной строки: java -jar httpserver.jar;

    2. Использование командного файла для запуска HTTP сервера;

    3. Создание Windows сервиса для запуска HTTP сервера;

    4. Запуск и остановка Windows сервиса HTTP сервера;

    5. Интеграция HTTP сервера с другим Java проектом;

  4. Выводы;

Preview 43:34
Requirements
  • Базовые знания по основам программирования (Для получения этих знаний рекомендуем курс Основы программирования - Крестики-нолики);
  • Базовые знания SQL: select, insert, update, delete.(Необходимы при изучении JDBC) (Для получения этих знаний рекомендуем курс Основы SQL).
Description

Данный курс предназначен для изучения основ Java Standart Edition: принципов ООП в Java (инкапсуляция, наследование и полиморфизм), классов, абстрактных классов и интерфейсов, правил обработки исключений, использование коллекций, работа с потоками данных и потоками (нитями) выполнения, взаимодействия с реляционными базами данных; а также для изучения таких инструментов как логгер, сборщик проекта Maven, библиотеки JUnit и Mockito для написания Unit тестов; и практического закрепления теоретических знаний на примере реализации приложения HTTP сервер.

Приложение HTTP сервер - автономное Java приложение, которое умеет принимать запросы и отдавать запрашиваемые файлы браузеру используя протокол HTTP. На последнем занятии курса будет продемонстрировано каким образом возможно создать Windows сервис для автономной работы HTTP сервера в фоновом режиме в качестве обычного сервиса.

Обучающий процесс построен по следующему принципу: на каждом уроке после лекционного материала, Вам выдается домашнее задание, которое нужно выполнить для закрепления пройденного материала. На каждом последующем занятии выполняется проверка домашнего задания с объяснением как оно должно было быть выполнено. Если Вам кажется, что какое-то домашнее задание сложное - просто рассмотрите его выполнение в следующем уроке. После рассмотрения Вы поймете каким образом решается подобная задача и в дальнейшем будете использовать данные знания для решения других задач.

Курс ориентирован на людей, которые успешно прошли (Основы программирования - Крестики-нолики) и хотят освоить объектно-ориентированную Java и набор API из пакета Java Standart Edition.

Основной цель данного курса является предоставить хороший фундамент в изучении основ Java: рассмотреть основные компоненты Java, которые позволяют писать приложения любой сложности и закрепить изучение компонентов созданием полноценного Java приложения на примере реализации проекта HTTP сервер.

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

После успешного прохождения данного курса, для развития в направлении web и enterprise рекомендуем курс Web приложение - IShop.

Для получения дополнительной информации по теме данного курса, рекомендуем следующие источники информации:

  • Томас Х. Кормен, Алгоритмы. Вводный курс (Algorithms Unlocked) - М.:Вильямс, 2016. - 208 с. - ISBN 978-5-8459-1868-0, 978-5-8459-2073-7

  • Томас Х. Кормен, Алгоритмы. Построение и анализ (Introduction to Algorithms) - М.:Вильямс, 2016. - 1328 с. - ISBN 978-5-8459-2016-4

  • Роберт Лафоре, Структуры данных и алгоритмы в Java (Data Structures & Algorithms in Java) - СПб.:Питер, 2016. - 704 с. - ISBN 978-5-496-00740-5

  • Герберт Шилдт, Java. Руководство для начинающих (Java: A Beginners Guide) - М.:Вильямс, 2016 - 720 с. - ISBN 978-5-8459-1955-7

  • Брюс Эккель, Философия Java (Thinking in Java (4th Edition)) - СПб.:Питер, 2016 - 1168 с. - ISBN 978-5-496-01127-3

Who this course is for:
  • Данный курс предназначен для изучения основ Java Standart Edition