Вся мощь IntelliJ IDEA на примере одного языка (в картинках)
Классическая модель разработки любых приложений подразумевает наличие хорошей документации по пользовательскому интерфейсу и 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 сама автоматически:
- генерирует виртуальный файл (или несколько файлов) с заданными префиксами для каждой строковой константы
- создает в редакторе исходного файла для всех констант своего рода «окна» в этот виртуальный файл
- обеспечивает в этом виртуальном файле поддержку всех возможностей «внедряемого» языка, таких как подсветку ошибок, переход к объявлению, автодополнение, поиск использований и, что особенно важно, рефакторинг. То есть, при переименовании любого элемента на одном языке, он автоматически переименовывается и во всех строковых константах, ссылающихся на этот элемент в других языках. Таким образом вы автоматически защищены от «битых» ссылок.
Здесь в IDEA тоже был (и сохраняется) небольшой баг. Когда виртуальный файл большой, то если при переходе к использованию IDEA должна перейти на начало «окна внедрения», она на самом деле переходит на конец предыдущего «окна внедрения» (то есть например на предыдущее использование свойства в Java-файле). Существует конечно, простой обход этого бага — создавать по отдельному виртуальному файлу на каждый строковый литерал. Но такой подход тормозит когда использований больше 30, поэтому в этом случае все равно приходится использовать один большой виртуальный файл (с другой стороны, когда использований много, найти правильное, то есть следующее, использование не так уж и сложно). Мы просили исправить этот баг опять-таки в рамках «обмена услугами», и разработчики JetBrains его вроде как пофиксили, но, как позже выяснилось, как-то не так (это еще по коммиту было видно, но мы подумали, что просто не до конца его поняли). Впрочем, у нас к этому багу все уже давно привыкли, благо ситуация с использованием больше 30 элементов в одном файле встречается достаточно редко.
Заключение
В статье описаны только основные варианты использования. В ней также присутствуют возможности по поиску реализаций абстрактных свойств и классов, визуализации зависимостей между модулями и свойствами, автоматической генерации форм на основе xml/json и многое другое. И, конечно же, есть встроенная интеграция с основными системами контроля версий Git и Subversion, а также поддержка Maven и Ant.
Пойдя по пути разработки плагина к IDEA, мы небольшими усилиями получили очень мощную бесплатную интегрированную среду разработки, превосходящую по многим параметрам IDE конкурентов.
Русские Блоги
Подробная инструкция по настройке и использованию IntelliJ IDEA
предисловие
Что касается того, почему я написал это сообщение в блоге, моя цель — записать мою персонализированную конфигурацию. Конечно, если это может помочь другим в то же время, это было бы здорово.
При запуске IDEA свободно выбирайте, какой проект запустить
Снимите флажок «Открыть последний проект при запуске» в меню «Файл» -> «Настройки» -> «Внешний вид и поведение» -> «Настройки системы».
Отключить автоматическое обновление Intellij IDEA
Снимите флажок Автоматически проверять наличие обновлений в меню Файл-> Настройки-> Внешний вид и поведение-> Параметры системы-> Обновления.
Импортировать все пакеты автоматически
В Intellij IDEA можно импортировать только один пакет за раз, нет комбинации клавиш Ctrl + Shift + O, как в Eclipse, для быстрого импорта пакетов, но есть функция автоматического импорта пакетов в Intellij IDEA. Настройте в File-> Settings-> Editor-> General-> Auto Import, конкретная конфигурация выглядит следующим образом:
Код игнорирует регистр
Ввод новой строки () будет автоматически преобразован в новую строку ()
В File-> Settings-> Editor-> General-> Completion, отмените Math case: проверьте
Изменить размер шрифта по умолчанию
Шрифт по умолчанию слишком маленький, для моего маленького экрана ноутбука я его вообще не вижу.
Под File-> Settings-> Editor-> Font вы можете изменить значение Size для изменения размера шрифта. Есть еще один способ установить размер шрифта, нажав Ctrl + колесо мыши, в частности в меню Файл-> Настройки-> Редактор-> Общие, отметьте Изменить размер шрифта (Масштаб) с помощью Ctrl + Колесо мыши
Настройки кодировки файлов
Рекомендуемая конфигурация следующая:
Атрибут преобразования «Прозрачный native-to-ascii» в основном используется для преобразования ascii, в противном случае будет перекодирован китайский язык файла «Свойства». IntelliJ IDEA поддерживает настройки кодирования для каталогов и файлов в дополнение к кодированию всего проекта. Если вы хотите установить кодировку каталога, может быть опция всплывающего окна, которая требует кодирования Convert. Настоятельно рекомендуется сделать резервную копию файла перед преобразованием, в противном случае процесс преобразования может стать искаженным и не может быть восстановлен. Вы также можете щелкнуть область настройки кодировки в правом нижнем углу, чтобы изменить кодировку отдельных файлов. Если содержимое кода содержит китайский язык, появится выбор операции в демонстрационной версии. Перезагрузка означает перезагрузку с новой кодировкой, и новая кодировка не будет сохранена в файле. Когда вы открываете этот файл, что такое старая кодировка или она все еще? Преобразовать означает использовать новую кодировку для преобразования. Новая кодировка будет сохранена в файл, и снова откройте файл, какова новая кодировка. Конфигурация персонального кодирования показана ниже:
Шаблоны аннотаций классов и методов
1. Измените шаблон аннотации класса
Вставьте следующий код в File-> Settings-> Editor-> File and Code Templates-> Includes-> File Healder:
После завершения настройки рендеринг выглядит следующим образом:
Нет необходимости настраивать в соответствии с вышеуказанным способом, вы можете настроить класс, интерфейс, перечисление и т. Д. Отдельно. Под File-> Settings-> Editor-> File and Code Templates-> Includes-> Files вставьте следующий код над объявлениями класса, интерфейса и Enum:
Таким образом, при создании нового класса появится всплывающее окно, позволяющее вам ввести описание
Окончательный эффект показан ниже:
2. Измените шаблон аннотации метода
Под File-> Settings-> Editor-> Live Templates, нажмите на маленький знак + справа и выберите Create Template Group Template Group
Назовите эту группу в текстовом поле, здесь я установлю ее как Моя группа
Снова нажмите маленький знак + справа и выберите Живой шаблон.
Подробные параметры конфигурации
Нажмите Изменить переменные
Настроить по картинке
Выберите, чтобы нажать Enter, чтобы вызвать
После завершения описанной выше конфигурации просто введите ключ / ** + Enter в методе для создания комментария. Помните, что метод находится внутри метода, поскольку область действия methodParameters () находится только внутри метода, что также является проблемой для Intellij IDEA Немного
Настройки сочетания клавиш
Чтобы позволить пользователям, которые переключаются с Eclipse и других инструментов, использовать эту идею, она обеспечивает удобное преобразование сочетаний клавиш, но есть еще несколько конфликтов, которые будут установлены позже.
Под File-> Settings-> Keymap выберите Eclipse
Используйте Ctrl + W, чтобы закрыть панель вкладок в Eclipse, а не в IDEA, найдите закрытие в панели поиска, щелкните правой кнопкой мыши закрытие в результатах и выберите «Добавить сочетание клавиш»
Удерживая Ctrl + W на клавиатуре, нажмите ОК
Подскажите, что быстрая клавиша уже использовалась, чтобы удалить эту настройку, нажмите Удалить
Введите завершение в строке поиска, найдите Basic, щелкните правой кнопкой мыши и выберите Remove Ctrl + пробел и подтвердите
В чем писать код начинающему Android-разработчику: выбираем IDE
Редакция блога Нетологии рассказала, что такое IDE, какие преимущества у IntelliJ IDEA и Android Studio и как установить программы.
Обучение в онлайн-университете: курс «Android-разработчик с нуля»
Чтобы перевести написанный вами код в понятный компьютеру, нужно использовать компилятор. Чтобы упростить задачу, используйте IDE, где для запуска приложения достаточно нажать кнопку Play.
Что такое IDE
IDE — среда разработки, текстовый редактор, заточенный на написание на одном или нескольких языках программирования. Программа выполняет несколько задач — упрощает работу с кодом и подготавливает рабочее окружение.
Как IDE помогает писать код
Программа понимает структуру языка программирования и выполняет следующие задачи.
- Подсказывает возможные ошибки, например, если вы забыли закрыть скобку. Программа сразу напомнит об этом и не придется тратить время на запуск, проверку сообщений об ошибках и правку. Это можно сравнить с подчеркиванием ошибок в Word.
- Когда вы используете какую-либо функцию, показывает документацию для нее. Это работает, как справка в Excel, когда вы применяете какую-либо функцию.
- Помогает быстро переименовать переменную. Если переменная использована в нескольких местах, все можно править в один клик.
- По мере написания кода ищет в нем ошибки и указывает на них.
В реальной жизни разработчик пишет меньше половины кода — остальное генерирует или подсказывает IDE.
Как IDE запускает приложение
Благодаря IDE не надо устанавливать и настраивать компилятор на нужные параметры, подключаться отладчиком к определенному процессу. Эти задачи выполнит среда разработки. Сразу после установки в ней можно написать первое приложение Hello World и запустить его по одному клику.
Какие IDE используют Java-разработчики
IntelliJ IDEA. Одна из популярных сред разработки. Доступна в двух версиях — бесплатной Community edition для самостоятельных разработчиков и платной Ultimate edition для компаний. Подходит для мобильной разработки под Android и десктопной Java для запуска на компьютере.
Android Studio. Основана на IntelliJ IDEA, предлагает все нужные функции и заточена под проекты на Android. IDE рекомендует Google, ее используют начинающие разработчики и опытные Android-девелоперы как Джейк Уортон.
IDE Eclipse не стоит использовать. Среда разработки устарела, и в 2016 году в Google отказались от поддержки ее плагинов для Android-разработки.
Преимущества IntelliJ IDEA
Мультиязычная. Поддерживает разные языки программирования. Вы сможете писать код на Java, дальше освоить Kotlin и использовать его.
Интегрирована с Git и Github. Позволяет использовать систему контроля версий Git и отправлять проекты на Github в один клик.
Позволяет настроить нужное окружение. Чтобы запускать тесты в IDE, достаточно докачать Java Devkit.
Как установить и настроить IntelliJ IDEA
Предварительно скачайте Java Development Kit по ссылке. Выберите версию для любой операционной системы. Рекомендуем установить JDK 8 если вы будете писать в Android Studio Android-приложения. Остальные могут использовать версию JDK 11.
Следуйте подсказкам установщика.
Скачайте Community Edition-версию программы по ссылке. Можно выбрать версию для любой операционной системы — Windows, MacOS или Linux.
Установите, следуйте подсказкам инсталлятора. При первом запуске программа предложит импортировать настройки. Так как установленных ранее версий не было, выберите Don’t import settings.
Программа предложит выбрать цветовую схему и дополнительные возможности. Выберите настройки по умолчанию и пропустите эти шаги.
Запустите программу. Когда откроется окно проекта, выберите Create New Project.
В верхнем левом углу выберите Java, нажмите Next.
В качестве шаблона выберите Java Hello World.
Выберите папку, в которую нужно сохранить проект.
В правом верхнем углу найдите зеленую кнопку Play и нажмите ее — вы запустили первую скомпилированную программу.
Преимущества Android Studio
Рекомендована Google. IDE поддерживают и развивают в корпорации, среда разработки оптимальна для создания приложений для Android.
Большое сообщество разработчиков. Почти все Android-девелоперы используют Android Studio. Если у вас возникнут проблемы в работе, сможете обратиться к коллегам на форумах или тематических сайтах — вам помогут.
Как установить Android Studio
Скачайте Java SDK, если их еще нет, и установите — программа нужна для дальнейшей работы на Java. После установки желательно перезагрузить компьютер.
Скачайте Android Studio, откройте exe-файл и запустите его. Кликните Download, чтобы операционная система вашего ПК определилась автоматически, или выберите нужную вручную в Download Options. Нажимайте Next, пока установщик не спросит путь. Первый укажите для Android Studio, второй — для Android SDK. Желательно ставить на диск D, так как программа занимает от 2 Гб.
Нажимайте Next, пока не завершится установка. Откройте установленную Android Studio. Откажитесь от импорта настроек предыдущей версии — старых настроек у вас нет.
Google предложит отправлять уведомления о работе приложения. На них можно согласиться или отказаться.
Выберите Standart в следующем окне.
Установщик сообщит, что нужно докачать несколько компонентов — нажмите Next и дождитесь окончания загрузки распаковки.
Нажмите Finish — откроется Welcome экран. Нажмите Start a new Android Studio project.
Мнение автора и редакции может не совпадать. Хотите написать колонку для «Нетологии»? Читайте наши условия публикации. Чтобы быть в курсе всех новостей и читать новые статьи, присоединяйтесь к Телеграм-каналу Нетологии.
Основы работы с IntelliJ IDEA. Интерфейс программы
Для написания Java-программы по большому счету достаточно обыкновенного текстового редактора, но, конечно же, такой вариант просто несопоставим с использованием профессиональных сред разработки приложений, так называемых IDE (Integrated Development Environment).
IntelliJ IDEA – это интегрированная среда разработки программного обеспечения на Java от компании JetBrains. Кстати, не только на Java. Среда с успехом используется и для других языков программирования, например, Scala. Первая версия программы появилась в 2001 г. и с тех пор программа неуклонно повышает свой рейтинг популярности. IntelliJ IDEA выпускается в двух редакциях: Community Edition и Ultimate Edition. Первая версия является полностью бесплатной. Вторая версия распространяется под различными лицензиями и, как декларируется, может использоваться бесплатно для разработки проектов с открытым программным кодом. Впрочем, и даже без этого по окончанию использования мною версии Ultimate Edition, я получил просто уведомление, что могу работать с ней непрерывно на протяжении только получаса.
Версии отличаются также поддерживаемыми технологиями.
- Ultimate Edition:
- полнофункциональная среда разработки под JVM и разработке на различных языках: Java, PHP, JavaScript, HTML, CSS, SQL, Ruby, Python;
- поддержка технологий Java EE, Spring/Hibernate и других;
- внедрение и отладка с большинством серверов приложений.
- Community Edition:
- полнофункциональная среда разработки для Java SE, Groovy и Scala;
- мощная среда для разработки под Google Android.
Ознакомиться с отличиями между версиями можно на сайте компании JetBrains по ссылке http://www.jetbrains.com/idea/features/editions_comparison_matrix.html.
Программа содержит полный набор необходимых для создания полноценных приложений компонент: редактор, среда компиляции и выполнения, а также отладчик.
Естественно, IntelliJ IDEA – не единственная среда создания приложений для Java, достаточно припомнить популярную Eclipse или NetBeans, так что разработчику есть из чего выбирать, а его предпочтения зачастую обусловлены субъективными факторами, например, он – начиная программировать на Java – прочитал статью про конкретную среду, что и обусловило его последующий выбор. Вполне возможно, что и данный цикл статей послужит для кого-то началом работы с IntelliJ IDEA, тем более что система, на мой взгляд, более чем удобная.
Кстати, в интернете можно найти много информации по миграции с того же Eclipse на IntelliJ IDEA (смотри, например, информацию на сайте компании JetBrains по ссылке https://www.jetbrains.com/help/idea/2016.2/eclipse.html).
Я предпочитаю работать с новой версией IntelliJ IDEA, поэтому периодически ее обновляю. Предлагаемые же читателю статьи писались на протяжении более года, поэтому я не исключаю, что некоторые screenshots относятся к каким-то старым версиям и изменились в новых версиях, за что заранее приношу извинения читателям.
Инсталляция системы
Скопировать инсталляционный пакет можно с сайта разработчика компании JetBrains по ссылке http://www.jetbrains.com/idea/. Установка IntelliJ IDEA проблем не вызывает. Отмечу только, что если в дальнейшем вы предполагаете работу с программным кодом именно в среде программы, то при инсталляции установите ассоциацию программы (Create associations) с файлами Java.
Справочная система
Для IntelliJ IDEA имеется документация достаточно большого объема на английском языке. Поэтому при щелчке пункта Help в главном меню открывается не встроенная, а on-line справка на сайте компании JetBrains.
Имеется также возможность получить документацию по конкретному элементу кода, для чего нужно установить на нем курсор и нажать комбинацию <Ctrl>+<Q>.
Более того, вообще можно закрепить окно с документацией на боковой панели (по умолчанию – на правой), сделав его инструментальным, щелкнув кнопку прикрепления на заголовке окна документации. Правда, на мой взгляд, это мало что дает, поскольку при открытии этого окна оно будет отображать только последнюю выведенную документацию.
Интерфейс программы
Как было отмечено ранее, продукт пользуется заслуженной популярностью разработчиков, хотя и есть «маленькое но»: отсутствие русской локализации, хотя для разработчиков это отнюдь не является препятствием для работы.
Стартовое окно
После установки при первоначальной загрузке IntelliJ IDEA появляется стартовое окно «Welcome to IntelliJ IDEA», позволяющее загрузить либо открыть проект, импортировать проект, выполнить его загрузку из репозитория нескольких систем контроля версий («Check out from Version Control»). При наличии в проекте файлов настройки сборки для Maven или Gradle, IntelliJ IDEA предложит вам использовать их для конфигурации.
После работы с определенным проектом, он запоминается, и при последующем запуске программы происходит загрузка последнего открытого проекта. Впрочем, это происходит при настройках программы по умолчанию, когда в группе Appearance & Behavior (Внешний вид и поведение), System Setting (Настройки программы) установлен флажок для поля-метки “Reopen last project on startup” (Открывать последний проект при загрузке).
Основное окно
Основное окно программы в общем виде состоит из трех областей, называемых также инструментальными окнами и окна редактора. Инструментальные окна располагаются по периметру окна редактора, то есть слева, справа и внизу от него на полях главного окна, которые в дальнейшем будем называть боковыми панелями (sidebar в терминологии программы). Поскольку инструментальные окна отображают разноплановую информацию, то каждая боковая панель содержит ряд вкладок, которые открываются при выполнении определенной команды. Переход к нужной вкладке (инструментальному окну) осуществляется щелчком на ее названии, которые располагаются на боковых панелях главного окна. Названию некоторых вкладок инструментальных окон предваряет цифра. Используя клавишу <Alt> совместно с этой цифрой, можно быстро перейти к этой вкладке, попутно открыв ее, если она находится в свернутом положении, либо, наоборот, свернуть ее. Кроме того, любое инструментальное окно можно отобразить в основном окне командой View Tool Windows либо воспользовавшись ее комбинацией клавиш быстрого вызова.
Перед кратким описанием инструментальных окон оговорюсь, что рассматриваемая структура расположения предлагается такой, какой она является после установки программы по умолчанию. Именно такое расположение я и буду рассматривать далее. Однако это вовсе не означает, что инструментальные окна нельзя расположить в других местах главного окна, о чем речь пойдет ниже.
Цветовую палитру IntelliJ IDEA можно настраивать, правда, таких палитр немного. Выбор палитры осуществляется в настройках, где следует раскрыть последовательно пункты Appearance & Behavior (Внешний вид и поведение), Appearance и выбрать тему из раскрывающегося списка «Theme».
Окно редактора
Окно редактора отображается постоянно, занимая большую часть основного окна. Оно может содержать несколько вкладок, отображающих программный код класса, содержимое pom-файла и другие файлы проекта. О содержимом вкладки сигнализирует как расширение файла в названии вкладки, так и пиктограмма перед названием, например, для класса: . Переход к нужному файлу осуществляется щелчком на его имени на вкладке окна либо выбором в инструментальном окне проекта.
Программа содержит внушительный инструментарий управления вкладками окна. Так, расположение вкладок можно произвольно изменять, располагая их, например, горизонтально, перебрасывая файлы из одной группы вкладок в другую, что достигается при помощи группы команд WindowsEditor Tabs либо из контекстного меню, вызываемого на вкладке окна редактирования. При необходимости конкретную вкладку можно закрепить, что бывает полезным при большом количестве вкладок, когда все они не помещаются в окне редактирования, для чего используем команду Pin Tab, о чем речь пойдет ниже.
С правого края окна могут находятся горизонтальные линии, отмечающие проблемные блоки кода, содержащие ошибки и предупреждения. Подробнее об этом также позже.
По левому краю окна редактирования расположены метки блоков кода, при помощи которых можно быстро свернуть блок за ненадобностью либо вновь его развернуть. С этой же стороны окна располагаются точки останова (при их наличии), советы по модификации кода и некоторая другая информация.
Для отображения нумерации строк программного кода следует вызвать контекстное меню на вертикальной полосе в левой части окна редактирования и выбрать “Show Lines Numbers” (Отображать нумерацию строк). Однако при таком действии отображение строк осуществляется только в текущем сеансе. Для постоянного же отображения нумерации строк программного кода следует в настройках раскрыть последовательно пункты Editor (Редактор), General (Общие настройки), Appearance (Внешний вид) и установить флажок для поля-метки «Show line numbers» (Отображать номера строк).
Сам программный код (подсветка текста, шрифты) оформляются в соответствии с настройками программы, о чем речь пойдет позже.
Инструментальные окна
Инструментальное окно проекта
На левой боковой панели отображается инструментальное окно проекта. Оно содержит вкладку иерархической структуры проекта (Project) и вкладку структуры (списка метода) класса (Structure).
Выбор во вкладке структуры проекта приводит к отображению его содержимого в окне редактора. Поскольку код практически любого класса содержит множество методов, то вкладка «Structure» как раз и отображает их список. Он может быть упорядочен как по алфавиту ( Sort by Alphabetically), так и в порядке их расположения в классе (
Sort by Visibility). Щелчок на имени класса инициирует переход на начало модуля в классе в окне редактора.
Информация вкладки «Structure» вообще довольно информативна. Рядом с именем модуля выводятся также ряд его свойств, например, модификатор класса, а ее панель инструментов позволяет быстро изменить характер отображаемой информации, например, дополняя ее содержимое не-public переменными, упорядочивая по названию либо в порядке нахождения в коде и т.п.
При наличии в проекте нескольких классов целесообразно в окне проекта раскрыть меню кнопки настройки и установить флажки возле пунктов «Autoscroll to Source» и «Autoscroll from Source».
Такой вариант полезен, если в окне редактора открыто две вкладки и более (а это, конечно, практически всегда имеет место). В этом случае переход в окне проекта с одного объекта на другой приводит к отображению в окне редактора кода выбранного объекта. И, наоборот, при переходе с одной вкладки на другую в окне редактирования курсор в окне проекта переходит на имя класса, код которого отображается во вкладке окна редактора.
Вкладки в данном окне могут добавляться после установки некоторых расширений (plug-ins). Например, после установки расширения «Database Navigator» в окно проекта добавляется вкладка «DB Browser».
Инструментальное окно «Избранное»
В нижней части левой боковой панели основного окна можно вывести инструментальное окно «Favorites» (Избранное), содержащее, например, список точек останова и закладок, обеспечивая тем самым к ним быстрый доступ.
Инструментальное окно с инструментами сборки проектов
Данное окно располагается на правой боковой панели. Оно изначально содержит две вкладки для двух наиболее распространенных инструментов сборки проектов Java – Maven и Ant.
Инструментальное окно вывода
Окно располагается на нижней боковой панели. В нем в зависимости от характера информации отображаются, например, сообщения компиляции («Messages»), консольный ввод/вывод («Terminal»), контроль изменений проекта («Version Control»), результаты работы отладчика («Debug») и некоторые другие.
Управление инструментальными окнами
IntelliJ IDEA предлагает мощные средства управления инструментальными окнами, позволяющие расположить их в основном окне практически в любом месте.
Любое открытое инструментальное окно в заголовке содержит две кнопки: настройки и
«Hide» (Скрыть) (такой вид она имеет на левой панели).
Любое инструментальное окно можно свернуть (спрятать), щелкнув кнопку «Hide». В этом случае в основном окне программы отображается только боковая панель, содержащая наименования вкладок, что, соответственно, увеличивает площадь рабочего окна редактора. В дальнейшем свернутое окно можно просто и быстро отобразить, щелкнув на названии инструментального окна на боковой панели.
Кнопка настройки содержит меню, в котором содержатся команды управления окном.
Окно может содержать собственную панель инструментов. Для ее отображения или, наоборот, удаления, следует раскрыть меню кнопки настройки и установить/снять флажок возле пункта меню Show Toolbar (Отображать панель).
Инструментальные окна могут отображаться как в фиксированном режиме, в определенных местах основного окна, так и в плавающем режиме, то есть в произвольном месте основного окна. Для переключения между режимами следует раскрыть меню кнопки настройки и установить/снять флажок возле пункта меню Floating Mode (Плавающий режим).
Если окно отображается в фиксированном режиме, то возможны два его состояния, устанавливаемые в пункте меню Docked Mode (Режим способа стыковки). При наличии флажка возле этого пункта окно находится в состоянии смешения, сдвигая окно редактора. Если же снять флажок, то окно переходит в состояние перекрытия, при котором окно перекрывает окно редактора.
И, наконец, если окно отображается в фиксированном режиме в состоянии смешения, то становится доступным режим (пункт меню) Pinned Mode (Закрепленный режим). При наличии флажка возле этого пункта окно постоянно отображается в основном окне. Если же снять флажок, то окно будет автоматически убираться с экрана при потере фокуса.
Выше было отмечено, что инструментальные окна можно расположить на разных боковых панелях главного окна. Но и местонахождение конкретного окна можно также изменить, включив его в состав другой боковой панели. Для этого следует вызвать контекстное меню на названии инструментального окна на боковой панели, выбрать из него пункт Move (Переместить), а затем направление перемещения. На приведенном ниже screenshot видим, например, что инструментальное окно с правой боковой панели можно переместить на нижнюю (Top), левую (Left) и верхнюю (Bottom) боковую панель.
Инструментальное окно может быть и вовсе удалено, для чего также следует вызвать контекстное меню на названии инструментального окна на боковой панели и выбрать из него пункт Remove from Sidebar (Удалить с боковой панели).
В главном меню основного окна имеется также пункт меню Windows, содержащий команды для управления ее окнами.
Панели
На мой взгляд, целесообразно оставить на экране все основные панели программы (при отсутствии какой-то из них выполните команду Viewназвание панели):
- Toolbar (Главная панель инструментов).
- StatusBar (Панель статуса), которую можно разделить на три части.
- Левая часть панели содержит кнопку быстрого доступа к инструментальным окнам
.
- Центральная (и большая) часть панели предназначена для вывода различных сообщений.
- Правая часть содержит информацию о месте нахождения курсора в программном коде (номера строки и колонки), кодировку файла, формат символов (CRLF для Windows),
атрибут файла «Только чтение» (Read Only), иконку «Гектор» (Hektor)
, щелчок на которой открывает окно для переключения уровня отображения синтаксических ошибок (о котором речь пойдет позже). Здесь также может содержаться дополнительная информация, например, при работе с системами контроля версий. При этом из панели статуса можно не только получать информацию, но еще и выполнять некоторые действия. Например, если щелкнуть на поле о месте нахождения курсора, то откроется окошко для быстрого перехода на нужную строку / позицию, а инструмент
позволяет установить (либо снять) для файла атрибут «Только чтение».
- Левая часть панели содержит кнопку быстрого доступа к инструментальным окнам
- Navigation Bar (панель навигации).
Отключение / включение панелей производится также в меню команды View.
Выше я писал, что целесообразно оставить на экране все основные панели программы. Однако, при работе в окне редактора с программным кодом одного класса многим, возможно, как раз удобным покажется работа со всеми отключенными панелями, когда ничто не отвлекает от работы.
Настройки
Обращение к настройкам программы осуществляется командой FileSetting или щелчком кнопки
на главной панели инструментов.
Все настройки в окне настроек сведены по функциональному назначению в несколько групп: Appearance & Behavior (Внешний вид и поведение), Keymap («Горячие» клавиши), Editor (Редактор) и др.
Количество настроек программы очень велико, и, по мере работы с нею, а, следовательно, накопления опыта, вы сами будете изменять необходимые опции. Учитывая это, я не буду рассматривать их детально, поскольку это займет очень много времени. При этом замечу, что некоторые настройки уже упоминались выше, а о некоторых других будет рассказано позже.
Пока же ограничусь буквально несколькими общими настройками.
Важным моментом при написании программы является ее документирование, в том числе комментирование фрагментов кода (об этом позже). Естественно, русскоязычные разработчики будут писать комментарии на русском (белорусском, украинском) языках, что потребует в программе соответствующей кодировки. Оптимальным вариантом, на мой взгляд, будет использование UTF-8, которая является универсальной и имеет ряд преимуществ перед Windows 1251. Например, большинство современных веб-платформ по умолчанию работают именно на ней, а еще ее удобно использовать для создания мультиязычных проектов. Для установки этой кодировки следует последовательно выбрать пункты Editor, File Encodings (Редактор, Кодировка) и в списке «Project Encoding» (Кодировка файлов проекта) выбрать «UTF-8». Впрочем, некоторые разработчики говорят, что беспроблемно также работает значение «<System Default>».
Ну и, наконец, сообщения о появлении новой версии, которые будут у вас регулярно появляться, пока вы не откажетесь автоматически проверять обновления. В принципе установка новых версий вещь полезная и нужная, но если вы желаете производить обновление не по указанию программы, а самостоятельно, то это делается так. Раскройте последовательно пункты Appearance & Behavior, System Setting, щелкните пункт Updates (Обновления) и снимите флажок возле пункта “Automatically check updates for” (Автоматически проверять обновления). Впрочем, и при включенном режиме автоматических обновлений можно просто игнорировать установку новой версии.
У меня сложилось очень высокое мнение о IntelliJ IDEA, однако возможности ее совершенствования практически безграничны. И немалый вклад в этот процесс могут внести и сами пользователи, что, например, может осуществляться на основе собираемой о работе программы статистики. Для этого нужно позволить программе осуществлять такой сбор. С этой целью в настройках следует последовательно раскрыть пункты Appearance & Behavior, System Setting, выбрать пункт Usage Statistics (Статистика использования), установить флажок для поля-метки “Allow sending usage statistics to JetBrains s.r.o.” (Позволить собирать пользовательскую статистику JetBrains), а затем установить флажок возле периодичности отправки такой информации (день, неделя, месяц).
Поскольку настроек очень много, то разработчики предусмотрели их поиск по контексту. Набрав, например, в поле поиска окна настроек текст «save», получим в нем вот такой список:
И последнее. В IntelliJ IDEA предусмотрена возможность сохранения настроек (File Export Setting) и их восстановления (FileImport Setting).
Расширение системы
Под IntelliJ IDEA разработано множество plug-ins (расширений), позволяющих заметно расширять ее возможности и функциональность. Доступ к ним осуществляется в настройках системы в пункте Plugins. Из списка «Show» (Показ) осуществляется фильтрация списка расширений. Для добавления нового расширения следует выполнить такие действия:
- В списке «Show» (Отображение) выбрать пункт «Custom» (Пользовательский).
- Щелкнуть ссылку «Browse» (Click Browse to search for non-bundied pugins, Щелкните на сообщении для отображения неустановленных plug-in), что приведет к появлению окна «Browse Repositories» со списком plug-ins с репозитория расширений JetBrains.
- Выбрать из списка нужное расширение и щелкнуть кнопку «Installplugin» (Установить расширение).
- Подтвердить установку в окне подтверждения.
- По завершению процесса установки в том же окне «Browse Repositories» щелкнуть кнопку «RestartIntelliJIDEA» (Перезапуск IntelliJ IDEA) для перезагрузки программы.
Удаление расширений осуществляется также очень просто. Опять же в настройках в списке «Show» выбирается пункт «Custom», после чего в окне настроек отображаются только установленные расширения.
Щелчок кнопки «Uninstall» инициирует процесс удаления.