Начало занятий в сентябре

Разработчик Java Enterprise

Общая стоимость: 43 000 ₽
В месяц: 12 500 ₽
4 часа в неделю
4 месяца
О курсе

Курс полезен для:
•Разработчиков Java, желающих расширить свои знания и приобрести навыки разработки приложений уровня Enterprise
•Программистов, хорошо владеющих другими серверными языками программирования Perl, PHP, .Net, etc, желающих переиспользовать знания и умения при работе со стеком JavaEE
•Неравнодушных к программированию, жаждущих учиться и быть востребованным на рынке труда

По окончании курса вы сможете проектировать, разрабатывать, поддерживать современные многоуровневые Enterprise приложения на Java, способные решать актуальные проблемы любого предприятия, а также понять принципы работы используемых технологий и протекающих «под капотом» процессов

Особенности программы:
• Значимые проблемы и технологии
• Практическая составляющая каждого вебинара
• Актуальные техники и методики разработки
• Использование удобных инструментов и средств командной разработки
• Портфолио
• Вопросы для прохождения собеседований
• Постоянная связь с преподавателем
• Лицензия пользования IntelliJ IDEA Ultimate Edition на срок обучения

Ключевые вопросы, ответы на которые Вы получите во время обучения:
- Как правильно выбрать окружение JavaEE?
- Как выглядит стандартный pipeline разработки Java-приложения для Enterprise?
- Какие возможности появились с приходом JavaEE 8 и что ожидает стэк JakartaEE в будущем?
- Как взаимодействовать с разными форматами данных, а также DBMS и MOM-серверами?
- В чем разница SOAP и RESTful-сервисов? Как выбрать нужный подход?
- Как устроены веб-сокеты?
- Как реализуется DI в JavaEE?

По окончании курса у вас будет в полном распоряжении доступ к:
- всем презентациям занятий;
- исходному коду и тестам, которые подготавливаются перед занятием и во время него;
- видеозаписям (в полной и мобильной версиях) всех вебинаров;
- 16 мини-проектам на базе выполненных домашних заданий;
- проектной работе на интересующую Вас тему;
- ссылкам на полезные источники (книги, статьи, прочие материалы) для расширения знаний предметной области;
- ответам на часто задаваемые вопросы на собеседованиях для соискателей направления JavaEE;
- сообществу Java и преподавателю для содействия в решении интересующих в дальнейшем вопросов.

Продолжительность данного курса составляет 4 месяца, три из которых посвящены непосредственно процессу обучения, а финальный отводится для выполнения проектной работы и оттачивания полученных навыков разработки. Расписание занятий включает 2 вебинара в неделю, по времени занимающих не менее двух академических часов на каждый, и от 6-8 часов на выполнение домашней самостоятельной работы.

Программа курса
Модуль 1
Контейнеры, уровень данных
Модуль 2
Web-профиль
Модуль 3
SOA
Модуль 4
Бизнес-логика
Модуль 5
Проект
Контейнеры, уровень данных
Данный блок дает возможность прокачать навыки развертывания разработческих окружений при работе со стеком технологий JavaEE, позволяет сформировать общее представление об архитектуре современных приложений, а также научит разрабатывать приложения, способные интегрироваться с СУБД и обрабатывать данные, используя широкоиспользуемые форматы данных – XML и JSON.
Вводное занятие. Знакомство со стеком JavaEE
Обзор и цель курса. Многоуровневая архитектура приложения: обзор спецификации JavaEE/JakartaEE, web и full-профили. Области применения и вендоры. UML-проектирование.
Домашние задания: 1
ДЗ
Основные модели приложения. Различия между архитектурными подходами. Тонкий и толстый клиент. Выделение слоев на примере информационной системы..
JavaEE-окружения
Контейнеры и сервера приложений. Tomcat vs GlassFish. Конфигурирование и администрирование, мониторинг и профилирование, remote debugging. Embedded-режим работы. Типичная структура артефакта приложения. Дескриптор развертывания. Подготовка dev-окружения.
Работа с базами данных. JDBC vs JPA
Реляционная СУБД. SQL, stored procedure, PL/SQL. Архитектура JDBC. Соединение с базой данных. Драйверы СУБД и их менеджер. Запросы Statement, PreparedStatement и CallableStatement. Транзакции и автокоммит. Работа с СУБД в рамках JavaEE-окружения. ConnectionPool. ORM. Обзор спецификации JPA. Паттерн DAO.
Домашние задания: 1
ДЗ
Проектирование предметной области. Схема СУБД. DML, DDL. Работа с SQL, PL/SQL посредством JDBC..
Обработка XML
Язык XML. JAXP и JAXB. Валидация и XSD. Выражения и функции XPath.
Парсинг JSON
Структура JSON. JSONP и JSONB. JSONSchema. JSONPath. Конвертация XML-JSON. Работа с YAML.
Домашние задания: 1
ДЗ
. Генерация и модификация XML. Поиск и извлечение данных в XML. Сериализация/десериализация JSON-данных..
Web-профиль
Данный блок курса нацелен на изучение особенностей разработки веб-приложений с использованием JavaEE. Он включает в себя изучение фронтенд-технологий и получение навыков работы с HTML, CSS, JavaScript. Также в рамках данного блока детально рассматриваются технологические возможности Java для реализации Интернет-решений. На примере зарекомендовавших фреймворков и библиотек (GWT, Struts, JQuery и т.д.) будут рассмотрены возможности расширения клиентских возможностей разрабатываемых веб-приложений.
Основы веба. Статичный и динамичный HTML
World Wide Web. URI, URL, URN. Протокол HTTP/s. Client API. HTML5, JS, CSS3, AJAX. Парсер Jsoup. Проект Nashorn.
Домашние задания: 1
ДЗ
Вёрстка веб-контента и его стилизация. Переходы между страницами. Вычисления на клиенте.
Client Layer
Обзор существующих JS-фреймворков. Клиентский и серверный рендеринг DOM. Архитектура Single Page Application. Возможности GWT: UIBinder, RPC, i18n и прочее. Bean Validation.
Домашние задания: 1
ДЗ
Исполнение клиентской логики средствами JS. Валидация входных данных. Асинхронные запросы. JSONP..
Servlet API
Схема взаимодействия запрос/ответ. Методы доступа HTTP и их назначение. Коды состояний ответов. Сервлет и его жизненный цикл. Сессионность. Параметры запроса. Заголовки запроса/ответа. Cookie. Контекст сервлета. Проблемы многопоточности. Server PUSH. Server Sent Events.
Взаимодействие сервлетов
Фильтры и их жизненный цикл. WebEvents и слушатели. Servlet Collaboration. Диспетчеризация запросов. Servlet Thread Model и асинхронность. Обеспечение безопасности.
Домашние задания: 1
ДЗ
Генерация динамического контента на базе пользовательских данных и входящих параметров. Файловые вложения. Перенаправления запросов. Работа с пользовательскими cookies..
Серверные страницы Java
Назначение JSP. Основные JSP-элементы: scripting, directives, actions, EL. Встроенные объекты. JSP-процессинг и жизненный цикл.
Пользовательские теги
Кастомные JSP-теги. Обработчики тегов. Tag Library Descriptor. Вложенность тегов.
Домашние задания: 1
ДЗ
Динамические серверные страницы. Работа с кодировками. Трансляция и компиляция JSP. Обработка ИС во время генерации страницы. Язык выполнения..
Шаблонизаторы
JSTL. Шаблонизаторы Freemarker и Mustache.
Web Frameworks
Шаблон проектирования MVC. Struts2 vs JSF. Паттерн MVP. GWT Activity/Places.
Домашние задания: 1
ДЗ
MVC-веб проект. Action. Конфигурирование struts.xml.
Веб-сокеты
HTTP vs WS. Http Upgrade. Схема ws/wss. Клиент-сервер в технологии вебсокетов. Форматы сообщений. Encoder/Decoder. Области применения.
Непрерывная интеграция
Java Build Tools. CI/CD. Jenkins. Контейнеризация средствами Docker.
SOA
Сервис-ориентированная архитектура (SOA). Этот блок курса призван познакомить слушателя с возможностями проектирования и создания сервисно-ориентированной архитектуры с использованием протоколов REST и SOAP на платформе Java. Отдельное внимание уделяется вопросу документирования подобных сервисов и как они могут облегчить жизнь при интеграции с внешними командами.
SOAP-вебсервисы
Протокол SOAP. JAX-WS. Клиент и обработка исключений. WSDL.
Домашние задания: 1
ДЗ
Самописный REST API.
RESTful-сервисы
Обзор SOA. REST и принципы построения API. Сравнение с SOAP. JAX-RS и Jersey. Обеспечение безопасности.
Расширенные возможности JAX-RS
JAX-RS Client. Асинхронный и реактивный JAX-RS. JavaEE Concurrency. WADL. Библиотека Swagger. Проблемы REST.
Домашние задания: 1
ДЗ
Интеграция со сторонними сервисами..
Бизнес-логика
Данный блок курса посвящен вопросам инкапсуляции бизнес-логики в приложении JavaEE. Слушатель познакомится и получит навыки работы с основными типами Enterprise Java бинов, принимая во внимание области их применения. Также будут рассмотрены вопросы транзакционности исполняемой бизнес-логики, сквозной функциональности и повторного переиспользования.
Основы EJB
Архитектура EJB.Сессионные бины: Stateless, Stateful. Singleton. Local, LocalBean vs Remote. Поддержка асинхронности. TimerServiceAPI.
Домашние задания: 1
ДЗ
Инкапсуляция бизнес-логики и ее переиспользование. Stateless и Stateful session beans. MDB. Entity Beans..
Персистентность и транзакционность
Жизненный цикл Entity. PesistenceUnit и PersistenceContext. Persistence.xml. Методы-колбэки сущностей. Работа с транзакциями JTA. ACID. Менеджер транзакций и атрибуты. Ручное и декларативное управление границами транзакций.
Аспекто-ориентированный подход
Кросс-функциональность. Основные элементы AOP. JavaEE Interceptors. AspectJ.
Домашние задания: 1
ДЗ
Сквозная функциональность. Валидация входных параметров и результата..
Внедрение зависимостей
IoC-контейнеры. Паттерн DI. Спецификация CDI. Injection Points. Квалификаторы. Типы контекстов. Методы продюсеры. Альтернативы, перехватчики, декораторы, стереотипы, наблюдатели. AsyncEvents. Сравнение и синергия с EJB.
JMS
MOM-сервера. Архитектура JMS. Структура сообщения. Queue и Topic. Синхронный и асинхронный режимы получения сообщений. Message-Driven бины.
Домашние задания: 1
ДЗ
Обработка очередей..
Генерация отчетности
JasperReport и JasperSoft Studio. JavaMail.
Проект
Выполнение проектной работы можно рассматривать как этап создания портфолио для будущей карьеры слушателя. Потенциальный работодатель сможет оценить профессиональный уровень и навыки владениями технологиями, рассматриваемыми в данном курсе. Также успешно выполнив работу, слушатель научиться решать коммерческие задачи практически любой сложности, при этом получив навыки командной разработки и поработав действительно с актуальными технологиями, фреймворками и инструментарием.

Работа над проектом.
Минимальные требования для прохождения курса
Входными требованиями для изучения курса «Разработчик JavaEE» являются уверенное знание платформы JavaSE и поверхностное понимание смежных технологий, среди которых следует выделить базы данных, сетевые технологии, а также знание веба. Поскольку процесс обучения подразумевает командную разработку, то важным является умение работать с современными системами контроля версий (в частности, Git) и наличие собственного профиля на одном из доступных репозиториев (например, Github). Также в рамках обучения, помимо получения опыта разработки ПО, потребуется развитие навыков проектирования приложений и моделирования их архитектуры, поэтому будет плюсом знакомство с языком UML и его наиболее распространенными типами диаграмм (классов, прецедентов, последовательности и т.д.), а также основными паттернами и принципами проектирования (GoF, GRASP, SOLID, etc). Из личностных качеств от слушателя ожидаются желание учиться, наличие аналитических качеств, умение быстро находить релевантную информацию, ну и конечно же быть готовым работать в команде.
Преподаватели
Виталий Иванов
Опыт профессиональной разработки с 2007 года.
Во время обучения в Самарском Государственном Университете участвовал в создании автоматизированной системы на платформе J2EE. На протяжении 2009 года успел поучаствовать в проекте для автоматизации процессов госкорпорации «Роскосмос».
С 2010 года принимает активное участие в разработке и развитии информационных систем ООО «Русфинанс Банка» на базе стека JavaEE.
На текущий момент состоит в Scrum-команде, ответственной за разработку клиент-серверного приложения «Инфо-Банк». Участвует в инновационных проектах компании.

Проводит корпоративные обучающие workshop-ы для сотрудников.
С 2012 года - преподаватель и научный руководитель по образовательным курсам «Программирование на Java», «Разработка веб и бизнес приложений на Java», а также «Основ методологий разработки и проектирования ПО» в Московском Технологическом Институте.
Отзыв
Вячеслав Фрейман
Очень полезный курс для новичков в Java EE: даётся очень много информации и тонна практики при выполнении домашних заданий. Было не без огрехов (например, примеры, выкладываемые на github, не всегда работали без дополнительных действий. В идеале было бы хорошо, чтобы проект на гитхабе был настроен на запуск в docker'е с первого раза, тогда можно было бы избавиться от кучи проблем несовместимости), но этот курс был запущен впервые, а первый раз самый сложный в плане организации, и, я надеюсь, что их исправят в последующих. В целом курс продуктивный и оставляет позитивные впечатления.
Все отзывы
Работодатели