Среда разработки IDE

IDE объединяет editor, анализ кода, refactoring, debugger, test runner и интеграцию со сборщиком/VCS. Она ускоряет работу, но источником истины остаются файлы проекта и воспроизводимая CLI-сборка.

Что делает IDE

  • строит syntax tree и symbol index;
  • показывает compile/static-analysis errors до build;
  • выполняет семантические refactorings;
  • управляет breakpoints и подключается к JVM debugger;
  • импортирует Maven/Gradle model;
  • запускает tests и отображает результаты;
  • помогает работать с Git index и diff.

Debugger

Breakpoint останавливает thread в определённой точке. Step over выполняет текущую строку, step into входит в вызов, step out завершает текущий frame. Conditional breakpoint полезен, когда ошибка возникает только для конкретного id.

Изменение expression во время debug может иметь side effect. В многопоточном приложении остановка одного или всех threads меняет timing и способна скрыть race condition.

Refactoring

Безопасное rename обновляет references с учётом языка. Но reflection, строки конфигурации, SQL и внешние contracts IDE может не распознать. После refactoring всё равно запускаю tests и поиск старого имени.

Project model

Если IDE вручную добавила library, а pom.xml — нет, CI dependency не увидит. JDK, compiler release, generated sources и test resources должны быть описаны сборкой.

Типичные сбои

  • “Работает у меня” из-за локальной run configuration.
  • IDE скрывает warning, включённый compiler/linter в CI.
  • Debugger меняет timing concurrency bug.
  • Рефакторинг Java symbol не обновил JSON field внешнего API.
  • Плагин IDE исполняет недоверенный код с правами пользователя.

Вопросы для собеседования

Почему IDE не заменяет build tool? Её локальная модель не является переносимым pipeline и может отличаться от CI.

Чем debugger отличается от logging? Debugger интерактивно останавливает конкретный process, logs сохраняют наблюдения без подключения и полезны в распределённой среде.

Что такое semantic refactoring? Изменение с учётом symbols/types/references, а не простая замена текста.

Почему breakpoint может скрыть race? Остановка threads меняет порядок и задержки исполнения.

См. IntelliJ IDEA, Основы иcпользования Maven, Что такое Git.