Курс на Stepik
Обложка курса «Java для мидлов» на Stepik
500 ₽

Java для мидлов ★ 5.000

Открыть на
STEPIK.ORG

Java для middle: современный язык, конкурентность, JVM, тесты, JDBC, Hibernate, Spring Boot, REST, безопасность и production-практики.

Показатель Текущие показатели Рост
Значение 🏆 Рейтинг 3 дн 7 дн 30 дн
Количество учеников на курсе «Java для мидлов»Учеников на курсе 31
Сертификаты, выданные на курсе «Java для мидлов»Сертификатов выдано 0
Отзывы о курсе «Java для мидлов»Отзывов получено 2
Рейтинг курса «Java для мидлов»Рейтинг курса 5.000
Уроки в курсе «Java для мидлов»Количество уроков 131
Тесты в курсе «Java для мидлов»Количество квизов 534
Время прохождения курса «Java для мидлов»Время прохождения курса —
Стоимость курса «Java для мидлов»Стоимость курса 500 ₽ —
Обновления курса «Java для мидлов»Обновления курса — —
Дата публикации курса «Java для мидлов»Дата публикации курса — ———
Последнее обновление курса «Java для мидлов»Последнее обновление — ———
Сложность normal — ———

Содержание курса

Разделы в курсе «Java для мидлов» 19 разделов Уроки в курсе «Java для мидлов» 131 урок Тесты в курсе «Java для мидлов» 534 теста Время прохождения курса «Java для мидлов» 0 ч. Последнее обновление курса «Java для мидлов» обн. 16 июля 2026

Модуль 1. Введение: от джуна к продуктивному мидлу

5 уроков
1. О курсе: как проходить обучение и канал «Логово Дата-Инженера» ↗
2. Чем мидл отличается от джуна: не только «больше кода» ↗
3. Что мы считаем пройденным: краткая ревизия базы Java ↗
4. Инструменты продуктивного мидла: IDE, Git, Maven, отладка ↗
5. Как устроен этот курс и как учиться эффективно ↗

Модуль 2. Продвинутое ООП

9 уроков
1. Наследование глубже: проектируем иерархии осознанно и без… ↗
2. Композиция против наследования: делаем правильный выбор ↗
3. SOLID: пять принципов, которые меняют дизайн классов ↗
4. Принцип подстановки Лисков и проектирование по контракту ↗
5. Иммутабельные объекты и паттерн Builder в современной Java ↗
6. Sealed classes: запечатанные иерархии наследования в Java 17 ↗
7. Pattern matching for switch: новый switch-expression в Java 21 ↗
8. Records глубоко: компактные конструкторы, валидация и… ↗
9. Интерфейсы глубоко: private-методы, static-методы и эволюция API ↗

Модуль 3. Исключения и устойчивый код

6 уроков
1. Иерархия собственных исключений: проектируем осмысленно ↗
2. Checked против unchecked: когда и почему выбирать каждое ↗
3. Try-with-resources глубоко: AutoCloseable и управление ресурсами ↗
4. Optional: не только про null — цепочки вычислений в Java ↗
5. Паттерн Result: функциональная обработка ошибок без исключений ↗
6. Защитное программирование: предусловия, постусловия и инварианты ↗

Модуль 4. Коллекции глубоко

8 уроков
1. Производительность коллекций: ArrayList, LinkedList, HashSet… ↗
2. HashMap внутри: хеширование, коллизии, load factor и resize ↗
3. LinkedHashMap и TreeMap: когда важен порядок ключей ↗
4. ConcurrentHashMap: коллекция для безопасной многопоточности ↗
5. PriorityQueue: когда приоритет важнее порядка добавления ↗
6. Deque и ArrayDeque: стек и очередь в одном интерфейсе ↗
7. Неизменяемые коллекции: List.of, Set.of, Map.of и… ↗
8. Comparable и Comparator: тонкая настройка порядка сортировки ↗

Модуль 5. Stream API глубоко

9 уроков
1. Stream как ленивый конвейер: промежуточные и терминальные… ↗
2. map и flatMap: преобразование данных в потоке ↗
3. filter, distinct, limit и skip: управление содержимым потока ↗
4. sorted: сортировка и компараторы в Stream API ↗
5. reduce: свёртка потока в одно значение ↗
6. collect и Collectors: toList, toSet, toMap, joining, summarizing ↗
7. groupingBy и partitioningBy: группы, подгруппы и… ↗
8. Параллельные потоки: ForkJoinPool, ускорение и ловушки ↗
9. Optional + Stream: как соединить два мира без… ↗

Модуль 6. Дженерики advanced

7 уроков
1. Type erasure: что стирается и почему дженерики такие ↗
2. Bridge methods: что компилятор добавляет невидимо ↗
3. Reifiable типы: почему нельзя создать массив дженерика ↗
4. Raw types: наследие Java 1.4 и как с ним работать безопасно ↗
5. Wildcards и PECS: ? extends для чтения, ? super для записи ↗
6. Дженерик-методы и автоматический вывод типов ↗
7. Дженерик-фабрики и продвинутые паттерны с generics ↗

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

7 уроков
1. Лямбда-выражения глубоко: захват переменных и effectively final ↗
2. Ссылки на методы: четыре формы — статические, экземпляра… ↗
3. Функциональные интерфейсы: Predicate, Function, Consumer… ↗
4. Композиция функций: andThen, compose и построение конвейеров ↗
5. Каррирование и частичное применение в Java ↗
6. Функции высшего порядка: методы, принимающие и возвращающие… ↗
7. Практика: строим функциональный конвейер обработки данных ↗

Модуль 8. Аннотации и рефлексия

6 уроков
1. Встроенные аннотации глубже: @Override, @Deprecated… ↗
2. Создание собственных аннотаций: @interface, @Retention… ↗
3. Обработка аннотаций в runtime через Reflection API ↗
4. Annotation Processing на этапе компиляции: генерируем код ↗
5. Reflection API глубоко: Class, Method, Field, Constructor и… ↗
6. Динамические прокси: java.lang.reflect.Proxy и InvocationHandler ↗

Модуль 9. Многопоточность advanced

8 уроков
1. ExecutorService глубоко: Fixed, Cached, Scheduled и жизненный… ↗
2. CompletableFuture: асинхронное программирование без блокировок ↗
3. Композиция CompletableFuture: thenApply, thenCompose… ↗
4. ForkJoinPool и рекурсивные задачи: разделяй и властвуй ↗
5. ThreadLocal и модель памяти Java: happens-before и видимость ↗
6. volatile: когда ключевое слово решает проблему, а когда нет ↗
7. Атомарные классы: AtomicInteger, AtomicReference, CAS и… ↗
8. Lock, ReadWriteLock и Virtual Threads: новый мир… ↗

Модуль 10. Concurrency utilities

6 уроков
1. CountDownLatch: ждём завершения всех задач ↗
2. CyclicBarrier: синхронизация группы потоков в контрольной точке ↗
3. Semaphore: ограничение одновременного доступа к ресурсу ↗
4. Exchanger: двусторонний обмен данными между потоками ↗
5. BlockingQueue: паттерн производитель-потребитель ↗
6. Phaser: гибкая многофазная синхронизация ↗

Модуль 11. Работа с базами данных

7 уроков
1. JDBC глубоко: PreparedStatement, пакетные операции и транзакции ↗
2. Пул соединений: HikariCP — самый быстрый пул для Java ↗
3. Управление транзакциями: уровни изоляции и распространение ↗
4. Введение в ORM: зачем нужна прослойка между объектами и… ↗
5. JPA и Hibernate: Entity, EntityManager, JPQL и отношения ↗
6. Миграции схемы базы данных: Flyway ↗
7. Паттерны DAO и Repository: отделяем бизнес-логику от доступа… ↗

Модуль 12. HTTP и REST сервисы

8 уроков
1. java.net.http.HttpClient: современный HTTP-клиент в… ↗
2. Принципы REST: ресурсы, глаголы, статус-коды и HATEOAS ↗
3. Jackson: сериализация Java-объектов в JSON и обратно ↗
4. Jackson глубже: аннотации, модули, пользовательские… ↗
5. Валидация данных: Bean Validation и Hibernate Validator ↗
6. Обработка ошибок HTTP-клиента: retry, timeout, circuit breaker ↗
7. Тестирование HTTP-клиентов: подходы и инструменты ↗
8. Работа с XML: от DOM и SAX к JAXB ↗

Модуль 13. Тестирование по-взрослому

8 уроков
1. JUnit 5 глубоко: жизненный цикл, @Nested, @Tag, условные тесты ↗
2. Параметризованные тесты: @ParameterizedTest и источники данных ↗
3. Mockito: создание моков, стабов и шпионов ↗
4. Mockito глубже: ArgumentCaptor, verify, when и лучшие практики ↗
5. Test Doubles: Dummy, Stub, Spy, Mock, Fake — кто есть кто ↗
6. Интеграционные тесты и Testcontainers ↗
7. TDD на практике: красный — зелёный — рефакторинг ↗
8. Code coverage и мутационное тестирование с JaCoCo и Pitest ↗

Модуль 14. Логирование и мониторинг

5 уроков
1. SLF4J и Logback: архитектура логирования в Java ↗
2. Уровни логирования, аппендеры и конфигурация Logback ↗
3. Структурированное логирование и MDC: контекст в каждой строке ↗
4. Метрики приложения: введение в Micrometer ↗
5. Health checks: следим за здоровьем сервиса ↗

Модуль 15. Сборка и управление зависимостями

6 уроков
1. Maven глубоко: жизненный цикл, фазы и плагины ↗
2. Maven профили и фильтрация ресурсов: окружения и конфигурация ↗
3. Gradle: Groovy DSL, Kotlin DSL и сравнение с Maven ↗
4. Управление зависимостями: dependencyManagement, BOM и… ↗
5. Многомодульные проекты: организация большого кода на Java ↗
6. Публикация артефактов: Nexus, Artifactory и корпоративный… ↗

Модуль 16. Инструменты качества кода

5 уроков
1. Checkstyle: единый стиль кода — договариваемся и автоматизируем ↗
2. SpotBugs и статический анализ: находим баги до продакшна ↗
3. SonarQube: метрики качества и технический долг ↗
4. Код-ревью: что искать и как давать обратную связь ↗
5. Статический анализ в CI/CD: автоматизируем проверки в пайплайне ↗

Модуль 17. Паттерны проектирования в Java

8 уроков
1. Singleton: от классической реализации к enum — идиоматично и… ↗
2. Builder: строим сложные объекты читаемо и безопасно ↗
3. Factory Method и Abstract Factory: создание объектов по… ↗
4. Strategy: заменяемое поведение через композицию ↗
5. Observer: подписка на события и реактивное обновление ↗
6. Decorator: добавляем поведение, не меняя интерфейс ↗
7. Adapter и Facade: совместимость чужого кода и простота своего ↗
8. Практика: рефакторинг кода с применением паттернов ↗

Модуль 18. Архитектура приложений

6 уроков
1. Слоёная архитектура: presentation, business, data — границы и… ↗
2. Чистая и гексагональная архитектура: порты, адаптеры и… ↗
3. Domain-Driven Design: единый язык, сущности, value objects и… ↗
4. CQRS: разделение команд и запросов — зачем и когда ↗
5. Событийно-ориентированная архитектура: асинхронная интеграция… ↗
6. Принципы чистого кода: именование, функции, комментарии и… ↗

Модуль 19. Итоговый проект мидла

7 уроков
1. Постановка задачи: REST-сервис для управления проектами и… ↗
2. Проектирование модели предметной области: сущности, value… ↗
3. Реализация сервисного слоя: бизнес-логика без зависимости от… ↗
4. Репозиторий и работа с базой данных: JPA, Hibernate, Flyway ↗
5. Модульные и интеграционные тесты: Testcontainers для… ↗
6. Документирование, упаковка и запуск готового сервиса ↗
7. Куда дальше: анонс курсов «Java для сеньоров», «Scala для… ↗