Статьи

Java

Полный курс по языку Java — от установки JDK до многопоточности и HTTP-запросов

О разделе Java

Java — компилируемый язык со статической типизацией, работающий на виртуальной машине JVM. Один и тот же байт-код запускается на Windows, macOS и Linux, поэтому Java широко применяют в серверной разработке, Android, корпоративных системах, играх и инструментах разработчика.

Курс состоит из пяти частей:

  1. Установка и запуск
  2. Основы языка
  3. Объектно-ориентированное программирование
  4. Работа с данными
  5. Инструменты разработчика

Примеры рассчитаны на JDK 21 и новее. Весь код можно запускать командой java Файл.java или через IDE.

Содержание

1Введение в JavaО языке Java, JDK, JRE и JVM, как устроена компиляция и запуск2Установка JDKУстановка JDK на Windows, macOS и Linux, настройка PATH и JAVA_HOME3Среды разработкиУстановка и первый проект в IntelliJ IDEA, Eclipse и VS Code4Компиляция и запуск через консольjavac, java, пакеты, classpath, jar-архивы, jshell и запуск одного файла5Структура программыКласс, метод main, вывод на экран, комментарии, правила именования6Переменные и типы данныхПримитивные и ссылочные типы, var, константы, приведение типов, обертки7ОператорыАрифметические, сравнения, логические, побитовые, тернарный оператор и приоритеты8Ввод данных через ScannerЧтение с клавиатуры, проверка ввода, чтение до конца потока, BufferedReader9Условияif, else, else if, switch, switch-выражения и pattern matching10Циклыfor, while, do-while, for-each, break, continue, метки и вложенные циклы11МассивыОдномерные и многомерные массивы, класс Arrays, копирование, сортировка и поиск12СтрокиString, методы работы со строками, StringBuilder, форматирование и текстовые блоки13МетодыОбъявление методов, параметры, возвращаемые значения, перегрузка и рекурсия14Классы и объектыПоля, методы, конструкторы, this, static, инициализация, equals, hashCode и toString15ИнкапсуляцияМодификаторы доступа, геттеры и сеттеры, неизменяемые объекты, валидация16Наследование и композицияextends, super, переопределение, final, Object, композиция и выбор между подходами17Полиморфизм, абстрактные классы и интерфейсыДинамическая диспетчеризация, abstract, interface, default-методы, sealed-типы18Enum и recordПеречисления с полями и методами, EnumMap, записи, компактные конструкторы19Исключенияtry-catch-finally, checked и unchecked, throw и throws, try-with-resources, собственные исключения20Коллекции: List, Set, MapArrayList, LinkedList, HashSet, TreeSet, HashMap, TreeMap, Deque, Collections, Comparator21GenericsОбобщенные классы и методы, ограничения типов, wildcard, стирание типов22Лямбды и Stream APIФункциональные интерфейсы, лямбда-выражения, ссылки на методы, Optional, Stream API, Collectors23Файлы и каталогиPath, Files, чтение и запись текста, потоки байтов, обход каталогов, сериализация24Пакеты и организация проектаПакеты, импорт, структура каталогов, модификаторы доступа, слои, модули Java25Отладка и чтение stack traceКак читать stack trace, отладчик в IDE, точки останова, логирование, jdb и jcmd26Дата и времяПакет java.time — LocalDate, LocalTime, LocalDateTime, ZonedDateTime, Instant, Duration, Period, форматирование27Maven и GradleСистемы сборки Java-проектов — pom.xml, build.gradle, зависимости, жизненный цикл, сборка jar28Тестирование с JUnitJUnit 5 — аннотации, assertions, параметризованные тесты, исключения, жизненный цикл, запуск через Maven и Gradle29Основы многопоточностиThread, Runnable, synchronized, volatile, ExecutorService, Future, CompletableFuture, атомарные типы, виртуальные потоки30HTTP-запросыHttpClient из JDK — GET, POST, заголовки, таймауты, асинхронные запросы, обработка ошибок, JSON, простой HTTP-сервер