Java с нуля: JDK, коллекции и Stream API
Шестнадцать уроков Java: запуск, типы, коллекции, generics, Stream API, Java 17/21/25 и LTS, Java Code Conventions, двоичный код, побитовые операторы, логические и другие операторы, интеграционные тесты Testcontainers и упаковка HTTP-сервиса в контейнер.
Материалы раздела
- JDK, JRE и JVM: как компилятор превращает Java-код в программу — JDK нужен, чтобы писать и собирать Java-программы, а JVM выполняет их байткод. JRE обозначает среду выполнения: виртуальную машину вместе с библиотеками и необходимыми файлами.
- Установка Java и jvm.dll: диагностика JDK, PATH и среды IDE — Ошибка jvm.dll появляется на этапе загрузки среды выполнения, ещё до обычной логики Java-программы. Прежде чем менять проект, нужно установить, какой launcher запущен, какой…
- Типы, классы и ссылки Java: от переменной к контракту объекта — Перед коллекциями и Stream API нужно различать значение переменной, ссылку на объект и действие метода. Иначе изменение общего списка кажется случайным, а null ошибочно…
- Java Collections Framework: иерархия, порядок и выбор контейнера — Java Collections Framework — семейство интерфейсов и реализаций для хранения и обработки групп объектов. Чтобы выбрать контейнер, сначала решите, нужны ли повторения, индексы,…
- Map.get возвращает null: почему падает addAll и как исправить контракт — Сообщение Cannot invoke "java.util.List.addAll(java.util.Collection)" because the return value of "java.util.Map.get(Object)" is null указывает на конкретное звено выражения: Map…
- Generics и коллекции Java: extends, super, ключи и неизменяемость — Generics позволяют компилятору проверить, какие элементы проходят через коллекцию. Но параметр List<String> не отвечает на вопросы о допустимости null, возможности изменения и…
- Stream API в Java: ленивый конвейер, завершение и повторный запуск — Stream API описывает преобразование последовательности элементов: откуда их получить, какие оставить, во что превратить и как завершить вычисление.
- Строки и Stream API: split, chars, codePoints и границы Unicode — Чтобы обработать строку через Stream API, сначала выберите единицу обработки. Строки файла, поля записи, UTF-16-единицы и Unicode code points — разные последовательности.
- Stream API: filter, reduce, groupingBy и построение отчётов — После фильтрации и преобразования stream нужно превратить в полезный результат: сумму, таблицу по группам, список или ответ на условие.
- Практика Stream API: отчёт по заказам и шпаргалка выбора операций — Соберём отчёт по заказам: исключим возвраты, посчитаем выручку по категориям, отсортируем категории и проверим результат на нескольких наборах.
- Java 17, 21 и 25: отличия версий и долгосрочная поддержка LTS — Java 17, Java 21 и Java 25 — последовательные поколения одной платформы. Они различаются доступным синтаксисом, стандартными API и поведением JVM.
- Java Code Conventions: именование, оформление и проверка стиля — Java Code Conventions — соглашения о том, как называть элементы программы и оформлять исходный код. Они помогают быстрее читать чужие изменения: увидеть границы ветки, отличить…
- Двоичный код и побитовые операторы в Java — Двоичный код представляет данные последовательностью нулей и единиц. В Java побитовые операторы позволяют работать с отдельными разрядами целого числа: проверять флаги, выделять…
- Логические и другие операторы в Java — Операторы Java позволяют вычислять значения, сравнивать данные и составлять условия. В этом уроке разберём логические операции, арифметику, присваивание, инкремент, тернарный…
- Testcontainers и JUnit 5: проверяем PostgreSQL из Java — Интеграционный тест SQL должен проверять реальную семантику выбранной базы. Testcontainers запускает временный PostgreSQL для теста, отдаёт фактический JDBC URL и удаляет…
- Java в Docker: multi-stage сборка JDK → JRE и остановка HTTP-сервиса — Java-приложению нужен компилятор во время сборки и среда выполнения после неё. Docker позволяет разделить эти этапы: JDK компилирует исходник в первой стадии, а итоговый…