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-разработчика! 🚀