JavaRush
Акция
Университет
Java FullStack
Python FullStack
new
Web FullStack
new
Обучение
Курсы
Задачи
Опросы
Игры
Помощь
График пинков
Стажировка
Сообщество
Пользователи
Форум
Чат
Статьи
Истории успеха
Активности
Отзывы
Подписки
Светлая тема

Лекции

  • Отзывы
  • О нас
  • CS50
Начать
Начать обучение
Начать обучение
  • Мое обучение
  • Курсы
  • Университет
  • Карта квестов
  • Лекции
  • module-info.java: синтаксис, создание модулей

    JAVA 25 SELF
    60 уровень,1 лекция
    Разбираем, что такое файл module-info.java, где он лежит в проекте и как объявлять модуль с помощью ключевого слова module. Учимся экспортировать API через exports, подключать зависимости через requires, а также смотрим на дополнительные директивы ( opens, uses, provides ... with). В лекции — примеры, правила именования модулей, практический разбор структуры проекта и типичные ошибки при модульной сборке.
    Открыта
  • Инкапсуляция через модули: экспорт и импорт

    JAVA 25 SELF
    60 уровень,2 лекция
    Как Java 9+ добавила модульную инкапсуляцию поверх классов и пакетов: даже public-классы скрыты, пока пакет явно не открыт через exports в module-info.java. Разбираем, как подключать зависимости с requires, как ограничивать видимость с exports to, чем отличается уровень module от private/ public, и какие ошибки компиляции (например, «package ... is not visible», «cannot access ...») подсказывают, что вы забыли exports или requires.
    Открыта
  • Разделение проекта на модули: best practices

    JAVA 25 SELF
    60 уровень,3 лекция
    Практическое руководство по модульной архитектуре в Java: когда и зачем дробить код на модули, типовые схемы (луковая архитектура, разделение на api/ impl, тестовые модули), настройка зависимостей через module-info.java и ключевые слова requires/ exports, рабочие примеры проекта на 3 модуля, интеграция с Maven/ Gradle и IntelliJ IDEA, а также разбор типичных ошибок (циклические зависимости, неэкспортируемые пакеты, неправильный --module-path).
    Открыта
  • Сборка многомодульных проектов: Maven, Gradle, IDEA

    JAVA 25 SELF
    60 уровень,4 лекция
    Как собрать модульный проект на Java: отличие classpath от module-path, когда использовать флаг --module-path, как настроить многомодульную структуру в Maven и Gradle, и как запускать всё из IntelliJ IDEA. Покажем структуру модулей с module-info.java, зависимость через requires/ exports, конфигурацию плагинов и частые ошибки при сборке.
    Открыта
  • ProcessBuilder — запуск внешних процессов

    JAVA 25 SELF
    61 уровень,0 лекция
    Разбираем, как из Java запускать внешние команды и утилиты с помощью класса ProcessBuilder: чем он лучше Runtime. getRuntime(). exec(), как настраивать рабочую директорию через directory(), переменные окружения через environment(), и управлять процессом через start(), waitFor(), потоки getInputStream()/ getErrorStream()/ getOutputStream(). Обсудим кроссплатформенность ( cmd.exe/ ls), работу со stdout/ stderr и типичные ошибки.
    Открыта
  • Чтение вывода процесса, работа со stdin/stdout

    JAVA 25 SELF
    61 уровень,1 лекция
    Практика работы с внешними процессами в Java: как читать stdout через Process.getInputStream(), ловить ошибки из stderr через Process.getErrorStream(), писать во stdin с помощью Process.getOutputStream(), а также использовать удобные методы inputReader()/ errorReader()/ outputWriter(). Разберём особенности команд вроде java -version, параллельное чтение потоков для избежания deadlock, работу с кодировками ( "UTF-8") и небольшой бридж с Python-скриптами.
    Открыта
  • Управление жизненным циклом процесса

    JAVA 25 SELF
    61 уровень,2 лекция
    Практика управления внешними процессами из Java: ожидаем завершение через waitFor() (включая таймауты), читаем код возврата, корректно останавливаем через destroy()/ destroyForcibly(), предотвращаем зависания и «зомби»-процессы, не забывая о потоках вывода и исключениях. Разбираем кроссплатформенные нюансы и типичные ошибки.
    Открыта
  • Интерактивное взаимодействие с процессами

    JAVA 25 SELF
    61 уровень,3 лекция
    В этой лекции разберём, как из Java организовать «живой» диалог с внешними программами: писать в stdin, читать из stdout и stderr, избегать взаимных блокировок ( deadlock), параллельно обрабатывать вывод с помощью ExecutorService, корректно закрывать потоки и управлять жизненным циклом Process через ProcessBuilder. Посмотрим примеры с интерактивным скриптом на Python и утилитой bc, а также разберём подводные камни буферизации и необходимости flush().
    Открыта
  • Разбор типичных ошибок при работе с процессами

    JAVA 25 SELF
    61 уровень,4 лекция
    Практический гид по устойчивой работе с внешними процессами в Java: как избежать зависаний из‑за нечитанных потоков stdout/ stderr, правильно настраивать кодировки вывода (например, UTF-8, CP866), учитывать кросс‑платформенные различия команд ( ls vs dir), обрабатывать права доступа и выходные коды через process.exitValue(), закрывать ресурсы без утечек и избегать интерактивных взаимных блокировок. Рассматриваем грамотное использование ProcessBuilder, параллельное чтение потоков (потоки/ ExecutorService), корректное завершение через process.destroy(), а также универсальные пути с File.separator.
    Открыта
  • Введение в рефлексию: класс Class, зачем нужна

    JAVA 25 SELF
    62 уровень,0 лекция
    Разберём, что такое рефлексия в Java и зачем она нужна фреймворкам и инструментам, как работает объект Class — сердце рефлексии, и какими способами его получить: через .class, getClass() и Class.forName(). Поговорим, когда стоит применять рефлексию, а когда лучше обойтись без неё, посмотрим на примеры получения метаданных (имя, пакет, суперкласс, интерфейсы), разберём мини‑утилиту «Что за класс?» и типичные ошибки ( ClassNotFoundException, производительность, безопасность).
    Открыта
  • Получение информации о классах, полях, методах

    JAVA 25 SELF
    62 уровень,1 лекция
    В лекции разбираем рефлексию в Java: как через Class-API получить сведения о полях ( getFields()/ getDeclaredFields()), методах ( getMethods()/ getDeclaredMethods()), конструкторах ( getConstructors()/ getDeclaredConstructors()) и аннотациях ( getAnnotations()). Узнаем модификаторы через Modifier ( public, private, protected, static, final), разберём различия «public против declared», соберём мини-утилиту инспектора классов и посмотрим визуальную схему.
    Открыта
  • Безопасность, ограничения и альтернативы рефлексии

    JAVA 25 SELF
    62 уровень,2 лекция
    В лекции разбираем риски и ограничения рефлексии: обход инкапсуляции через setAccessible( true), попытки менять final-поля и почему это опасно из‑за оптимизаций JVM; судьбу SecurityManager и как модульная система (Java 9+) приводит к InaccessibleObjectException. Поговорим о потере производительности и типобезопасности, современных альтернативах ( record, sealed, pattern matching, APT, DI) и best practices. В конце — практический пример с параметром JVM --add-opens.
    Открыта
  • 1
  • ...
  • 26
  • 27
  • 28
  • 29
  • 30
  • ...
  • 57
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2025 JavaRush
MastercardVisa
"Программистами не рождаются" © 2025 JavaRush