Дорогу осилит Идущий. Java Road Map
Дорогу осилит идущийВАЖНО!!! Road Map был перенесен сюда: ссылка. Дальнейшая актуализация, в т.ч. добавление новых уроков, будет производиться только по новой ссылке. Здесь остается архивная версия.
Данная статья содержит примерный план обучения, который предполагается для канала. Он постепенно будет расширяться, возможно, претерпит некоторые изменения.
Для уроков, которые уже выложены, прикреплены гиперссылки. Некоторые из них дублируются (например, для темы ООП). Кроме того, внизу вы можете найти темы, которые не попали в основную классификацию, но освещены (или будут освещены). Они относятся как к Java, так и к другим технологиям или общей информации, которую следует знать будущему разработчику (например, состав проектной команды и роли в ней).
В данном плане была попытка найти золотую середину между Road Map – последовательным изучением тем и объединением тем в блоки. Поэтому стоит обращать внимание на номер урока, обозначенный (для опубликованных) перед названием темы. Где-то это может быть не критично, но где-то – важно, поскольку требует знаний из других разделов для полного понимания материала.
Настройка окружения
Java Core
1. Базовая структура программы, переменные и типы данных
2. Консольный ввод/вывод. Арифметические операции, операции присвоения. Условные выражения
3. Преобразование типов, условные конструкции. Первое знакомство со строками
4. Циклы
5. Массивы
6. Методы. Первое знакомство. Параметры. Возвращение значений
7. Методы. Varargs. Перегрузка методов. Первое знакомство с рекурсией
8. Классы. Объекты. Конструкторы и ключевое слово this
10. Поля класса. Ключевое слово static. Константы
12. Инкапсуляция. Пакеты. Модификаторы доступа. Getter'ы и Setter'ы
14. Полиморфизм. Переопределение методов. Виды полиморфизма и связывание
16. Абстрактные классы и интерфейсы
17. Enum
20. Исключения
23. Память в JVM
25. Вложенные классы
26. Классы для работ со строками
28. Generics
29. Generics. Параметризованные методы и Wildcard
30. Регулярные выражения в Java
31. Классы ресурсов. I/O Streams
32. Работа с файлами. Ресурсы проекта. FileInputStream и FileOutputStream
33. Работа с файлами. Класс File. Reader и Writer. Буферизация
34. Работа с датами и временем
38. Механизмы сравнения. Comparable и Comparator
Объектно-ориентированное программирование
11. ООП. Первое знакомство. Понятие абстракции. Виды отношений между объектами
12. Принципы ООП. Инкапсуляция
13. Принципы ООП. Наследование
SOLID и другие принципы ОО-дизайна
Collections Framework
36. Введение
37. Collection. Список. ArrayList
40. Queue. Имплементации в Java
44. Map и Set. Внутреннее устройство реализаций
58. Функциональные интерфейсы в коллекциях
Структуры данных и алгоритмы
Функциональное программирование в Java
46. Функциональные интерфейсы и лямбда-выражения
47. Ссылка на метод
48. Функциональное программирование в Java
49. Класс Optional
50. Первое знакомство с Stream API. Функции высшего порядка. Монады
51. Spliterator
52. Stream API. Способы создания Stream'а
54. Stream API. Промежуточные операции
55. Stream API. Терминальные операции
56. Stream API. Stream’ы примитивов
57. Stream API. collect(), Collector, Collectors. Часть I и Часть II. Практика
58. Итоги раздела ФП
Многопоточность
59. Введение
60. Класс Thread. Способы создания потока
61. Синхронизация потоков. Понятие монитора. Ключевое слово synchronized
62. Методы Object для многопоточности
63. Знакомство с JMM. Ключевое слово volatile
65. java.util.concurrent. Atomic-типы
66. java.util.concurrent. Механизм Lock. ReentrantLock
67. java.util.concurrent. Механизм Lock. ReentrantReadWriteLock. StampedLock. Сравнение с synchronized
68. java.util.concurrent. Механизм Семафор
71. java.util.concurrent. Потокобезопасные коллекции
72. java.util.concurrent. Блокирующие и неблокирующие очереди
73. java.util.concurrent. Барьер. CyclicBarrier. Знакомство с Phaser
74. java.util.concurrent. ExecutorService и Thread Pool
75. java.util.concurrent. Реализации Thread Pool и при чем тут Stream API
77. java.util.concurrent. Future. CompletableFuture
78. Что дальше?
Базы данных и основы SQL
80. Установка postgres. PgAdmin и инструменты визуализации БД. Создание и удаление БД
81. Схемы
82. Основные термины реляционных БД и что такое SQL (DDL, DML, etc.)
83. DDL. Типы данных
84. DML. INSERT
86. DML. Блок WHERE
87. DML. Блок WHERE и операторы фильтрации
88. DML. Сортировка и пагинация
89. DML. Агрегатные функции и GROUP BY
90. DML. HAVING. HAVING и WHERE
91. DML. Подзапросы
95. DML. UNION
97. DML. JOIN
98. DML. Common table expression. WITH
99. DDL. CREATE. Создание таблиц
100. DDL. Изменение и удаление таблиц. ALTER. DROP. DEFAULT
101. DDL. Primary key и Foreign key. Каскадное удаление
102. DDL. CONSTRAINT
103. DDL. Индексы. Введение, виды индексов
105. DDL. Кластеризованные индексы. Синтаксис для работы с индексами
104. Нормализация и денормализация БД
106. Понятие VIEW. Какие бывают представления
108. TCL. Проблемы транзакций. Уровни изоляции
109. Генераторы последовательностей. SEQUENCE
110. PL/pgSQL. Функции и процедуры
111. Триггеры
112. Что дальше?
Внешние библиотеки и знакомство с системами сборок
113. Внешние библиотеки. Фреймворки
114. Logger. Подключение Logger'а
115. Системы сборок. Первое знакомство
116. Maven. Структура проекта. POM
117. Maven. Жизненный цикл. Плагины
118. Maven. Понятие артефакта. Работа с зависимостями
119. Maven. Что дальше?
120. Gradle. Первое знакомство. Сравнение с Maven
121. Gradle. Жизненный цикл. Плагины и таски
122. Gradle. Работа с Зависимостями
123. Gradle. Знакомство с Gradle Wrapper. Что дальше?
Дополнительно (видео): Знакомство с системами сборки. Maven
ВАЖНО!!! Road Map был перенесен сюда: ссылка. Дальнейшая актуализация, в т.ч. добавление новых уроков, будет производиться только по новой ссылке. Здесь остается архивная версия.
Unit-тестирование
Концепция юнит-тестирования
Junit
Mock’и. Mockito
Дополнительно (видео): Введение в тестирование
Системы контроля версий и git. GitHub
9. Системы контроля версий. Git. Github
15. GitHub. Fork и Pull Request
Основные инструменты
Web и Java EE
Что такое Java EE
HTTP. Понятия Stateful и Stateless. Запрос и ответ
HTTP. Методы HTTP
HTTP. Cookies и понятие сессии
Application Server и Web Server
Tomcat. Установка. Альтернативы
Servlet API. Знакомство с сервлетами
Servlet API. Контейнер сервлетов. Развертывание приложения
Servlet API. Параметры и атрибуты
Servlet API. Жизненный цикл сервлета
Что такое web.xml
Servlet API. Фильтры и цепочка фильтров
Знакомство с JSP и JSTL
Знакомство с авторизацией и аутентификацией
JDBC
Что такое JDBC. Подключение к БД. Connection
Statement и DDL-операции
Понятие Batch. Использование в JDBC
Statement и DML. ResultSet
PreparedStatement. Параметры. Понятие SQL-инъекции(?)
JDBC и транзакции
Инструменты миграций
Знакомство с Flyway. Аналоги
JPA и Hibernate
ORM и JPA. Что такое Hibernate
Подключение Hibernate к проекту. Конфигурация
Entity
EntityManager и EntityManagerFactory. Аналоги в Hibernate
Запросы в Hibernate. HQL
Criteria API
Жизненный цикл Entity
Работа с транзакциями. Понятие Propagation
Отношения в Hibernate. Проблема N+1. LazyInitializationException
Кэширование в Hibernate. Кэш первого уровня или Persistence Context
Кэширование в Hibernate. Кэш второго уровня. Кэш запросов
Стратегии наследования в Hibernate
Spring Framework
Будет дополнено
Темы вне основной классификации
35. Компиляция и интерпретация в Java
69. Состав команды на проекте. Часть I
70. Состав команды на проекте. Часть II. Менеджеры и не только
Паттерны проектирования
Docker
Lombok
Docker Compose и k8s
Java Reflection
Аннотации
Понятие сериализации
Класслоадеры
Знакомство с REST API
ВАЖНО!!! Road Map был перенесен сюда: ссылка. Дальнейшая актуализация, в т.ч. добавление новых уроков, будет производиться только по новой ссылке. Здесь остается архивная версия.
Pet Projects
Система распределения места в общежитиях
Любые замечания и предложения приветствуются. Более, чем вероятно, что план, описанный одним человеком, не будет идеальным и требует корректировки. Кроме того, вполне возможно, что были опущены темы, очевидные практикующему разработчику, но требующие дополнительного освещения для новичков.
Канал: https://t.me/ViamSupervadetVadens
Мой тг: https://t.me/ironicMotherfucker
Дорогу осилит идущий!