О разделе
Длинные листинги (от ~15 строк) вынесены в каталог code.spirzen.ru и подгружаются в статьях через ExternalCodeEmbed — так HTML энциклопедии не раздувается, а код остаётся с подсветкой, вкладками и сериями "шаг 1…N". Короткие фрагменты (одна строка, пара выражений) по-прежнему прямо в markdown. Диаграммы mermaid и интерактив — на месте или в play.spirzen.ru.
Сначала: Что такое код и как он работает — общая база — код, блок кода, компиляция и интерпретация, исходный, байт- и машинный код; в этом разделе — синтаксис и особенности языка.
Общая теория — байт-код и виртуальные машины, сравнение GC (Java, Python, Go), программа и runtime.
Потоки — процессы и потоки; в Java — JVM и потоки, асинхронность, virtual threads (Java 21+).
Раздел охватывает язык Java, JVM, сборки (Maven/Gradle), фреймворки и работу с данными. Материалы рассчитаны на разработчиков и архитекторов: от первой программы до Spring, тестирования и облачного развёртывания. JDBC batch, Hibernate batch_size, keyset-выборка — Пакетная работа с данными, Hibernate batch.
Java — не "только банки" — это JVM-экосистема (серверы, Android-наследие, инструменты). В новых backend-проектах чаще Spring Boot, а не JSF — legacy-главы в разделе помечены как справочные.
Общие принципы (код, ООП, алгоритмы) — в Код и разработка и ООП; здесь — особенности Java и платформы.
В ключевых главах (JVM, коллекции, исключения) концепции по возможности даются сначала на псевдокоде, затем — на Java.
С чего начать (основной маршрут)
- Основы языка Java — JDK/JVM, байт-код, путь от исходника до запуска, состав дистрибутива. 1a. IntelliJ IDEA — установка, интерфейс, возможности IDE (рекомендуется перед первой программой).
- Первая программа — Maven; в статье два пути: IntelliJ IDEA (рекомендуется) и NetBeans.
2a. public static void main — точка входа — когда JVM вызывает
main. 2b. Ввод и вывод в Java — консоль —println, переменные, арифметика,Scanner(лестница из трёх программ). - Структура и сборки — Maven/Gradle, запуск вне IDE; отладка в IDEA.
- Синтаксис, типы (примитивы и обёртки), операторы и циклы, конструкции — пакеты, методы; случайные числа.
- ООП — классы, наследование, интерфейсы,
instanceof. - Теория: ошибки и исключения → исключения в Java, иерархия.
- Ввод-вывод и файлы, асинхронность, Virtual Threads (Java 21+), JVM и потоки.
- Аннотации и рефлексия, современный синтаксис — record, sealed, pattern matching.
- Вопросы на собеседование — Core Java — карта тем → главы раздела.
- Веб и данные: Spring Framework (обзор) → Spring Boot → практикум "Simple CRM" → аннотации Spring Boot → Security Basic → JWT → безопасность в prod → ошибки REST → JPA → Testcontainers → работа с БД. СУБД из кода — PostgreSQL, MySQL, SQLite, SQL Server.
- JVM в проде: JVM и потоки → флаги запуска в справочнике, §24 → jcmd, heap dump, JFR.
Пока не уверены в List, Stream, исключениях и main — не уходите в Первая программа на Spring Framework. Spring опирается на те же классы, пакеты и Maven, что и консольная программа.
Ветки по цели
Параллельно с Java на JVM — Kotlin (Android/Ktor), Groovy (Gradle DSL, Spock).
Сравнение с Kotlin
На одной JVM — Сравнение Java и Kotlin. В статье — синтаксис, null-safety, корутины и виртуальные потоки, экосистема, плюсы и минусы, выбор стека (2026). Смешанный проект — совместимость Kotlin и Java.
Сравнение с C#
Приходите с C# / .NET или выбираете между стеками — Сравнение C# и Java: JVM и CLR, синтаксис, virtual threads и async/await, Spring и ASP.NET Core, Big Data, производительность и рынок (2026).
Справочник и углубление
- Справочник по Java — синтаксис, коллекции,
java.time, JDBC, JVM + API-дополнения по language basics, collections, streams/gatherers и virtual threads. - Ключевые классы стандартной библиотеки —
String, дата/время. - Экосистема Java-приложений, рекомендации.
- Паттерны GoF на Java — большой гид + практические статьи по ключевым паттернам (122-140).
- Документация и инструменты (Microsoft) — OpenJDK, VS Code, Azure.
- Общая подборка документации.
Внешние источники
Компактные конспекты — для второго прохода; эталон — OpenJDK и документация Oracle.
| Источник | Назначение |
|---|---|
| Oracle Java SE Documentation | Спецификация языка и API |
| dev.java — Language Basics | Официальный фундамент синтаксиса и моделей кода |
| dev.java — Collections Framework | Интерфейсы и реализации коллекций |
| dev.java — Streams | Потоки, terminal/intermediate операции |
| dev.java — Stream Gatherers | Кастомные stateful-пайплайны в Stream API |
| dev.java — Virtual Threads | Современная конкурентность Java 21+ |
| Metanit: Java | Пошаговый курс на русском |
| Ravesli — уроки Java | Пошаговый курс на русском: введение, JDK, синтаксис, ООП |
| Java — конспект (GitBook) | Краткий Core Java |
| proglang.su/java | Углубление по коллекциям и API |
| Microsoft для Java | OpenJDK, VS Code — Документация и инструменты Java (Microsoft) |
| Тема в GitBook | Глава здесь |
|---|---|
| Типы, литералы, переменные, операторы | Типы данных и переменные в Java, Основные конструкции языка Java, Операторы и циклы в Java |
| Ввод с клавиатуры, консольный I/O | Ввод и вывод в Java, Основные конструкции языка Java (Scanner) |
| Особенности строк | Строки в Java, Типы данных и переменные в Java |
| Коллекции, Stream API | Коллекции в Java, Stream API в Java |
| Файлы, I/O | Ввод-вывод и файлы в Java |
| Асинхронность | Асинхронность в Java |
| Аннотации, рефлексия | Аннотации и рефлексия в Java |
| record, sealed, pattern matching | Современные конструкции Java |
| Дата и время | Ключевые классы и интерфейсы стандартной библиотеки (java.time) |
| Исключения | Обработка исключений в Java, Иерархия классов исключений в Java |
Интерфейсы, instanceof | Объектно-ориентированное программирование в Java, Ключевые слова в Java |
Примеры ориентированы на Java 17+ (LTS). Упоминания Date, Vector, Hashtable — в контексте legacy и собеседований.
Зачем этот раздел
Дать один понятный путь по Java на JVM: от JDK и IDE до Spring и JVM-диагностики, без обязательного JSF и без смешивания языков на старте.
С чего начать
| Шаг | Материал | Зачем |
|---|---|---|
| 1 | IntelliJ IDEA · Первая программа | IDE, затем JDK, Maven, Hello World |
| 2 | Отладка | Точки останова, Variables, Call Stack |
| 3 | Spring Boot | REST после Core |
| 4 | Spring Security · prod | Защита API и чеклист выкладки |
| 5 | JVM · флаги §24 · диагностика | Память, GC, -Xmx, jcmd |
Частые ошибки при старте
| Ошибка | Что делать |
|---|---|
| Прыжки между языками | Закройте одну "первую программу", потом Kotlin/Groovy |
| Код без запуска | mvn compile exec:java или Run в IDE |
| Spring до коллекций | Сначала шаги 4–6 основного маршрута |
| Путать JDK и JRE | Для разработки нужен JDK — Основы языка Java |
Что попробовать
- Первая программа на Java — оба варианта IDE или тот, что у вас в команде.
- Отладка Java-кода в IDE — найти off-by-one в цикле через F8.
- Первая программа на Spring Framework —
curl localhost:8080/...к своему API.
curl localhost:8080/...
- чек-лист в конце раздела.
Основы языка Java
Основы Java - устройство JDK/JVM, модель компиляции и базовые принципы платформонезависимого выполнения.
Что требуется знать перед началом изучения языка программирования Java
Java — объектно-ориентированный язык общего назначения с принципом "напиши один раз, запускай в любом месте".
Рекомендации по разработке на Java
Набор советов, правил, принципов и обычаев в разработке на этом языке.
Ввод и вывод в Java
Консольный ввод и вывод: System.out, переменные, арифметика и Scanner — от Hello World до программы с клавиатурой.
IntelliJ IDEA — IDE для разработки на Java
Обзор IntelliJ IDEA — установка, интерфейс, навигация, рефакторинг, отладка, Maven/Gradle, Git и первая программа на Java.
История языка Java
История Java — от проекта Green и Oak до OpenJDK, LTS-релизов и современной платформы (модули, records, виртуальные потоки).
Экосистема Java-приложений
Библиотеки, фреймворки, инструменты сборки, тестирования, развёртывания и мониторинга.
Структура и сборки Java-проектов
Что такое пакет и пакетная структура, как собираются проекты на Java.
Справочник по конфигурациям в Java
Справочник-шпаргалка по конфигурациям в Java — типы, синтаксис, стандартная библиотека, типовые паттерны. Не заменяет пошаговое обучение. Учебный курс — раздел.
Первая программа на Java
Гайд по установке и настройке с написанием первой программы и её запуском.
Простые приложения на Java
Практические примеры — консольные утилиты, композиция классов и первое Swing-приложение.
Отладка Java-кода в IDE
Точки останова, пошаговое выполнение, панели Variables и Call Stack — практика отладки в IntelliJ IDEA.
Синтаксис и пунктуация в Java
Кавычки, точки, запятые, скобки и прочие знаки препинания.
Ключевые слова в Java
Справочник ключевых слов Java — основные, контекстные и зарезервированные слова.
Встроенные функции и методы Java
Набор функций, которые включены в стандартную библиотеку языка.
Типы данных и переменные в Java
Типизация, набор правил определения типа данных значений языка.
Основные конструкции языка Java
Команды ввода и вывода, пакеты, классы, методы и прочие элементы языка.
Операторы и циклы в Java
Сравнительные, логические, арифметические, тернарный, условные и прочие.
Объектно-ориентированное программирование в Java
ООП в Java - базовые принципы моделирования предметной области через классы, объекты и контракты поведения.
Особенности и расширения языка Java
Особые инструменты - анонимные классы, переменное число аргументов, упаковка, final, super.
Стандартные библиотеки и утилиты Java
Неотъемлемые части Java, основные классы и инструменты.
Обработка исключений в Java
Обработка исключений в Java - checked/unchecked-модель, `try-catch-finally` и корректная стратегия восстановления.
Иерархия классов исключений в Java
Предназначение — Базовый класс для всех исключений связанных с рефлексией. Группирует ошибки при работе с мета-данными классов во время выполнения.
Работа с базами данных из Java
Особенности получения данных и записи, связи с БД и ORM.
JVM, память и потоки
Низкоуровнево - основные понятия и реализации, работа с памятью и потоками.
Массивы в Java
В Java массивы — это низкоуровневая конструкция для максимальной производительности. Весь комфорт работы с динамическими данными вынесен в отдельные классы коллекций.
Коллекции в Java
Collections Framework — List, Set, Map, Queue: реализации, сложность операций, выбор структуры.
JavaServer Faces - фреймворк для веб-интерфейсов
Спецификация для создания пользовательских интерфейсов веб-приложений.
Первая программа на JavaServer Faces
Первая программа на JavaServer Faces - базовая настройка JSF-проекта и структура серверного MVC-приложения.
Практикум JSF — список задач
Пошаговое создание веб-приложения "Список задач" на JavaServer Faces 4, CDI и Maven — от pom.xml до AJAX-таблицы и Jetty.
Практикум Swing — XML-валидатор
Пошаговое создание десктопного XML-валидатора по XSD на Swing и Maven — от pom.xml до SwingWorker, JFileChooser и javax.xml.validation.
Практикум Spring Boot — Simple CRM
Пошаговое создание CRM на Spring Boot 3, SQLite, Thymeleaf и REST API — от pom.xml до веб-интерфейса и curl-проверки.
JavaBeans - компонентная модель
JavaBean — это соглашение (convention), закреплённое в спецификации JavaBeans Specification, впервые опубликованной компанией Sun Microsystems в 1997 году.
Первая программа на JavaBean
Первая программа на JavaBean — базовая модель компонента, свойства, геттеры/сеттеры и правила переиспользования.
Spring Framework
Набор фреймворков и инструментов для построения корпоративных приложений.
Первая программа на Spring Framework
Первая программа на Spring Framework — базовая конфигурация проекта, запуск приложения и принципы DI.
Spring Security — практический старт
SecurityFilterChain, публичные и защищённые эндпоинты, HTTP Basic и MockMvc — без устаревшего WebSecurityConfigurerAdapter.
Testcontainers — интеграционные тесты с реальной БД
Testcontainers и PostgreSQL: @DataJpaTest, @DynamicPropertySource и интеграционный тест JPA-репозитория без моков.
JWT и OAuth2 Resource Server в Spring Boot
JWT: POST /auth/login, Bearer-токен, JwtEncoder/JwtDecoder и OAuth2 Resource Server с симметричным ключом для учебного проекта.
Spring Boot — безопасность в продакшене
Чеклист для production: HTTPS, CSRF, CSP, OIDC, PasswordEncoder, секреты, SCA зависимостей, OWASP ZAP и security-ревью в CI.
Ключевые классы и интерфейсы стандартной библиотеки
Ключевые классы и интерфейсы Java — обзор стандартной библиотеки для строк, файлов, коллекций, дат и базовых операций.
JUnit 5 и тестирование Java
Модульные и интеграционные тесты в Java — JUnit 5, Mockito, Spring Boot Test и практический путь построения тестовой пирамиды.
Gradle — практический старт
Сборка Java-проектов на Gradle — Kotlin DSL, зависимости, задачи и сравнение с Maven.
Hibernate и JPA — практический старт
Spring Boot + Spring Data JPA — сущность, репозиторий, H2 и REST без ручного SQL.
Документация и инструменты Java (Microsoft)
В энциклопедии Java разобраны язык, JVM и экосистема (основы, сборки, первая программа, Spring).
Stream API в Java
Функциональная обработка коллекций — потоки, лямбды, Collectors, Optional и практические правила выбора.
Строки в Java
String, текстовые блоки, форматирование, сравнение, StringBuilder и работа с кодировками.
Ввод-вывод и файлы в Java
Потоки байтов и символов, NIO.2 Path/Files, try-with-resources и типичные ошибки при работе с диском.
Асинхронность в Java
ExecutorService, CompletableFuture, virtual threads и выбор модели для I/O и CPU-задач.
Аннотации и рефлексия в Java
Метаданные в коде, встроенные и пользовательские аннотации, API reflect и границы применимости.
Справочник по Java
Каждая программа на Java начинается с определения класса. Класс — это шаблон для создания объектов, содержащий поля (переменные) и методы (функции).
Современные конструкции Java
record, sealed-классы, pattern matching, var и практический выбор между классами и новым синтаксисом.
Вопросы на собеседовании — Core Java
Навигатор по типовым вопросам Java Core (JavaRush Top-50, ITVDN 250+) с краткими формулировками ответов и ссылками на главы энциклопедии.
JVM в проде — jcmd, дамп памяти и JFR
JVM в проде: jcmd, heap dump и JFR — практика при тормозах и OutOfMemoryError без перегруза теорией GC.
Ошибки REST — @Valid и @ControllerAdvice
@Valid, @ControllerAdvice и ProblemDetail — предсказуемые ответы 400/404 для Spring Boot REST API.
Аннотации Spring Boot
Ключевые аннотации Spring Boot по категориям: DI, Web, JPA, Security, тесты и конфигурация с короткими примерами.
Virtual Threads в Java (Java 21+)
Project Loom: как JVM планирует виртуальные потоки поверх platform threads, mount/unmount при I/O и практика API.
Quarkus — первая программа
Первая программа на Quarkus — code.quarkus.io, REST-ресурс, dev-режим и native-сборка пошагово для Java-разработчика.
Micronaut — первая программа
Первая программа на Micronaut — launch.micronaut.io, контроллер, DI через конструктор, dev-режим и проверка REST.
JavaFX и GUI
Графический интерфейс в Java — JavaFX, Swing, компоновка, события, FXML и поток UI.
Первая программа на JavaFX
Десктопное окно на JavaFX — контролы, GridPane, DemoApp, события и Application.launch.
Справочник по JavaFX и Swing — элементы UI
Рецепты JavaFX и Swing — как добавить Stage, Button, TextField, таблицы, меню и диалоги.
Records в Java — практическое руководство
Java 16+ record как value-тип — синтаксис, compact constructor, equals/hashCode, pattern matching и типичные сценарии DTO и домена.
public static void main — точка входа JVM
Как JVM находит main, чем запуск java MyApp отличается от import класса и когда static-блоки выполняются без main.
Java — итоги
Итоги раздела «Java» — FAQ и краткие ответы по теме.
Java — чек-лист
Чек-лист раздела «Java» — вопросы для самопроверки.
Java — о разделе
Подборка материалов раздела Java — от JDK и синтаксиса до Spring, JPA и экосистемы; внешние конспекты и официальная документация.
В подборках
Статья входит в тематические подборки и блок "С чего начать?" на главной. Соседние шаги того же маршрута:
База программиста — Python — о разделе, Документация и инструменты Java (Microsoft), JavaScript — о разделе, Low-code и No-code платформы, Автоматическое управление памятью, Разработка и отладка — о разделе.
Бэкенд и серверная разработка — Python — о разделе, Платформа .NET — о разделе, JavaScript — о разделе, C# — о разделе, SQL — о разделе, C++ — о разделе.