Idea программа для программирования
История появления IDE начинается с того момента, когда программистам пришло в голову объединить вместе 4 самых часто используемых инструмента для разработки программ:
- Текстовый редактор
- Компилятор (или интерпретатор, в зависимости от языка)
- Средства автоматизации сборки
- Отладчик
С той поры много воды утекло. Современные IDE уже сложно представить без таких вещей, как:
- Браузер классов: средство для удобной навигации по тысячам классов проекта
- Интеграция с системами контроля версий
- Инструменты для конструирования интерфейса программ без кода
- Мощные инструменты рефакторинга (изменение кода без добавления новых функций)
- Анализ стиля кода и принуждение к нему
- Мощнейшие отладчики, которые позволяют отлаживать программы даже удаленно
- Анализаторы кода и всевозможные подсказки
На сегодняшний день для Java-разработчика есть множество различных IDE, из которых можно выделить 3 самых популярных:
- IntelliJ IDEA
- Eclipse
- Net Beans
Многие программисты еще застали многолетнюю войну между Eclipse и IntelliJ IDEA, однако сейчас уже всем очевидно, что победа досталась IDEA. И вы поймете почему, как только поработаете в ней хотя бы несколько дней.
2. Виды IntelliJ IDEA
Компания JetBrains выпускает обновления IntelliJ IDEA четыре раза в год. Нумерация версий IDEA состоит из номера года и номера релиза в году. Например, версия 2018.2 — это второй релиз 2018 года, а 2019.3 — это третий релиз 2019 года. Запутаться сложно.
В каждом релизе есть две версии IntelliJ IDEA: бесплатная и платная .
IntelliJ IDEA Ultimate Edition
Платная версия называется IntelliJ IDEA Ultimate Edition. Она отличается серьезной поддержкой большого количества профессиональных фреймворков, таких как Spring, Hibernate, GWT, и т.п. Такие вещи вам понадобятся в лучшем случае в самом конце обучения на JavaRush.
У IntelliJ IDEA Ultimate Edition есть 30-ти дневный бесплатный период, но в дальнейшем придется выложить за нее кругленькую сумму.
Если вы хотите попользоваться платной версией бесплатно, для этого есть вполне официальный путь. Называется он Early Access Program (EAP).
IntelliJ IDEA EAP
Все дело в том, что с выпуском каждой версии IDEA сохраняется риск, что какие-то новшества будут работать неправильно или вообще сломают какие-то уже работающие вещи. Поэтому JetBrains предлагает скачать еще официально не выпущенную версию IntelliJ IDEA Ultimate Edition, чтобы разработчики протестировали ее на реальных проектах.
С одной стороны, есть риск, что эта версия будет сырой, с другой стороны, вы получите доступ к самым новым фичам IDEA еще до их официального выпуска. Причем бесплатно. Разве это не круто?
3. Установка IDEA
Существуют версии IDEA под Windows, MacOSX, а также Linux. В этом нет ничего удивительного, т.к. разработчики очень любят две последние операционные системы. Когда вы поднаберетесь опыта, тоже будете поражаться тому, как просто управлять различными программами и сервисами через консоль/терминал.
ШАГ 1. Зайдите на сайт JetBrains и выберите IntelliJ IDEA Community Edition (она бесплатная).
ШАГ 2. Загрузите файл, откройте его и нажмите Next.
ШАГ 3. Оставьте путь установки, заданный по умолчанию (в ином случае – точно запомните, где именно установлена IDEA).
ШАГ 4. Установщик предложит создать ярлык и задать ассоциации. Согласитесь на ярлык на рабочем столе и задайте ассоциацию с расширением файлов .java
ШАГ 5. Нажмите Install.
ШАГ 6. Установка.
ШАГ 7. Запустите IntelliJ IDEA
ШАГ 8. При первом запуске IntelliJ IDEA появится диалоговое окно с требованием указать путь к файлу с настройками. Так как это ваш первый опыт знакомства с IDE, выберите пункт «Do not import settings».
ШАГ 9. Анонимная передача информации JetBrains об используемых функциях и плагинах. Можете выбрать любой вариант.
ШАГ 10. Лицензионное соглашение.
ШАГ 11. Следующим шагом настройки intellij IDEA будет выбор темы. По умолчанию их две – стандартная (светлая) и Darcula (тёмная).
ШАГ 12. Установка и настройка IntelliJ IDEA закончена: вы можете приступить к работе. Создание нового/первого проекта опишем в следующей лекции.
Если у вас остались вопросы, возможно, вам поможет официальная инструкция по установке IntelliJIDEA.
4. Видео инструкция установки
Дальше просто запускайте скачанный инсталлятор и устанавливайте IDEA. Мы сделали специальное видео, чтобы максимально облегчить для вас этот процесс.
>5. Создание первого проекта
Чтобы написать первую программу в IDEA, нужно сделать 3 вещи:
- Создать новый проект
- Создать класс Solution, в котором написать код вашего класса
- Запустить программу на выполнение.
Пошаговая инструкция создания проекта
ШАГ 1. Чтобы создать проект, нажмите на Create New Project.
ШАГ 2. Выберите тип проекта Java.
ШАГ 3. Добавьте к проекту JDK, который он будет использовать. Это важно: без этого IDEA не будет работать. Выберите папку с jdk и нажмите Next.
ШАГ 4. Тут можно указать шаблон, на основе которого Intellij IDEA создаст проект. Сейчас ничего выбирать не нужно.
ШАГ 5. Уже почти все готово. Укажите название проекта и нажмите кнопку Finish.
ШАГ 6. Все: проект создан. Теперь вы можете создавать классы в папке src.
ШАГ 7. В папке src кликните правой кнопкой мыши и создайте новый пакет.
ШАГ 8. Укажите имя пакета для будущих классов.
ШАГ 9. Теперь создайте новый класс для вашего кода. Кликните правой кнопкой мыши на имени пакета.
ШАГ 10. Укажите имя нового класса. Например, Solution.
ШАГ 11. Intellij IDEA создала для вас шаблон класса, и в нем можно начинать писать наш код.
ШАГ 12. Сначала создайте метод main. Напишите psvm и нажмите кнопку TAB.
ШАГ 13. Теперь выведите на экран надпись (sout + TAB) – Hello World!.
ШАГ 14. Запустите программу – кликните правой кнопкой мыши на коде с программой и выберите Run или Ctrl+Shift+F10.
ШАГ 15. Ваша программа вывела на экран текст: его вы можете видеть на панели снизу. Синим цветом выводится служебная информация.
Видео о том, как создать проект в IDEA
>6 Плагины для IntelliJ IDEA
У IntelliJ IDEA есть множество плагинов, которые облегчают различные аспекты работы программистов. Но нам интересны в первую очередь те, которые помогают нам учиться.
Есть просто шикарный плагин для IntelliJ IDEA: называется он Key Promoter X. Он подсказывает вам, как различные сложные действия, которые вы выполняете в IDEA, можно сделать за одно нажатие комбинации горячих клавиш. Ставьте его — не пожалеете.
Для начала зайдите в раздел плагины. Для этого нужно нажать Ctrl+Alt+S. Затем наберите в строке поиска фразу KeyPromoter X, и устанавливайте плагин:
Классическая модель разработки любых приложений подразумевает наличие хорошей документации по пользовательскому интерфейсу и API, а также, при необходимости, хорошего покрытия исходного кода комментариями. В этом случае, доработка системы начинается с изучения документации, затем непосредственно изменяется код и, наконец, обновляется вся необходимая информация.
Однако, одна из проблем такого подхода заключается в том, что это значительно удорожает и замедляет сам процесс разработки. Что если всего этого нет? Тогда на помощь приходит IDE, благодаря которой можно изучить текущую логику по “голому” коду.
Когда мы разрабатывали платформу lsFusion со встроенным языком, то у нас было несколько вариантов. Либо изобретать велосипед, и писать с нуля свою собственную IDE, как сделал в свое время 1С, или реализовать плагин к уже существующей. Мы пошли по второму пути, и в этой статье я покажу, что получилось.
Так как сама платформа разработана на Java, то у нас были две основные опции: Eclipse или IDEA. Мы остановились на последнем варианте и не прогадали. Когда мы принимали решение, IDEA еще была недостаточно популярна, но с тех пор, они вырвались в лидеры на рынке, а Eclipse тихонько отстает.
На разработку самого плагина ушло не очень много времени, так как удалось во многом задействовать код, используемый непосредственно при выполнении платформы. Таким образом, мы минимальными усилиями получили очень мощную IDE, во многих аспектах значительно превосходящую по функционалу IDE многих других ERP-платформ (как родных, так и построенных на Eclipse).
Роль IDE в разработке тяжело переоценить. Несмотря на то, что многие разработчики до сих пор используют vim и считают, что так и надо. Эта позиция имеет право на жизнь, если один человек разрабатывает и в дальнейшем поддерживает этот код. Однако, в более крупных проектах, где участвует большое количество людей очень важна их взаимозаменяемость. Сотрудники болеют, уходят в отпуск, увольняются в конце концов. Кроме того, нагрузка по разным проектам неравномерна, и иногда требуется на один из них подключить большее количество людей, чтобы уложиться в короткие сроки. В такие моменты к доработкам приходится подключать новых людей, которым нужно быстро разобраться в том, как в текущий момент работает программа, и внести необходимые изменения. И тут на первый план выходит IDE.
В первую очередь от IDE нам требовалось следующее:
- Поддержка синтаксиса. Подсветка ключевых слов, автоподстановка, подсветка ошибок.
- Навигация. Переход к объявлению, поиск использований, поиск по текстовой строке, файлу или названию и т.д.
- Анализ. Иерархия классов и вызовов, а также свойства и действия класса.
- Рефакторинг. Переименование классов, свойств и действий.
- Визуализация форм. Отображению разработчику текущего дизайна определенной формы.
- Метапрограммирование. Возможность на лету генерировать код на основе метакодов.
- Отладчик. Возможность ставить breakpoint’ы (в том числе и с условиями), отлаживать императивную логику, смотреть watches.
- Language Injection. Навигация, рефакторинг, автоподстановка и подсветка синтаксиса lsFusion при использовании в других языках — Java и JasperReports XML.
Приведу несколько простых примеров для того, чтобы показать, как это работает на практике.
Поддержка синтаксиса
Плагин умеет подставлять допустимые ключевые слова, возможные свойства, автоматически обнаруживать различные ошибки:
Навигация
Возьмем логику из примера Управление материальными потоками. Предположим, нам нужно посмотреть, где объявляется свойство Цена. Для этого нужно под пользователем с правами администратора навести указатель мыши на заголовок нужной нам колонки:
В появившемся окне сразу видно, в каком модуле это свойство создано (Shipment), какой номер строки в нем (37), таблица в которой хранится (_auto_Shipment_ShipmentDetail), и ряд другой информации.
Чтобы перейти непосредственно к объявлению свойства, нужно начать поиск файла и в появившемся диалоге ввести Shipment:
Затем при помощи Navigate — Line/Column переходим к 37й строке, где видим объявление свойства:
Нажав CTRL+ALT+F7, стоя курсором на нужном свойстве, можно быстро найти все его использования по всем проектам:
В данном случае, первое использование цены идет в расчете суммы по строке. Два последних — это добавление на соответствующие формы.
При необходимости можно включить поиск только по записи в данное свойство, если убрать соответствующую опцию:
Тогда в списке останется только запись в это свойство. Чтобы узнать, какое конкретно значение в него записывается нужно встать курсором на salePrice и нажать Go To Declaration or Usages. Дальше вернутся через Navigation — Back и перейти к объявлению свойства item:
Подводя итог, мы нашли, где объявлено это нужное нам свойство, в каких случаях оно используется, и когда туда идет запись. На видео я делал все действия мышкой, хотя конечно на практике используется исключительно клавиатура. Такая техника позволяет быстро определять текущую реализованную логику системы и вносить в нее изменения, имея полное представление о том, к чему это приведет.
Рефакторинг
Часто бывает ситуации, когда требуется изменить название свойства, класса, формы или любого другого элемента в системе. Для осуществления такого действия нужно стать на этот элемент и нажать Refactor — Rename:
Переименование элемента автоматически изменяет исходный код во всех местах его использования. Кроме того, если создан файл migration.script, туда будут добавлены соответствующие записи. Серверу необходимо знать изменения имен, чтобы, например, автоматически мигрировать данные из одной колонки в другую. Иначе, невозможно отличить переименование от создания нового свойства с другим именем.
Анализ
Перед тем как выполнить рефакторинг, часто бывает необходимо выяснить «что происходит» и «кто все эти люди».
Для этого IDEA, практически из коробки, позволяет просмотреть структуру выбранного класса (доступные для этого класса свойства и действия):
Также, если необходимо составить общую картину происходящего, IDEA позволяет строить различные иерархии:
- наследований выбранного класса
- использований выбранного элемента (например, свойства или формы)
Все верхние возможности предоставляются IDEA автоматически (с минимальными телодвижениями) после реализации механизма поиска объявлений. Следующий набор возможностей заставил повозиться с плагином немного больше, но все равно значительную часть инфраструктуры предоставила IDEA (не без проблем конечно, но об этом позже).
Визуализация форм
В lsFusion структура и дизайн форм задается в том же коде, что и доменная логика, при помощи специальных конструкций. При этом разные части формы могут быть объявлены в разных модулях, а при запуске сервера будут “сливаться” воедино в зависимости от подключенных модулей.
Чтобы видеть результирующий дизайн можно, конечно, перезапускать сервер, и смотреть результат в клиенте. Но на рестарт сервера требуется определенное время. Плагин же умеет:
- Показывать текущий дизайн и иерархическую структуры формы в специальном окне
- Находить элементы в структуре формы
- Выделять выбранный элемент формы в дизайне
При построении формы учитываются только текущий активный модуль и все, от которых он зависит.
Визуально изменять текущий дизайн пока невозможно, так как форма формируется из нескольких блоков кода. При модификации тяжело однозначно определить в каком месте нужно вносить соответствующие изменения. Кроме того, один и тот же элемент может модифицироваться в нескольких блоках кода, и платформа гарантирует, что если один модуль зависит от другого, то его изменения будут применены последними. Однако, в дальнейшем мы планируем добавить определенный функционал по визуальному изменению дизайна.
Метапрограммирование
Иногда возникает потребность создавать однотипный код для различных задач. В lsFusion есть механизм метакодов, который позволяет генерировать код на основе некоторого шаблона. При этом, в случае изменения метакода, будет происходить автоматическая обновление кода. По сути, это автоматический copy/paste с возможностью замены определенных идентификаторов на заданные значения.
Для включения этого механизма нужно сначала активировать его в меню. После этого IDE будет сама автоматически изменять соответствующий код.
При запуске сервера будет использоваться только сгенерированный код. Сами шаблоны META при запуске сервера учитываться не будут.
Кстати, реализация возможности метапрограммирования заставила нас внести еще один вклад в open-source (в данном случае в лице Intellij IDEA). Дело в том, что в ERP метакоды используются достаточно активно, и, соответственно, часто возникает необходимость сгенерировать код / удалить сгенерированный код. Это приводит к большому количеству асинхронных изменений файлов, что, в свою очередь, приводило к весьма своеобразному багу. Проблема в том, что в самом JetBrains его не могли воспроизвести, поэтому все свелось к тому, что нам самим пришлось написать неработающий юнит-тест. Это конечно заняло несколько дней, зато косвенно помогло нам при реализации следующих двух возможностей.
Отладчик
Когда по коду совершенно непонятно что происходит, то приходится обращаться к отладчику. На любой строке императивной логики (действия, события, ограничения) можно поставить breakpoint. Как только выполнение сервера достигнет этой точки, оно будет остановлено и управление перейдет в отладчик. В этот момент можно смотреть watches, а также продолжать выполнение построчно. Слева будет показан stack trace, по которому можно перемещаться как при отладке обычного Java приложения.
При просмотре текущих значений можно обращаться как текущим объектам (например, Shipment s), так и к любым другим объектам из базы (например, Item i). Однако, разработчик сам несет ответственность за добавление в watches данных, считывание которых займет много времени или памяти, и приведет к падению производительности.
Также можно ставить breakpoint'ы на конкретное свойство. Выполнение остановится в любом месте, когда в него будет производится запись:
Это бывает полезно, когда нужно определить какое событие или действие изменяет значение свойства.
Для реализации отладчика мы на самом деле использовали существующий в IDEA Java Debugger. То есть отлаживается платформа как обычное Java приложение, но для lsFusion действий мы создаем proxy java методы и подменяем их отображение на свой код (я так понимаю в IDEA это сделано для поддержки Scala и других оберток над Java). И вот тут был забавный момент. В какой-то момент разработчики IDEA сделали конструктор своего Java Debugger закрытым (private). И если ситуацию с вызовом private методов еще можно обойти через Reflection, то как унаследоваться от класса с private конструктором — непонятно. Но как раз в то время шли разборки с багом из верхнего раздела, и мы «по бартеру» решили попросить людей из JetBrains сделать этот конструктор обратно protected, на что они отреагировали очень оперативно (за что им конечно большое спасибо).
Language Injection
Одна из самых необычных возможностей IDEA — возможность обеспечивать поддержку своего языка в строковых константах других языков. Для этого достаточно сказать IDEA, какие именно строковые константы относятся к твоему языку, дальше IDEA сама автоматически:
- генерирует виртуальный файл (или несколько файлов) с заданными префиксами для каждой строковой константы
- создает в редакторе исходного файла для всех констант своего рода «окна» в этот виртуальный файл
- обеспечивает в этом виртуальном файле поддержку всех возможностей «внедряемого» языка, таких как подсветку ошибок, переход к объявлению, автодополнение, поиск использований и, что особенно важно, рефакторинг. То есть, при переименовании любого элемента на одном языке, он автоматически переименовывается и во всех строковых константах, ссылающихся на этот элемент в других языках. Таким образом вы автоматически защищены от «битых» ссылок.
Заключение
В статье описаны только основные варианты использования. В ней также присутствуют возможности по поиску реализаций абстрактных свойств и классов, визуализации зависимостей между модулями и свойствами, автоматической генерации форм на основе xml/json и многое другое. И, конечно же, есть встроенная интеграция с основными системами контроля версий Git и Subversion, а также поддержка Maven и Ant.
Пойдя по пути разработки плагина к IDEA, мы небольшими усилиями получили очень мощную бесплатную интегрированную среду разработки, превосходящую по многим параметрам IDE конкурентов.
Я люблю две вещи: Intellij IDEA и чистый код (Clean Code).
IDEA создана для чистого кода. Многие настройки по умолчанию уже стимулируют вас писать как надо.
Но она всё ещё не идеальна.
Когда я устанавливаю новую копию IDEA, я пробегаю по настройкам и выставляю свои любимые галочки.
Хочу ими с вами поделиться в надежде, что когда-нибудь и они станут стандартом.
- Минимум комментариев. Код должен быть читаем сам по себе.
- Небольшие функции. Длинные функции должны быть разбиты на несколько маленьких с говорящими именами.
- Частые коммиты. Каждый коммит должен быть атомарным и делать одно изменение, а не кучу разных.
- Тесты. Не просто наличие тестов, а предельное внимание к ним.
Давайте посмотрим, что нужно настроить в IDEA, чтобы она способствовала написанию чистого кода.
Стандартные заголовки
Первым делом я всегда удаляю самый большой буллщит в Intellij IDEA — стандартный заголовок файлов:
Вся информация об авторах и датах должна храниться в специально отведённом для этого месте — системе контроля версий. Я не хочу захламлять этим код!
Аналогичным образом удаляю стандартные заголовки для некоторых языков:
Неисключительные исключения
Примерно в том же меню я удаляю надоедливые «throws Exception» в шаблонах для JUnit:
Они не нужны в большинстве случаев и только загрязняют код.
Чем меньше кода, не несущего полезной логики — тем лучше!
А там, где они понадобятся, IDEA добавит их на раз.
Автоматический импорт
Дальше я ставлю галочку «auto import». Когда я пишу в коде новое имя класса, пусть IDEA сама его моментально импортирует. Почему я должен беспокоится о том, что компьютер может сделать за меня? Лучше я не буду отвлекаться от действительно важных мыслей.
Это аццки удобная фича, попробуйте!
Работа с вкладками
Возможно, это уже дело вкуса и зависит от проекта, но для меня ограничение в 5 табов — просто неприемлемо. 20 как минимум! И когда я закрываю вкладку C, я интуитивно ожидаю, что я окажусь в предпоследнем месте B (откуда я пошёл в C). А когда я закрою и B, мне кажется логичным вернуться в A. Поэтому ставлю галочку «Activate most recently used tab». Варианты «пойти налево» и «пойти направо» — просто нонсенс.
Show usages
Далее я обязательно назначаю комбинацию клавиш Ctrl+F7 на действие «Show usages». Это очень удобное действие, я его использую, наверное, чаще всех остальных! По умолчанию у него какая-то другая комбинация клавиш, не такая удобная. А Ctrl+F7 по умолчанию делает что-то другое, не такое полезное.
А действие «Show Usages» показывает все места, где используется данная переменная/метод, прямо тут же, в маленьком всплывающем окошке. Это чертовски удобно, не нужно переключать внимание и переносить взгляд в другое место! По нему можно удобно бегать вверх-вниз стрелками и закрывать простым ESC. Навигация на кончиках пальцев!
Вот как выглядит Show Usages в действии:
ВерблюжьиГорбы
- IDEA выделяла всё слово целиков, когда я дважды кликаю на него мышкой, и
- IDEA бегала между большими буквами, когда я хожу по слову влево-вправо стрелками с нажатым Ctrl.
То есть если курсор стоит в начале слова AbstractStudentFactory, и я нажимаю Ctrl+вправо, я хочу, чтобы курсор скакнул к началу подслова «Student», а не сразу в конец. В IDEA по умолчанию ровно наоборот.
Первый пункт регулируется в Settings -> Editor (самая первая галочка):
А второй там же, в подменю «Smart keys»:
Автосохранение файлов
Многие знают (или догадываются), что IDEA автоматически сохраняет файлы, когда ты переключаешься в другую программу. Или когда запускаешь тесты. Это здорово. Не нужно постоянно нажимать Ctrl+S.
Вы не поверите: я до сих пор не могу избавиться от привычки постоянно жать Ctrl+S, хотя пересел с Eclipse на IDEA уже три года назад! Вот какая вредная привычка.
Но ещё было бы полезно, если б IDEA сохраняла файлы и просто так, когда я иду за чаем. Поэтому ставлю галочку «Save files automatically»:
И благодаря этому могу смело поставить ещё одну галочку, чтобы IDEA не спрашивала меня «Are you sure you want to exit IDEA»?
Меня не надо об этом переспрашивать. Я не боюсь закрыть IDEA в любой момент, потому что всегда могу открыть её снова, и там будут все мои файлы в целости и сохранности.
Inspections
Автоматические проверки кода — в наше время обязательное умение для IDE. В IDEA их много, полезных и не очень, не буду тут все рассматривать. Но одну я ставлю обязательно, причём строго с приоритетом «Error»: это «Missing @ Override annotation».
Строго говоря, это не имеет отношения к чистому коду. Просто я однажды провёл несколько вечеров в поиске зловредной неповторяемой баги, которая случалась потому, что кто-то случайно написал в подклассе метод с таким же именем, как в суперклассе (а именно, метод setUp в тесте). С тех пор я ревностно ставлю проверку на отсутствующую аннотацию @ Override.
Частые коммиты
Одна из хороших практик правильного программирования — это частые небольшие коммиты. Каждый коммит должен быть атомарным и делать одно изменение, а не сразу кучу разных.
Когда я следую этим правилам и коммичу 3 файла из 8 (остальные 5 я собираюсь тут же послать следующим коммитом), IDEA предлагает перенести остальные 5 файлов в другой «changeset». Возможно, это когда-то могло показаться удачной идеей, но в большинстве случаев я всё-таки собираюсь вскоре закоммитить и остальные 5 файлов тоже. Поэтому отключаем эту галочку:
Далее, когда я сделал несколько маленьких коммитов и хочу это дело запушить (git push), я сталкиваюсь с проблемой, что в IDEA нет комбинации клавиш для Push, а искать эту команду в меню реально неудобно. Делаем свой шорткат Ctrl+Shift+K:
Это удобно запомнить: Ctrl+K — коммит, Ctrl+Shift+K — пуш.
Учите, учите и ещё раз учите шорткаты!
IDEA хороша тем, что все необходимые плагины в ней уже есть из коробки. Для большинства ежедневных потребностей не нужно что-то искать и устанавливать дополнительно.
Но один плагин я ставлю обязательно. Это Key Promoter plugin — надоедливый подсказчик, заставляющий меня учить шорткаты. Каждый раз, когда я выбираю какое-то действие мышкой, он тут же говорит мне: «А ты таки мог это сделать такой-то комбинацией клавиш!» Он такой надоедливый, что ты волей-неволей начинаешь использовать эти шорткаты, лишь бы не видеть его лишний раз.
Обратная связь
И наконец, последняя галочка. Я хочу, чтобы IDEA анализировала мою работу с ней и ежедневно посылала собранную информацию в JetBrains. Это мой вклад в развитие отличного продукта Intellij IDEA.
Дорогие ребята из JetBrains, если это вам поможет сделать IDEA ещё лучше — следите за мной, анализируйте меня, берите всё что потребуется!
Перевод статьи подготовлен специально для студентов курса «Android-разработчик. Продвинутый курс». И хотя в данном материале речь пойдет преимущественно о Java, материал будет полезен Android-разработчикам
Продолжая серию статей, в которых я освещаю основные фичи IntelliJ IDEA (ранее я писал об основных возможностях дополнения и рефакторинга кода), я хотел бы поговорить о навигации, которая является еще одной возможностью повышения производительности IDE, которая экономит вам много времени, при условии, конечно, что вы используете ее правильно.
Одна из основных вещей, которую вы как пользователь IntelliJ IDEA должны понимать, чтобы использовать ее во всю силу, — это то, что эта IDE была разработана для того, чтобы сосредоточиться на коде. Большая часть вашего времени проводится в редакторе кода, а навигация — это просто средство, которое помогает вам переходить из одного места в коде в другое, не теряя слишком много времени.
Сегодняшняя статья посвящена фичам, которые позволяют перемещаться между файлами проекта, блоками кода и элементами пользовательского интерфейса, такими как окна инструментов, вкладки редактора и т. д.
Последние файлы
Если вы на мгновение остановитесь и задумаетесь о своих шаблонах навигации, вы заметите, что большую часть времени вы работаете с конечным набором файлов. Это ясно объясняет, почему команда Recent files (Последние файлы) является такой широко используемой функцией среди пользователей IntelliJ IDEA. Как только вы освоитесь с ней, вы начнете использовать ее для большинства ваших навигационных операций. Чтобы вызвать эту команду, просто нажмите Ctrl + E (Cmd + E для OS X).
Обратите внимание, что последний файл, к которому был осуществлен доступ, выбран по умолчанию, поэтому вы можете перейти к нему всего в один клик. Чтобы сузить список отображаемых файлов, вы можете использовать так называемый Speed search (Быстрый поиск). Просто начните вводить часть имени файла, и IDE подсветит то, что вы ищете.
Всплывающее окно структуры
Другой шаблон, с которым вы сталкиваетесь каждый день, — это навигация по текущему открытому файлу. Каждый файл имеет свою структуру: класс Java состоит из его членов, таких как поля, методы и т. д.; Файлы XML и HTML состоят из дерева тегов. Чтобы быстро перейти к любому месту в этой структуре, просто нажмите Ctrl + F12 (Cmd + F12 для OS X) и выберите нужный элемент (опять же, вы можете сузить список с помощью быстрого поиска).
Иногда структура может зависеть от того, каким образом вы на нее смотрите. Например, структура класса Java может включать в себя структуру суперклассов или интерфейсов. По умолчанию IntelliJ IDEA скрывает члены суперклассов и интерфейсов. Однако, если вы нажмете этот же хоткей еще раз, вы их увидите.
При следующем использовании этой команды IDE запомнит ваши предпочтения.
Переход к панели навигации
Очень полезно принять тот факт, что большую часть вашего времени редактор (и сам код) — это единственное, что видно на вашем экране. Некоторые люди могут утверждать, что им также нужно видеть дерево проекта, понимать контекст, в котором они находятся, или иметь возможность быстро изменить его. Собственно, поэтому в IntelliJ IDEA так легко переключаться между деревом проекта и редактором. Однако дерево проекта, на самом деле, не самый лучший вариант. Опытные пользователи IntellIJ IDEA знают вариант гораздо лучше: панель навигации. Новые пользователи обычно думают, что это мелкая фича, но более опытные разработчики знают, как с ее помощью делать практически все, что вы захотите. Чтобы активировать панель навигации, вызовите команду Jump to navigation bar (Перейти к панели навигации) с помощью Alt + Home (Alt + для OS X). Используя эту команду, вы можете перемещаться по всей структуре проекта; создавать и изменять файлы, просматривать их содержимое и многое другое.
Стоит отметить, что переход к панели навигации можно использовать, даже если сама панель навигации скрыта.
Переход к классу
А как насчет такой базовой операции, как Go to a class (Переход к классу)? Каждый раз, нажимая Ctrl + N (Cmd + N для OS X) в IntelliJ IDEA, вы можете даже не подозревать, насколько эта команда мощная — она намного умнее, чем кажется. В дополнение к простым символам подстановки, верблюжьей нотации и префиксам пакетов, поддерживаемым в любой IDE, команда Go to a class в IntelliJ IDEA обеспечивает сопоставление имени в середине, постфиксный номер строки, быстрое документирование и всплывающие определения:
По умолчанию команда ищет лучшие совпадения в вашем проекте; если совпадений не найдено, она просматривает библиотеки проектов. Чтобы переключить область, используйте этот же хоткей.
Преимущество команд в IntelliJ IDEA заключается в том, что их чрезвычайно легко использовать без мыши: после показа всплывающего окна вы можете вводить и изменять запрос, перемещаться по результатам клавишами «Вверх» и «Вниз». И это все. Если вы когда-либо пробовали использовать соответствующую команду в других IDE, вы понимаете, о чем я.
Переход в файл или папку
Команда Go to a file (Переход в файл), назначенная на Ctrl + Shift + N (Cmd + Shift + N для OS X), сохраняет время, когда вам нужно открыть определенный файл в вашем проекте. В дополнение к стандартным функциям, таким как символы подстановки, верблюжья нотация и префикс папки, например, он позволяет найти папку.
Переход к символу
И, наконец, последняя, но не менее важная команда в семействе Go to… — это Go to a symbol (Переход к символу), назначенная на Ctrl + Shift + Alt + N (Cmd + Shift + Alt + N для OS X), которая, как следует из названия, позволяет вам перейти к любому символу без полнотекстового поиска. Поскольку среда IDE постоянно обновляет индекс всех символов в вашем проекте (и библиотеках), вы можете просто ввести выражение и найти соответствующий метод или поле за несколько секунд, даже если ваш проект очень большой.
Выбрать в
Теперь представьте, что вам нужно выбрать текущий выбранный файл в конкретном окне инструментов, например, в представлении Project или Changes, или даже в Explorer/Finder. Здесь вам пригодится команда Select in (Выбрать в …) с помощью Alt + F1:
Переключение на окно инструментов
Большинство окон инструментов в IntelliJ IDEA имеют удобные сочетания клавиш. При нажатии соответствующего хоткея окно инструментов становится видимым и получает фокус. После повторного нажатия этого же хоткея, когда фокус находится в окне инструментов, оно скрывается, и ваш фокус возвращается к редактору. Это очень удобно и позволяет полностью избавиться от мыши: когда вам нужно окно инструментов или вы хотите вернуться в редактор, просто нажмите хоткей.
Убедитесь, что вы помните по крайней мере эти хоткеи:
- Окно инструментов Project: Alt + 1 (Cmd + 1 для OS X)
- Окно инструментов Changes: Alt + 9 (Cmd + 9 для OS X)
- Окно инструментов Terminal: Alt + F12
Переключение на редактор
Одна из самых хитрых функций, о которых не все знают, — переключение фокуса на редактор (из любого другого места) нажатием клавиши Escape. Окно инструментов, из которого вы переключаетесь, в этом случае сохраняет свое состояние видимости. Переключение в редактор путем скрытия всех окон инструментов доступно с помощью другой комбинации клавиш: Ctrl + Alt + F12 (Cmd + Alt + F12 для OS X).
IntelliJ IDEA и аналогичные ей среды разработки — одни из первых инструментов, которые нужно освоить начинающему программисту. В этом материале рассмотрим установку и настройку ПО, а также порядок создания проекта в IntelliJ IDEA.
Что такое IntelliJ IDEA
Условия использования IntelliJ IDEA
- Community Edition
- Ultimate Edition
- JavaScript
- TypeScript
- SQL
- CSS, LESS, Sass, Stylus
- CoffeeScript
- ActionScript
- XSL, XPath
- Ruby, JRuby (через плагин)
- PHP (через плагин)
- Go (через плагин)
- Java
- Groovy
- Kotlin
- Scala (через плагин)
- Python, Jython (через плагин)
- Dart (через плагин)
- Erlang (через плагин)
- XML, JSON, YAML
- AsciiDoc, Markdown (через плагины)
- Spring (Spring MVC, Spring Boot, Spring Integration, Spring Security and others)
- Java EE (JSF, JAX-RS, CDI, JPA, etc)
- Grails
- GWT, Vaadin
- Play (через плагин)
- Thymeleaf, Freemarker, Velocity, Tapestry
- Struts, AspectJ, JBoss Seam, OSGI
- React
- AngularJS (через плагин)
- Node.js (через плагин)
- Apache Flex, Adobe AIR
- Rails, Ruby Motion (через плагин)
- Django, Flask, Pyramid (через плагин)
- Drupal, Wordpress, Laravel (через плагин)
- Android (включает функциональность Android Studio)
- Swing (incl. UI Designer)
- JavaFX
- Team Foundation Server
- Perforce
- Git, GitHub
- Subversion
- Mercurial
- CVS
- Tomcat
- TomEE
- Google App Engine and other clouds (через плагины)
- GlassFish
- JBoss, WildFly
- WebLogic
- WebSphere, Liberty
- Geronimo
- Resin
- Jetty
- Virgo
- Kubernetes (через плагин)
- Docker, Docker Compose
- NPM (через плагин)
- Webpack
- Gulp
- Grunt
- Maven
- Gradle
- SBT
- Ant
- Gant
- Ivy (через плагин)
- Database Tools
- Diagrams (UML, Dependencies, и т.д.)
- Dependency Structure Matrix
- Detecting Duplicates
- Settings synchronization via JetBrains Account
- REST Client
- Darcula (темная тема)
- Debugger
- Decompiler
- Bytecode Viewer
- Unit Tests Runner (JUnit, TestNG, Spock; Cucumber, ScalaTest, spec2, etc)
- Интеграция с баг-трекинговыми системами (YouTrack, JIRA, GitHub, TFS, Lighthouse, Pivotal Tracker, Redmine, Trac, и т.д)
- Поддержка 24/7
- Баг-трекинговая система и форумы
Преимущества InteliJ IDEA
Данная IDE помогает максимизировать эффективность разработчика. Забота об эргономике среды разработки прослеживается в каждом аспекте. Интерфейс среды спроектирован так, что большую часть времени разработчик видит только редактор кода: Кнопки, активирующие дополнительные инструменты, расположены на боковых и нижней панелях экрана. Каждый инструмент можно быстро отобразить или скрыть: В IntelliJ IDEA практически каждое действие можно выполнить через определенное сочетание клавиш. Разработчик может сам назначать новые и менять старые сочетания клавиш для частых действий. В интерфейсе IntelliJ IDEA в каждой древовидной структуре, списке или всплывающем окне, будь это дерево проекта или же окно настроек среды разработки, есть навигация и поиск. Достаточно сфокусироваться на нужном месте и начать вводить искомый текст: IntelliJ IDEA удобна при написании кода и его отладке. Дебаггер IDEA показывает значения переменных прямо в коде. И каждый раз, когда переменная изменяет свое значение, она подсвечивается дебаггером: В среде разработки есть несколько тем оформления. По умолчанию доступны две темы — светлая и темная. Начиная с версии 2019.1, темы оформления можно кастомизировать и загружать новые через плагин:
Инструменты для работы с кодом в IntelliJ IDEA
- Поиск класса по имени
- Поиск файла или директории по имени
- Поиск по проекту
- Поиск по модулю
- Поиск по директории
- Поиск по области, среди:
- файлов проекта
- тестовых файлов проекта
- открытых файлов
- недавно просмотренных файлов
- недавно измененных файлов
- и т. д.
Недостатки среды разработки
Все вышеперечисленное относится к плюсам IntelliJ IDEA. Однако, как и любой программный продукт, у нее есть и минусы. IntelliJ IDEA разрабатывается с 2001 года. У этого крупного программного продукта — большое количество исходного кода. Как следствие, при работе с IDEA можно наткнуться на баги. IntelliJ IDEA требовательна к ресурсам. По умолчанию она выделяет до 512 Мб на x86 и до 768 Мб на x64. Но порой, например, при крупном рефакторинге, даже этого может быть недостаточно. Стоит сказать, что эти значения могут быть увеличены. Однако при этом IDEA будет сжирать еще больше ресурсов системы. При работе с большими файлами, например, с классами в несколько тысяч строк кода IDEA может заметно подтормаживать. Компания JetBrains регулярно выпускает обновления к IntelliJ IDEA. Очень редко, при обновлении IDEA, может что-то поломаться.
Читайте также: