Среда разработки 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.