Дорогу осилит Идущий. Java Road Map

Дорогу осилит Идущий. Java Road Map

Дорогу осилит идущий


ВАЖНО!!! Road Map был перенесен сюда: ссылка. Дальнейшая актуализация, в т.ч. добавление новых уроков, будет производиться только по новой ссылке. Здесь остается архивная версия.


Данная статья содержит примерный план обучения, который предполагается для канала. Он постепенно будет расширяться, возможно, претерпит некоторые изменения.

Для уроков, которые уже выложены, прикреплены гиперссылки. Некоторые из них дублируются (например, для темы ООП). Кроме того, внизу вы можете найти темы, которые не попали в основную классификацию, но освещены (или будут освещены). Они относятся как к Java, так и к другим технологиям или общей информации, которую следует знать будущему разработчику (например, состав проектной команды и роли в ней).

В данном плане была попытка найти золотую середину между Road Map – последовательным изучением тем и объединением тем в блоки. Поэтому стоит обращать внимание на номер урока, обозначенный (для опубликованных) перед названием темы. Где-то это может быть не критично, но где-то – важно, поскольку требует знаний из других разделов для полного понимания материала.

 

Настройка окружения

      0. Настройка окружения

 

Java Core

      1. Базовая структура программы, переменные и типы данных

      2. Консольный ввод/вывод. Арифметические операции, операции присвоения. Условные выражения

      3. Преобразование типов, условные конструкции. Первое знакомство со строками

      4. Циклы

      5. Массивы

      6. Методы. Первое знакомство. Параметры. Возвращение значений

      7. Методы. Varargs. Перегрузка методов. Первое знакомство с рекурсией

      8. Классы. Объекты. Конструкторы и ключевое слово this

      10. Поля класса. Ключевое слово static. Константы

      12. Инкапсуляция. Пакеты. Модификаторы доступа. Getter'ы и Setter'ы

      13. Наследование. Ключевое слово extends и использование protected. Ключевое слово super. Приведение ссылочных типов

      14. Полиморфизм. Переопределение методов. Виды полиморфизма и связывание

      16. Абстрактные классы и интерфейсы

      17. Enum

      18. Проверки типов в Java

      19. Методы класса Object

      20. Исключения

      21. Неизменяемые объекты

      22. Классы-обертки в Java

      23. Память в JVM

      24. Garbage Collector

      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. Принципы ООП. Наследование

      14. Принципы ООП. Полиморфизм

      SOLID и другие принципы ОО-дизайна

 

Collections Framework

      36. Введение

      37. Collection. Список. ArrayList

      40. Queue. Имплементации в Java

      41. Set. Первое знакомство

      43. Map. Первое знакомство

      44. Map и Set. Внутреннее устройство реализаций

      51. Iterable и Iterator

      58. Функциональные интерфейсы в коллекциях

 

Структуры данных и алгоритмы

      39. Связные списки и очереди

      42. Структура данных Дерево

      45. Сложность алгоритмов

 

Функциональное программирование в Java

      46. Функциональные интерфейсы и лямбда-выражения

      47. Ссылка на метод

      48. Функциональное программирование в Java

      49. Класс Optional

      50. Первое знакомство с Stream API. Функции высшего порядка. Монады

      51. Spliterator

      52. Stream API. Способы создания Stream'а

      53. Stream API. Виды операций

      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

      64. Методы класса Thread

      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

76. Проблемы многопоточности

      78. Что дальше?

 

Базы данных и основы SQL

      79. Базы данных. SQL и NoSQL

      80. Установка postgres. PgAdmin и инструменты визуализации БД. Создание и удаление БД

      81. Схемы

      82. Основные термины реляционных БД и что такое SQL (DDL, DML, etc.)

      83. DDL. Типы данных

      84. DML. INSERT

      85. DML. Команда SELECT

      86. DML. Блок WHERE

      87. DML. Блок WHERE и операторы фильтрации

      88. DML. Сортировка и пагинация

      89. DML. Агрегатные функции и GROUP BY

      90. DML. HAVING. HAVING и WHERE

91. DML. Подзапросы

      92. DML. INSERT и UPDATE

      93. DML. DELETE и TRUNCATE

      94. DML. DISTINCT и GROUP BY

      95. DML. UNION

      96. Виды отношений в БД

      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. Какие бывают представления

      107. TCL. Транзакции. ACID

      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

Будет дополнено

 

Темы вне основной классификации

      27. Отладка кода. Debugger

      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

 

Дорогу осилит идущий!

Report Page