1. Основы Java

1.1 Введение в программирование

  • Что такое программирование и Java?
  • Установка JDK и настройка среды разработки (IntelliJ IDEA, Eclipse)
  • Первая программа "Hello World"
  • Компиляция и запуск Java-приложений

1.2 Синтаксис и базовые конструкции

  • Переменные и типы данных (примитивные типы: int, double, boolean, char и т.д.)
  • Операторы (арифметические, логические, сравнения)
  • Условные операторы (if-else, switch)
  • Циклы (for, while, do-while, enhanced for)
  • Массивы (одномерные и многомерные)
  • Строки (String, StringBuilder, StringBuffer)

1.3 Объектно-ориентированное программирование (ООП)

  • Классы и объекты
  • Конструкторы и инициализация объектов
  • Методы и перегрузка методов
  • Инкапсуляция (модификаторы доступа: private, public, protected)
  • Наследование и ключевое слово extends
  • Полиморфизм (переопределение методов, динамическая диспетчеризация)
  • Абстрактные классы и методы
  • Интерфейсы и множественное наследование
  • Внутренние классы (вложенные, локальные, анонимные)

1.4 Исключения и обработка ошибок

  • Типы исключений (checked, unchecked)
  • Try-catch-finally блоки
  • Создание пользовательских исключений
  • Лучшие практики обработки исключений

2. Продвинутая Java

2.1 Коллекции (Collections Framework)

  • Интерфейсы коллекций (Collection, List, Set, Map, Queue)
  • Реализации List (ArrayList, LinkedList, Vector)
  • Реализации Set (HashSet, LinkedHashSet, TreeSet)
  • Реализации Map (HashMap, LinkedHashMap, TreeMap, Hashtable)
  • Queue и Deque (PriorityQueue, ArrayDeque)
  • Итераторы и сравнение объектов (Comparable, Comparator)
  • Утилитарные классы (Collections, Arrays)

2.2 Generics (Обобщения)

  • Параметризованные типы
  • Ограниченные типы параметров
  • Wildcards (?, extends, super)
  • Стирание типов (Type Erasure)

2.3 Stream API и функциональное программирование

  • Лямбда-выражения
  • Функциональные интерфейсы (Predicate, Function, Consumer, Supplier)
  • Stream API (filter, map, reduce, collect)
  • Параллельные стримы
  • Optional для работы с null-значениями

2.4 Многопоточность и конкурентность

  • Создание потоков (Thread, Runnable)
  • Жизненный цикл потока
  • Синхронизация (synchronized, volatile)
  • Блокировки (Lock, ReentrantLock)
  • Concurrent коллекции (ConcurrentHashMap, CopyOnWriteArrayList)
  • Executor Framework и Thread Pools
  • Future и CompletableFuture
  • Проблемы многопоточности (deadlock, race condition)

2.5 Ввод/вывод (I/O)

  • Потоки ввода/вывода (InputStream, OutputStream)
  • Работа с файлами (File, Path, Files)
  • Чтение и запись текстовых файлов (Reader, Writer)
  • Буферизация (BufferedReader, BufferedWriter)
  • Сериализация объектов
  • NIO (New I/O) и работа с каналами

2.6 Рефлексия и аннотации

  • Reflection API
  • Получение информации о классах
  • Создание пользовательских аннотаций
  • Обработка аннотаций в runtime

3. Базы данных

3.1 SQL и реляционные базы данных

  • Основы SQL (SELECT, INSERT, UPDATE, DELETE)
  • Проектирование баз данных и нормализация
  • Первичные и внешние ключи
  • Индексы и оптимизация запросов
  • Соединения таблиц (JOIN: INNER, LEFT, RIGHT, FULL)
  • Агрегатные функции (COUNT, SUM, AVG, GROUP BY, HAVING)
  • Подзапросы и представления (VIEW)
  • Транзакции (ACID принципы)

3.2 JDBC (Java Database Connectivity)

  • Подключение к базе данных
  • Выполнение запросов (Statement, PreparedStatement, CallableStatement)
  • Обработка результатов (ResultSet)
  • Управление транзакциями
  • Connection Pool (HikariCP, C3P0)

3.3 Hibernate (ORM)

  • Концепция ORM (Object-Relational Mapping)
  • Настройка Hibernate и конфигурация
  • Entity классы и аннотации (@Entity, @Id, @Table)
  • Маппинг связей (@OneToOne, @OneToMany, @ManyToOne, @ManyToMany)
  • Жизненный цикл Entity (Transient, Persistent, Detached, Removed)
  • HQL (Hibernate Query Language)
  • Criteria API
  • Кэширование (First Level Cache, Second Level Cache)
  • Lazy и Eager загрузка
  • Каскадные операции

3.4 JPA (Java Persistence API)

  • Отличия JPA от Hibernate
  • EntityManager и его методы
  • JPQL (Java Persistence Query Language)
  • Repositories в Spring Data JPA

3.5 NoSQL базы данных

  • MongoDB (документоориентированная БД)
  • Redis (хранилище ключ-значение для кэширования)
  • Cassandra (распределенная БД)
  • Elasticsearch (поисковая и аналитическая система)

4. Spring Framework

4.1 Spring Core

  • Инверсия управления (IoC) и Dependency Injection (DI)
  • Контейнер Spring (ApplicationContext)
  • Бины и их жизненный цикл
  • Области видимости бинов (Singleton, Prototype, Request, Session)
  • Конфигурация (XML, Java-based, Annotation-based)
  • Аннотации (@Component, @Service, @Repository, @Controller)
  • @Autowired, @Qualifier, @Primary
  • Aspect-Oriented Programming (AOP)

4.2 Spring Boot

  • Автоконфигурация и стартеры
  • Создание Spring Boot приложения
  • Application properties и YAML конфигурация
  • Профили (Profiles) для разных окружений
  • Actuator для мониторинга приложения
  • Embedded серверы (Tomcat, Jetty, Undertow)
  • Spring Boot DevTools для разработки

4.3 Spring MVC

  • Model-View-Controller паттерн
  • DispatcherServlet и обработка запросов
  • Контроллеры (@Controller, @RestController)
  • Маппинг запросов (@RequestMapping, @GetMapping, @PostMapping и т.д.)
  • Обработка параметров (@RequestParam, @PathVariable, @RequestBody)
  • Валидация данных (JSR-303, @Valid)
  • Обработка исключений (@ExceptionHandler, @ControllerAdvice)
  • Возврат данных (ResponseEntity, @ResponseBody)
  • Шаблонизаторы (Thymeleaf, JSP)

4.4 Spring Data JPA

  • Repository интерфейсы (CrudRepository, JpaRepository)
  • Query методы и именование
  • Пользовательские запросы (@Query)
  • Pagination и Sorting
  • Specifications для динамических запросов

4.5 Spring Security

  • Аутентификация и авторизация
  • Настройка безопасности (SecurityConfig)
  • UserDetailsService и PasswordEncoder
  • Фильтры безопасности
  • JWT токены для REST API
  • OAuth 2.0 и OpenID Connect
  • Защита от CSRF атак
  • Method Security (@PreAuthorize, @PostAuthorize)

4.6 Spring REST

  • RESTful архитектура и принципы
  • Создание REST API с Spring Boot
  • HATEOAS (Hypermedia as the Engine of Application State)
  • Версионирование API
  • Content Negotiation
  • Документирование API (Swagger/OpenAPI)

4.7 Spring Testing

  • Unit тесты с JUnit 5
  • Mockito для создания моков
  • @SpringBootTest для интеграционных тестов
  • @WebMvcTest для тестирования контроллеров
  • @DataJpaTest для тестирования репозиториев
  • TestContainers для тестирования с реальными БД

5. Микросервисы и распределенные системы

5.1 Основы микросервисной архитектуры

  • Монолит vs Микросервисы
  • Принципы проектирования микросервисов
  • Domain-Driven Design (DDD)
  • Bounded Context и Aggregates
  • Коммуникация между сервисами (синхронная и асинхронная)

5.2 Spring Cloud

  • Service Discovery (Eureka, Consul)
  • API Gateway (Spring Cloud Gateway, Zuul)
  • Configuration Server (Spring Cloud Config)
  • Load Balancing (Ribbon, Spring Cloud LoadBalancer)
  • Circuit Breaker (Resilience4j, Hystrix)
  • Distributed Tracing (Sleuth, Zipkin)
  • Feign Client для REST коммуникации

5.3 Apache Kafka

  • Основы Apache Kafka и архитектура
  • Topics, Partitions, Brokers
  • Producers и Consumers
  • Consumer Groups и ребалансировка
  • Kafka Streams для обработки потоков данных
  • Kafka Connect для интеграции данных
  • Гарантии доставки сообщений (at-most-once, at-least-once, exactly-once)
  • Kafka в Spring Boot (Spring Kafka)
  • Serialization/Deserialization (Avro, JSON)
  • Мониторинг Kafka (JMX, Kafka Manager)

5.4 RabbitMQ

  • Основы очередей сообщений
  • Exchanges, Queues, Bindings
  • Паттерны обмена сообщениями (Direct, Topic, Fanout, Headers)
  • Spring AMQP для работы с RabbitMQ

5.5 gRPC

  • Protocol Buffers
  • Создание gRPC сервисов
  • Типы вызовов (Unary, Server Streaming, Client Streaming, Bidirectional)
  • gRPC в Spring Boot

6. Контейнеризация и DevOps

6.1 Docker

  • Основы Docker и контейнеризации
  • Образы и контейнеры
  • Dockerfile и создание образов
  • Docker Compose для многоконтейнерных приложений
  • Volumes и Networks
  • Docker Hub и приватные Registry
  • Оптимизация Docker образов

6.2 Kubernetes

  • Архитектура Kubernetes (Pods, Nodes, Clusters)
  • Deployments и ReplicaSets
  • Services и Ingress
  • ConfigMaps и Secrets
  • Volumes и Persistent Volumes
  • Helm для управления приложениями
  • Мониторинг и логирование в K8s

6.3 CI/CD

  • Continuous Integration и Continuous Deployment
  • Jenkins (Pipelines, Jobs)
  • GitLab CI/CD
  • GitHub Actions
  • Автоматизация тестирования и развертывания

6.4 Системы контроля версий

  • Git (основы и продвинутые команды)
  • Branching стратегии (Git Flow, GitHub Flow)
  • Pull Requests и Code Review
  • Merge vs Rebase

7. Инструменты сборки

7.1 Maven

  • Структура Maven проекта
  • POM файл (Project Object Model)
  • Жизненный цикл сборки (compile, test, package, install, deploy)
  • Зависимости и репозитории
  • Плагины и цели
  • Профили Maven

7.2 Gradle

  • Groovy и Kotlin DSL для Gradle
  • Build Scripts и Tasks
  • Управление зависимостями
  • Плагины Gradle
  • Incremental Builds

8. Тестирование

8.1 Unit Testing

  • JUnit 5 (Jupiter)
  • Assertions и тестовые методы
  • Параметризованные тесты
  • Жизненный цикл тестов (@BeforeEach, @AfterEach)

8.2 Mocking

  • Mockito (mock, spy, verify)
  • ArgumentMatchers и ArgumentCaptors
  • Stubbing методов
  • MockMvc для тестирования Spring MVC

8.3 Integration Testing

  • Spring Boot Test
  • TestContainers для тестирования с БД и внешними сервисами
  • Embedded базы данных (H2, HSQLDB)

8.4 Test-Driven Development (TDD)

  • Принципы TDD (Red-Green-Refactor)
  • Написание тестов перед кодом

8.5 Behavior-Driven Development (BDD)

  • Cucumber и Gherkin синтаксис
  • Сценарии тестирования (Given-When-Then)

9. Паттерны проектирования

9.1 Порождающие паттерны

  • Singleton (Одиночка)
  • Factory Method (Фабричный метод)
  • Abstract Factory (Абстрактная фабрика)
  • Builder (Строитель)
  • Prototype (Прототип)

9.2 Структурные паттерны

  • Adapter (Адаптер)
  • Decorator (Декоратор)
  • Proxy (Заместитель)
  • Facade (Фасад)
  • Composite (Компоновщик)
  • Bridge (Мост)

9.3 Поведенческие паттерны

  • Strategy (Стратегия)
  • Observer (Наблюдатель)
  • Command (Команда)
  • Template Method (Шаблонный метод)
  • Iterator (Итератор)
  • State (Состояние)
  • Chain of Responsibility (Цепочка обязанностей)

10. Дополнительные технологии и инструменты

10.1 Логирование

  • SLF4J и Logback
  • Log4j2
  • Уровни логирования
  • Централизованное логирование (ELK Stack: Elasticsearch, Logstash, Kibana)

10.2 Мониторинг и метрики

  • Spring Boot Actuator
  • Prometheus и Grafana
  • Micrometer для метрик
  • Distributed Tracing (Jaeger, Zipkin)

10.3 Кэширование

  • Spring Cache Abstraction
  • Redis как распределенный кэш
  • Caffeine для локального кэширования
  • Стратегии кэширования (Cache-Aside, Write-Through, Write-Behind)

10.4 Reactive Programming

  • Project Reactor (Flux, Mono)
  • Spring WebFlux
  • Реактивные базы данных (R2DBC)
  • Backpressure и операторы

10.5 GraphQL

  • Основы GraphQL
  • Schema и типы
  • Queries, Mutations, Subscriptions
  • Spring for GraphQL

10.6 Веб-сокеты

  • WebSocket протокол
  • STOMP протокол
  • Spring WebSocket
  • Real-time коммуникация

11. Архитектура и принципы разработки

11.1 Принципы SOLID

  • Single Responsibility Principle (Принцип единственной ответственности)
  • Open/Closed Principle (Принцип открытости/закрытости)
  • Liskov Substitution Principle (Принцип подстановки Барбары Лисков)
  • Interface Segregation Principle (Принцип разделения интерфейса)
  • Dependency Inversion Principle (Принцип инверсии зависимостей)

11.2 Clean Code

  • Читаемость и понятность кода
  • Именование переменных и методов
  • Функции и их размер
  • Комментарии и документация
  • Рефакторинг

11.3 Архитектурные паттерны

  • Layered Architecture (Многослойная архитектура)
  • Hexagonal Architecture (Порты и адаптеры)
  • Clean Architecture
  • CQRS (Command Query Responsibility Segregation)
  • Event Sourcing

11.4 REST API Best Practices

  • Использование HTTP методов правильно
  • Статус коды (200, 201, 400, 404, 500 и т.д.)
  • Версионирование API
  • Обработка ошибок
  • Документирование (Swagger/OpenAPI)

12. Безопасность приложений

12.1 Основы безопасности

  • OWASP Top 10 (главные уязвимости)
  • SQL Injection и защита от него
  • XSS (Cross-Site Scripting)
  • CSRF (Cross-Site Request Forgery)
  • HTTPS и SSL/TLS

12.2 Аутентификация и авторизация

  • JWT (JSON Web Tokens)
  • OAuth 2.0
  • OpenID Connect
  • Session vs Token based authentication
  • Role-Based Access Control (RBAC)

12.3 Шифрование

  • Хэширование паролей (BCrypt, PBKDF2)
  • Симметричное и асимметричное шифрование
  • Цифровые подписи

13. Производительность и оптимизация

13.1 Профилирование приложений

  • JProfiler, YourKit, VisualVM
  • Анализ памяти (heap dumps)
  • CPU профилирование
  • Thread dumps

13.2 JVM и сборка мусора

  • Структура JVM (Heap, Stack, Method Area)
  • Garbage Collection алгоритмы (Serial, Parallel, CMS, G1, ZGC)
  • Настройка JVM параметров
  • Memory Leaks и их обнаружение

13.3 Оптимизация баз данных

  • Индексирование таблиц
  • Explain планы запросов
  • N+1 проблема и её решение
  • Batch операции
  • Денормализация для производительности

13.4 Кэширование

  • Многоуровневое кэширование
  • CDN для статических ресурсов
  • HTTP кэширование (ETag, Cache-Control)

14. Методологии разработки и Soft Skills

14.1 Agile и Scrum

  • Принципы Agile
  • Scrum framework (Sprints, Daily Standups, Retrospectives)
  • Kanban
  • User Stories и Planning Poker

14.2 Работа в команде

  • Code Review практики
  • Pair Programming
  • Коммуникация с командой
  • Документирование решений

14.3 Управление проектами

  • Jira, Trello, Asana
  • Оценка задач
  • Приоритизация

15. Дополнительные направления обучения

15.1 Kotlin для JVM

  • Синтаксис Kotlin и его преимущества
  • Null-safety в Kotlin
  • Extension функции
  • Data классы и sealed классы
  • Корутины (Coroutines) для асинхронного программирования
  • Interoperability с Java
  • Kotlin для Spring Boot приложений
  • Kotlin DSL

15.2 Android-разработка

  • Android SDK и Android Studio
  • Activity, Fragment, Intent
  • Layouts и UI компоненты (Views, RecyclerView)
  • Material Design принципы
  • Jetpack Compose (современный декларативный UI)
  • ViewModel и LiveData (MVVM архитектура)
  • Room Database для локального хранения
  • Retrofit для работы с REST API
  • Coroutines и Flow для асинхронности
  • Навигация в приложениях (Navigation Component)
  • Dependency Injection (Hilt, Dagger)
  • Тестирование Android приложений
  • Публикация в Google Play Store

15.3 Путь обучения

  • После освоения основ Java и ООП можно перейти к изучению Kotlin
  • Kotlin является официальным языком для Android-разработки
  • Навыки Java-разработки легко переносятся на Android платформу
  • Android-разработка открывает двери в мобильную разработку
  • Возможность создавать кроссплатформенные приложения (Kotlin Multiplatform)

📱 Помимо Backend Java-разработки, у нас также есть обучение по Kotlin и Android-разработке!
Расширьте свои навыки и станьте более востребованы!

Путь к успеху

Эта дорожная карта — ваш путеводитель в мир профессиональной Java-разработки.

Изучение всех этих тем требует времени и практики, но каждый шаг приближает вас к цели стать востребованным разработчиком.

Помните: теория важна, но практика — ключ к мастерству. Работайте над реальными проектами, участвуйте в open-source, решайте задачи на coding platforms.

Успехов вам на пути к профессии Java-разработчика! 🚀