Программирование интернет-приложений (до 2017)
Программирование интернет-приложений (до 2017):
- Методические указания (конспект лекций, 1 семестр, 2010 - JDK6 + Swing)
- Методические указания (конспект лекций, 1 семестр, 2015 - JDK8)
- Презентации лекций (1 семестр, требуется авторизация)
- Слайды с лекций (2 семестр, требуется авторизация)
- Лекция по Spring
- Лекция по React
- Задания к лабораторным работам
- Вопросы к экзамену (1 семестр)
Лабораторная работа #1
На языке Java написать простейшую консольную программу, выводящую в поток System.out список переданных ей аргументов командной строки. Дополнить эту программу использованием любого из классов стандартной библиотеки или любой синтаксической конструкции языка Java.
Отчёт по лабораторной работе должен содержать:
- Текст задания.
- Исходный код получившейся программы.
- Описание базовых утилит в составе JDK - java, javac, javadoc, jar и наиболее часто используемых аргументов этих команд.
- Выводы по работе.
Вопросы к защите лабораторной работы:
- Язык Java. Особенности языка.
- Средства разработки. Состав JDK.
- Переменные окружения. Classpath.
Лабораторная работа #2
Скомпилировать и запустить исходный код на языке программирования Java, выданный в соответствии с вариантом. Разобраться том, как реализуются принципы объектно-ориентированного программирования в получившейся программе, и том, почему она выдаёт такой результат. Добавить комментарии в ключевые фрагменты программы, поясняющие её поведение.
Отчёт по работе должен содержать:
- Текст задания.
- Код получившейся программы.
- Результаты выполнения.
- Выводы по работе.
Вопросы к защите лабораторной работы:
- Объектно-ориентированное программирование. Основные понятия: объекты, наследование, полиморфизм, инкапсуляция.
- Классы и интерфейсы. Наследование и реализация. Реализация методов "по умолчанию" в интерфейсах.
- Переменные в Java и их области видимости.
- Простые типы данных, классы-оболочки.
- Управляющие конструкции.
- Модификаторы.
- Использование объектов.
- Функциональные интерфейсы. Лямбда-выражения.
Вопросы к защите лабораторной работы:
- Основные пакеты JDK 1.8.
- Пакет java.lang.*. Классы Object, Class, System.
- Обработка исключительных ситуаций, три типа исключений.
- Работа с массивами данных.
- Класс String.
- Классы InputStream, InputStreamReader.
- Пакет java.nio. Класс Buffer. Каналы ввода-вывода.
- Коллекции. Сортировка элементов коллекций.
- Параметризованные типы.
Вопросы к защите лабораторной работы:
- Компоненты пользовательского интерфейса. Иерархия компонент.
- Базовый класс Component и Container.
- Менеджеры компоновки.
- Модель обработки событий. Класс-слушатель и класс-событие.
- События AWT.
- Технология JavaFX. Особенности архитектуры, отличия от AWT / Swing.
- Компоненты JavaFX. Особенности реализации обработки событий
- Способы задания разметки интерфейса в JavaFX. SceneBuilder.
- Многопоточные программы. Концепции.
- Класс Thread и интерфейс Runnable.
- Состояние потока. Синхронизация потока.
- Пакет java.util.concurrent. Интерфейс Lock и его реализации.
- Атомарные операции.
Вопросы к защите лабораторной работы:
- Интернационализация и локализация.
- Способы хранения локализованных данных. Классы ResourceBundle, PropertyResourceBundle, ListResourceBundle.
- Форматирование числовых данных. Классы NumberFormat, DecimalFormat, DecimalFormatSymbols.
- Форматирование даты и времени. Классы DateFormat, SimpleDateFormat, DateFormatSymbols.
- Сетевое взаимодействие - клиент-серверная архитектура, основные протоколы, их сходства и отличия.
- Протокол TCP. Классы Socket и ServerSocket.
- Протокол UDP. Классы DatagramSocket и DatagramPacket.
- Передача данных по сети. Сериализация объектов, интерфейс Serializable.
- Механизм рефлексии (reflection) в Java. Класс Class.
Вопросы к защите лабораторной работы:
- Протокол HTTP. Структура запросов и ответов, методы запросов, коды ответов сервера, заголовки запросов и ответов.
- Язык разметки HTML. Особенности, основные теги и атрибуты тегов.
- Структура HTML-страницы. Объектная модель документа (DOM).
- HTML-формы. Задание метода HTTP-запроса. Правила размещения форм на страницах, виды полей ввода.
- Каскадные таблицы стилей (CSS). Структура - правила, селекторы. Виды селекторов, особенности их применения. Приоритеты правил. Преимущества CSS перед непосредственным заданием стилей через атрибуты тегов.
- LESS, Sass, SCSS. Ключевые особенности, сравнительные характеристики. Совместимость с браузерами, трансляция в "обычный" CSS.
- Клиентские сценарии. Особенности, сферы применения. Язык JavaScript.
- Версии ECMAScript, новые возможности ES6 и ES7.
- Синхронная и асинхронная обработка HTTP-запросов. AJAX.
- Библиотека jQuery. Назначение, основные API. Использование для реализации AJAX и работы с DOM.
- Реализация AJAX с помощью SuperAgent.
- Серверные сценарии. CGI - определение, назначение, ключевые особенности.
- FastCGI - особенности технологии, преимущества и недостатки относительно CGI.
- Язык PHP - синтаксис, типы данных, встраивание в веб-страницы, правила обработки HTTP-запросов. Особенности реализации принципов ООП в PHP.
Разработать веб-приложение на базе сервлетов и JSP, определяющее попадание точки на координатной плоскости в заданную область.
Приложение должно быть реализовано в соответствии с шаблоном MVC и состоять из следующих элементов:
- ControllerServlet, определяющий тип запроса, и, в зависимости от того, содержит ли запрос информацию о координатах точки и радиусе, делегирующий его обработку одному из перечисленных ниже компонентов. Все запросы внутри приложения должны передаваться этому сервлету (по методу GET или POST в зависимости от варианта задания), остальные сервлеты с веб-страниц напрямую вызываться не должны.
- AreaCheckServlet, осуществляющий проверку попадания точки в область на координатной плоскости и формирующий HTML-страницу с результатами проверки. Должен обрабатывать все запросы, содержащие сведения о координатах точки и радиусе области.
- Страница JSP, формирующая HTML-страницу с веб-формой. Должна обрабатывать все запросы, не содержащие сведений о координатах точки и радиусе области.
Разработанная страница JSP должна содержать:
- "Шапку", содержащую ФИО студента, номер группы и номер варианта.
- Форму, отправляющую данные на сервер.
- Набор полей для задания координат точки и радиуса области в соответствии с вариантом задания.
- Сценарий на языке JavaScript, осуществляющий валидацию значений, вводимых пользователем в поля формы.
- Интерактивный элемент, содержащий изображение области на координатной плоскости (в соответствии с вариантом задания) и реализующий следующую функциональность:
- Если радиус области установлен, клик курсором мыши по изображению должен обрабатываться JavaScript-функцией, определяющей координаты точки, по которой кликнул пользователь и отправляющей полученные координаты на сервер для проверки факта попадания.
- В противном случае, после клика по картинке должно выводиться сообщение о невозможности определения координат точки.
- После проверки факта попадания точки в область изображение должно быть обновлено с учётом результатов этой проверки (т.е., на нём должна появиться новая точка).
- Таблицу с результатами предыдущих проверок. Список результатов должен браться из контекста приложения, HTTP-сессии или Bean-компонента в зависимости от варианта.
Страница, возвращаемая AreaCheckServlet, должна содержать:
- Таблицу, содержащую полученные параметры.
- Результат вычислений - факт попадания или непопадания точки в область.
- Ссылку на страницу с веб-формой для формирования нового запроса.
Разработанное веб-приложение необходимо развернуть на сервере WildFly. Сервер должен быть запущен в standalone-конфигурации, порты должны быть настроены в соответствии с выданным portbase, доступ к http listener'у должен быть открыт для всех IP.
Вопросы к защите лабораторной работы:
- Java-сервлеты. Особенности реализации, ключевые методы, преимущества и недостатки относительно CGI и FastCGI.
- Контейнеры сервлетов. Жизненный цикл сервлета.
- Диспетчеризация запросов в сервлетах. Фильтры сервлетов.
- HTTP-сессии - назначение, взаимодействие сервлетов с сессией, способы передачи идентификатора сессии.
- Контекст сервлета - назначение, способы взаимодействия сервлетов с контекстом.
- JavaServer Pages. Особенности, преимущества и недостатки по сравнению с сервлетами, область применения.
- Жизненный цикл JSP.
- Структура JSP-страницы. Комментарии, директивы, объявления, скриптлеты и выражения.
- Правила записи Java-кода внутри JSP. Стандартные переменные, доступные в скриптлетах и выражениях.
- Bean-компоненты и их использование в JSP.
- Стандартные теги JSP. Использование Expression Language (EL) в JSP.
- Параметры конфигурации JSP в дескрипторе развёртывания веб-приложения.
- Шаблоны проектирования и архитектурные шаблоны. Использование в веб-приложениях.
- Архитектура веб-приложений. Шаблон MVC. Архитектурные модели Model 1 и Model 2 и их реализация на платформе Java EE.
Вопросы к защите лабораторной работы:
- Технология JavaServer Faces. Особенности, отличия от сервлетов и JSP, преимущества и недостатки. Структура JSF-приложения.
- Использование JSP-страниц и Facelets-шаблонов в JSF-приложениях.
- JSF-компоненты - особенности реализации, иерархия классов. Дополнительные библиотеки компонентов. Модель обработки событий в JSF-приложениях.
- Конвертеры и валидаторы данных.
- Представление страницы JSF на стороне сервера. Класс UIViewRoot.
- Управляемые бины - назначение, способы конфигурации. Контекст управляемых бинов.
- Конфигурация JSF-приложений. Файл faces-config.xml. Класс FacesServlet.
- Навигация в JSF-приложениях.
- Доступ к БД из Java-приложений. Протокол JDBC, формирование запросов, работа с драйверами СУБД.
- Концепция ORM. Библиотеки ORM в приложениях на Java. Основные API. Интеграция ORM-провайдеров с драйверами JDBC.
- Библиотеки ORM Hibernate и EclipseLink. Особенности, API, сходства и отличия.
- Технология JPA. Особенности, API, интеграция с ORM-провайдерами.
- Платформа Java EE. Спецификации и их реализации.
- Принципы IoC, CDI и Location Transpanency. Компоненты и контейнеры.
- Управление жизненным циклом компонентов. Дескрипторы развёртывания.
- Java EE API. Виды компонентов. Профили платформы Java EE.
- Компоненты EJB. Stateless & Stateful Session Beans. EJB Lite и EJB Full.
- Работа с электронной почтой в Java EE. JavaMail API.
- JMS. Реализация очередей сообщений. Способы доставки сообщений до клиента. Message-Driven Beans.
- Понятие транзакции. Управление транзакциями в Java EE. JTA.
- Веб-сервисы. Технологии JAX-RS и JAX-WS.
- Платформа Spring. Сходства и отличия с Java EE.
- Модули Spring. Архитектура Spring Runtime. Spring Security и Spring Data.
- Реализация IoC и CDI в Spring. Сходства и отличия с Java EE.
- Реализация REST API в Java EE и Spring.
- React JS. Архитектура и основные принципы разработки приложений.
- Компоненты React. State & props. "Умные" и "глупые" компоненты.
- Разметка страниц в React-приложениях. JSX.
- Навигация в React-приложениях. ReactRouter.
- Управление состоянием интерфейса. Redux.
- Angular: архитектура и основные принципы разработки приложений.
- Angular: модули, компоненты, сервисы и DI.
- Angular: шаблоны страниц, жизненный цикл компонентов, подключение CSS.
- Angular: клиент-серверное взаимодействие, создание, отправка и валидация данных форм.