GrabDuck

200+ часов видео-уроков по Enterprise Java

:

Добрый день.
Я несколько раз читал в аудитории курс Enterprise Java Development и параллельно писал его на видео. Курс состоит из 24 лекций по  2.5-3 часа и читался 3 раза. Я хочу предоставить все видео сообществу, возможно, кому-то оно пригодится.

Набор „Февраль 2014”

0. Дополнительные лекции: Обзор JavaEE, Обзор Java 8
1. Сетевые протоколы (IP, TCP, UDP, DNS, HTTP): #1, #2
2. Servlet API: #1, #2, #3, #4
3. Spring Framework: #1, #2
4. JDBC: #1, потерялась, #3, #4, #5, #6, #7
5. Object Oriented Principles (SOLID)
6. Gof Patterns
7. JSF: #1, #2, #3
8. WebSockets
9. Maven
10. Log4J

Набор „Август 2013”

0. Дополнительные лекции: java.util.concurrency, Java 8
1. Сетевые протоколы (IP, TCP, UDP, DNS, HTTP): #1, #2

2. Servlet API: #1, #2, #3(интеграция Spring Framework в Servlet container)
3. Разное (генерики, ооп, ...): #1
4. Maven: #1
5. Верстка: CSS #1
6. Servlet API (корзина покупок, login/logout): #4
7. Log4j: #1
8. JDBC: #1, #2
9. Spring Framework (+ разное): #1
10. JDBC: #3
11. Test Driven Development (JUnit, Hamcrest, Mockito): #1, #2
12. Реляционная модель + разное: #1
13. Spring MVC: #1
14. Иммитация собеседования по Servlet API: #5
15. Работа с БД из Spring Framework: #1
16. Hibernate/JPA: #1, #2

Набор „Февраль 2013”

1. Шаблоны проектирования GoF: #1, #2
2. JDBC: #1, #2, #3, #4, #5
3. Log4j: #1
4. HTTP: #, #2
5. Servlet API: #1, #2
6. DI/IoC: #1
7. TDD (JUnit, Mockito, Hamcrest): #1, #2, #3
8. Maven: #1, #2
9. Имитация интервью: #1
10. Servlet API: #3, #4
11. REST: #1
12. Spring Framework: #1
13. Spring MVC: #1

Замечания

Курс состоит из примерно следующего списка тем (однако от раза к разу они варьировались):

  1. View
    • Протоколы: IP, TCP, UDP, HTTP, AJAX/COMET, WebSockets
    • Архитектура простейшего многопоточного HTTP-сервера на Java
    • Servlet API, JSP, Tomcat
    • Spring MVC
    • Основы верстки: CSS, HTML, JS, Bootstrap
  2. Model
    • Шаблоны проектирования
    • Di/IoC (Spring)
    • TDD: JUnit, Mockito, Hamcrest
    • Log4j
    • Maven
  3. Data

Целью курса было подготовить человека с твердым пониманием Java (генерики, ООП, Reflection API, аннотации, ...) к быстрому старту на позиции Enterprise Junior Java Developer.

Курс читался для „живой аудитории”, видео снималось как дополнительный сервис для тех, кто пропустил занятие.

Курс целиком составлен, подготовлен и прочитан мной, Головачем Иваном. Я ни с кем не советовался и ни на что не опирался. По сему, возможно, это не лучшая программа или список материала.

Слушатели разные. Как минимум есть „физики” (ориентируются на то, что можно сделать своими руками) и „математики” (ориентируются на понимание внутреннего устройства, стремятся скорее к стройности конструкции, чем к ее практической пользе). Я сам „математик” и курс писал под „математиков”. Первые две лекции курса были бесплатные + я возвращал деньги по требованию за остаток курса в случае отказа. Это вполне компенсировало специфику программы — если вам не подходит, вы просто прекращаете занятия.

Я бы акцентировал внимание на следующих моментах:
1. Мне более близок backend, а не frontend. Потому части JDBC, Servlet API, TDD (Mockito, Hamcrest, JUnit), Maven, Log4j рассказаны намного лучше, чем CSS, JSP, HTML (они рассказаны, как по мне, откровенно плохо).
2. Я ни разу не рассказал тему „Шаблоны проектирования” так, как мне бы хотелось. Меня на ней „несет”. Не то, что бы я „лил много воды”, но я стараюсь охватить слишком много всего.
3. Курс строился вокруг понимания системных принципов, а не прагматичной пользы. Потому я часто фокусируюсь на внутреннем устройстве, а не той пользы, которую можно выжать из API/framework.
4. Курс шел с предоставлением исходного кода, но в этой публикации я его не предоставляю, так как слишком сложно собрать его теперь в одном месте (разбросан по разным местам за полтора года).
5. Я старался построить курс „снизу-вверх”. На примере View-раздела: мы рассматривали основы протокола IP, что бы разобраться в IP-адресации и понятии пакета, далее смотрели TCP, что бы понять как последовательность пакетов в сети „склеивается” в InputStream/OutputStream (java.net.Socket/ServerSocket), далее смотрели на протокол HTTP, как он „ложится поверх” TCP. Смотрели на Servlet API, разбирая его как API к HTTP протоколу и смотрели на Spring MVC как на высокоуровневую надстройку над Servlet API. Иногда успевали поговорить про AJAX/COMET/WebSockets рассматривая не только ЧТО это дает разработчику, но и КАК это ложится поверх HTTP-протокола.

На мой стиль ведения лекций накладывает отпечаток не только моя личность, но и необходимость непрерывно рассказывать что-то 3 часа в реальной аудитории. Тут необходимо, что бы тебя „понесло”. Обратной стороной могут быть неуместные шутки, странные импровизации или „налитая вода”. Если бы курс делался исключительно под запись (кусочками по  10-30 минут, без аудитории), то он был бы более строгим и точнее следовал материалу.

На вопросы отвечу в комментариях, однако стоит сказать, что в „реале” я сейчас не преподаю и перешел на вебинары (ближайший — Курс по многопоточности, старт 1-го сентября.