Курс на 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 для…