Как работать в jetbrains idea

Обновлено: 02.07.2024

Содержание статьи

Основным инструментом, который мы будем использовать для создания проектов на Kotlin, является IntelliJ IDEA от JetBrains. JetBrains также является компанией, стоящей у истоков самого языка, поэтому разработка на Kotlin тесно интегрирована в IntelliJ IDEA.

IntelliJ IDEA является Интегрированной средой разработки, или IDE. Она похожа на другие IDE вроде Visual Studio или Xcode. IntelliJ IDEA предоставляет основу для многих других IDE от JetBrains, включая Android Studio для разработки приложений на Android, PyCharm для программирования на Python и CLion для программирования на C и C++.

IDE используется для написания кода в редакторе, компиляции кода для запуска на компьютере, просмотра результатов программы, исправления ошибок кода и многого другого! В этом уроке мы познакомимся с возможностями IntelliJ IDEA, и это станет важной подготовкой к дальнейшему изучению языка Kotlin.

Установка и настройка IntelliJ IDEA

IntelliJ IDEA можно скачать с сайта JetBrains. В наличии есть версии Community и Ultimate. Для работы с примерами из уроков подойдет версия Community, которая является бесплатной для скачивания.

Перед запуском IntelliJ IDEA требуется также установить Java Development Kit, или JDK, который нужен для запуска Kotlin кода на компьютере.

Java и JDK

Kotlin позволяет программировать на нескольких различных платформах. Двумя наиболее популярными являются Java Virtual Machine, или JVM и Android.

По большому счету, изначально Kotlin задумывался как современная замена языку Java. Java был создан в девяностых, став ранней попыткой кроссплатформенного прикладного языка программирования. Подход “Write Once, Run Everywhere” звучал многообещающе.

Вместо компиляции в нативный машинный код на каждой платформе, программы на Java компилируются в формат, который называется байт-кодом. Байт-код выполняется внутри приложения на Java Virtual Machine. JVM можно рассматривать как слой над вашей реальной машиной. Запустив байт-код на виртуальной машине, можно совместно использовать Java-код и приложения на многих типах компьютерных систем.

Одной из целей языка Kotlin является 100% совместимость с языком Java. Это включает конвертацию Kotlin-кода в Java-совместимый код с помощью компилятора Kotlin, чтобы Kotlin-код мог запускаться на JVM.

На заметку: Будьте внимательны, скачайте и установите JDK, а не только JRE, так как JRE позволяет запускать только Java-приложения и не включает инструменты для создания новых.

Запуск IntelliJ IDEA

После установки IntelliJ IDEA и JDK выполните обычный процесс запуска приложения IntelliJ IDEA на вашей платформе.

Если вы ранее устанавливали предыдущие версии IntelliJ IDEA на тот же компьютер, установщик, скорее всего, предложит импортировать настройки из предыдущей версии. В противном случае вам будет предложено выбрать цветовую тему и плагины для установки в IDE. Можете просто выбрать настройки по умолчанию и продолжить.

После этих действий вы увидите окно Welcome to IntelliJ IDEA.

настройка kotlin

Из приветственного окна можно создать новый проект, импортировать или открыть существующие проекты, извлечь код из системы контроля версий вроде Git, запустить инструменты настройки или получить справку по IDE.

Создание простого проекта на Kotlin

В приветственном окне выберите пункт Create New Project. Вы увидите первый экран конфигурации.

Выберите Kotlin из списка опций слева, Kotlin JVM в качестве типа проекта и нажмите Next.

Вы должны увидеть следующее:

проект на kotlin

проект на kotlin

Введите hellokotlin для названия проекта, выберите место для проекта или просто оставьте значения по умолчанию. Ничего больше не указывайте и нажмите Finish.

IntelliJ IDEA создает и конфигурирует ваш проект.

По завершении вы попадете в окно Tip of the Day, или Совет дня, в котором каждый раз при открытии приложения показываются полезные советы по IntelliJ IDEA.

Вы должны увидеть следующее:

проект на kotlin

Закройте окно подсказки и проверьте панель Project слева от главного окна IntelliJ IDEA. На панели Project можно управлять всеми файлами, связанными с проектом, например файлами исходного кода Kotlin, у которых расширение .kt.

Кликните на стрелку рядом с hellokotlin, чтобы открыть его содержимое, и вы увидите папку src для проекта. Щелкните правой кнопкой мыши на папку src и выберите New ▸ Kotlin File/Class.

проект на kotlin

Должно открыться новое диалоговое окно New Kotlin File/Class. Введите hello и кликните OK.

проект на kotlin

Затем файл hello.kt откроется редакторе IntelliJ IDEA.

Базовый макет окна IntelliJ IDEA содержит панель Project слева, панель Editor посередине и Toolbar в верхней правой части, который можно использовать для запуска кода.

проект на kotlin

По ходу настройки проекта мы разобрали главные части окна IntelliJ IDEA. Пришло время для запуска Kotlin-кода!

Пример программы на Kotlin!

В данном уроке мы просто напишем в редакторе код на Kotlin и запустим его, для чего необязательно разбирать все его части. Каждый элемент кода будет подробнее разобран в дальнейшем. Если у вас есть опыт программирования в Java, Swift или Python, вы быстро вникните в ход дела.

Классическая модель разработки любых приложений подразумевает наличие хорошей документации по пользовательскому интерфейсу и 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.

Приведу несколько простых примеров для того, чтобы показать, как это работает на практике.

Поддержка синтаксиса

Плагин умеет подставлять допустимые ключевые слова, возможные свойства, автоматически обнаруживать различные ошибки:

Навигация

Возьмем логику из примера Управление материальными потоками. Предположим, нам нужно посмотреть, где объявляется свойство Цена. Для этого нужно под пользователем с правами администратора навести указатель мыши на заголовок нужной нам колонки:

image

В появившемся окне сразу видно, в каком модуле это свойство создано (Shipment), какой номер строки в нем (37), таблица в которой хранится (_auto_Shipment_ShipmentDetail), и ряд другой информации.

Чтобы перейти непосредственно к объявлению свойства, нужно начать поиск файла и в появившемся диалоге ввести Shipment:

image

image

Затем при помощи Navigate — Line/Column переходим к 37й строке, где видим объявление свойства:

image

Нажав CTRL+ALT+F7, стоя курсором на нужном свойстве, можно быстро найти все его использования по всем проектам:

image

В данном случае, первое использование цены идет в расчете суммы по строке. Два последних — это добавление на соответствующие формы.

При необходимости можно включить поиск только по записи в данное свойство, если убрать соответствующую опцию:

image

Тогда в списке останется только запись в это свойство. Чтобы узнать, какое конкретно значение в него записывается нужно встать курсором на 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, уже знакомых с основами и на тех, кто хотел бы изучить больше.

Если вы новичок в IntelliJ IDEA, рекомендую вам прочитать руководство Discover IntelliJ IDEA перед тем, как читать данную статью.

Информация о типах

Если вы хотите видеть больше информации о выражении под курсором (откуда оно вызывается или его тип), вам поможет Quick Documentation. Нажмите Ctrl+Q (Ctrl+J для OS X), чтобы активировать его и вы увидите всплывающее окно с данными. Если вам не нужна полная информация, используйте Type Info: он показывает только тип выбранного выражения, но не занимает столько места на экране.

Автодополнение, чувствительность к регистру

По умолчанию в IntelliJ IDEA автодополнение чувствительно к регистру только первого символа. Это можно изменить в настройках: Settings → Editor → General → Code Completion, так что вы можете сделать IDE регистрозависимым для всех символов. Или же задать настройки так, как вам хочется.

Всплывающее окно автодополнения

Вы также можете отключить функцию всплывающего окна. Это имеет смысл, если вы хотите, чтобы всплывающее окно появлялось только тогда, когда вы его вызовете.

Отключение использования подсветки для элементов под курсором

По мере того, как вы будете осваивать IntelliJ IDEA, вам захочется изменять настройки, выбранные по умолчанию. Я не могу пропустить функцию подсветки элементов: Settings → Editor → General. Если вы знаете сочетание клавиш Ctrl+Shift+F7 (Cmd+Shift+F7 для OS X) и вам не нравится появляющаяся и исчезающая подсветка в редакторе каждый раз, когда вы передвигаете курсор, вам не нужна эта функция.

CamelHumps

По умолчанию, когда вы выделяете что-то в редакторе, IntelliJ IDEA не чувствителен к регистру. Если вы предпочитаете написание согласно верблюжему регистру, т.е. вместо выделения целого слова, выделять его часть, вы можете включить его в настройках: Settings → Editor → General → Smart Keys.

Дополнение Hippie

IntelliJ IDEA обеспечивает дополнение Basic через Ctrl+Space, дополнение Smart — через Ctrl+Shift+Space, дополнение Statement — через Ctrl+Shift+Enter (Cmd+Shift+Enter для OS X). Все эти особенности основаны на понимании строения кода. Однако, иногда вам нужна простая, но гибкая логика, которая предложит слова, использованные ранее в текущем файле или даже проекте, независимо от их контекста. Здесь придёт на помощь дополнение Hippie, вызов через Alt+/.

Отмена

С IntelliJ IDEA вам не нужно беспокоиться о последствиях рефакторинга кода, потому что вы всегда можете отменить всё, выбрав Отмену из окна инструментов через Ctrl+Z (Cmd+Z для OS X).

Выделение фрагментов строки

IntelliJ IDEA способен реорганизовывать не только исполняемый код, но и строковые литералы. Выделите один фрагмент строки и выберите параметр Extract variable/constant/field/, чтобы выделить его, как постоянный и заменить его употребление во всем коде.

Изменение типов

Когда вы рефакторите код, вы обычно переименовываете символы, или выделяете и перемещаете выражение в коде. Однако, для реорганизации есть кое-что ещё. Например, изменение типов (доступен через Ctrl+Shift+F6 / Cmd+Shift+F6 для OS X) даёт вам возможность менять тип, обновлять зависимый код и решать возможные проблемы.

Инвертирование булевского значения

Если IntelliJ IDEA может анализировать и изменять тип выражения, почему не сделать то же самое с семантикой? Чтобы инвертировать все использования булевского выражения, используйте Invert Boolean.

Зависимость структуры матрицы

IntelliJ IDEA позволяет вам анализировать насколько сильно компоненты кода зависят друг от друга. Вам нужно обращать на это внимание, потому что много зависимостей могут стать проблемой. Действие Dependency structure matrix (доступное через Analyze menu) поможет вам визуализировать и найти зависимости между модулями и классами.

Несмотря на сложность внешнего вида, этот инструмент очень прост в использовании. Просто выберите класс и посмотрите, где он используется.

Структурный поиск и замена

Структурированный поиск и замена имеет много возможностей (после того, как вы научитесь правильно его использовать), и может быть использован для статического анализа кода и автоматизации рефакторинга. В двух словах, это позволяет вам осуществлять поиск конкретных шаблонов в коде и заменять их параметризованными шаблонами. Для этого он оснащен своим языком для определения шаблонов кода, который описан более детально в этой статье.

Чтобы воспользоваться этой функцией, используйте Edit → Find menu. Если вы хотите создать свои шаблоны или паттерны, воспользуйтесь Settings → Editor → Inspections, а также включите General → Structural Search Inspection.

Отключение заглавия и подсветки дерева тегов

Если вы много работаете с HTML и XML и не хотели бы попусту отвлекаться, вы можете отключить заглавие и подсветку дерева тегов в Editor → General → Appearance.

Отключение ненужной информации

Крайний левый столбец редактора, обычно показывает полезную информацию, связанную с кодом, который вы редактируете. Если вам иногда кажется, что там слишком много информации, вы можете настроить то, что вы хотите видеть через Settings → Editor → General → Gutter.

Отключение надоедливой лампочки

Еще одна вещь, которая может надоедать — это лампочка напоминания, которая появляется в редакторе каждый раз, когда есть доступная подсказка. Здесь отключение несколько сложнее: вам нужно отредактировать < IntelliJ IDEA preferences folder >/options/editor.xml , и добавить следующее: < option name=”SHOW_INTENTION_BULB” value=”false” / > .

Переключение настроек для Search everywhere

С Search everywhere вы можете найти произвольные фрагменты текста буквально везде: в коде, библиотеке, частях UI, настройках и даже в названиях действий. Если вы часто используете эту функцию, вам нужно знать, что вы можете получить доступ к настройкам IntelliJ IDEA, нажав Enter во всплывающем окне. Например, здесь мы получаем доступ к настройкам редактора:

Включение и отключение плагинов от Search everywhere

Аббревиатуры в Search Everywhere

Еще один интересный факт, что Search Everywhere поддерживает аббревиатуры. Вы можете зайти в Settings → Keymap, чтобы присвоить каждому действию сокращенный текст.

Свернуть вкладки редактора

Когда вам нужно закрыть все вкладки в редакторе, кроме текущей, нажмите на закрытие текущей вкладки, зажимая Alt. Если вы вообще не хотите видеть вкладки редактора, перейдите в Settings → Editor → General → Editor Tabs, и выберите None under Placement.

Открытие файла в новом окне

Особенность, которую не так просто найти, но она очень удобно открывает файл в новом окне с помощью нажатия Shift+Enter в окне инструментов Project.

Добавление кнопки остановки и восстановления на панель инструментов

Очень удобно добавить кнопки остановки и восстановления на панель инструментов. Вы можете сделать это через Settings → Appearance & Behaviour → Menus and Toolbars. Если вы предпочитаете использовать мышку, а не комбинации клавиш, в таком случае вам не нужно будет открывать окно инструмента отладки, чтобы управлять текущей сессией.

Переключение между окнами

Если ваш IntelliJ IDEA открывает каждый проект в отдельном окне, вы можете быстро переключаться между ними с помощью Ctrl+Alt+` (Ctrl+` для OS X).

Сравнение с буфером обмена

В IntelliJ IDEA есть встроенная программа для просмотра различий в коде, jar файлах и изображениях. Чтобы открыть его, выделите любую пару и нажмите Ctrl+D (Cmd+D для OS X). Если вы выделите отдельный файл, IDE предложит вам выделить еще один, с которым его можно сравнивать. Для быстрого сравнения активного редактора с буфером обмена, используйте View → Compare with Clipboard.

Вставить из истории

Говоря о буфере обмена, IntelliJ IDEA отслеживает все, что вы вставляете в него. Когда вы хотите вставить что-то из ранее скопированных элементов, нажмите Ctrl+Shift+V (Cmd+Shift+V для OS X).

Множественный выбор

Множественный выбор — это сравнительно новая, но мощная функция редактора, которая позволяет вам быстро выделять и редактировать несколько фрагментов кода сразу.

В двух словах, вот что происходит: Вы либо начинаете с нажатия Alt+J (Ctrl+G для OS X) (затем IntelliJ IDEA выделяет символ курсора), или вы можете просто выделить что-то, как вы бы сделали это обычно.

Затем, нажмите Alt+J (Ctrl+G для OS X) и IntelliJ IDEA будет искать в текущем файле, пока не найдет соответствующий фрагмент текста, который он добавит к выделенному. Вы можете нажать Alt+J снова, чтобы продолжить, или Alt+Shift+J (Ctrl+Shift+G для OS X), чтобы вернуться назад. Но обратите внимание, что когда поиск достигает конца файла, он переключается на начало.

После того как выбор будет завершен, вы можете начать редактировать все фрагменты так же, как если бы это был один фрагмент:

Важный совет: Другой способ копирования курсора — нажатие Ctrl (Alt для OS X) и перемещение его вверх и вниз с помощью стрелочек или мыши.

Emmet

Если вы не в курсе, Emmet — это отличный способ писать код на HTML, XML и CSS. IntelliJ IDEA поддерживает данную функцию: просто напишите Emmet-выражение и нажмите Tab, чтобы развернуть его. Используйте предварительный просмотр Emmet для просмотра получившегося кода.

Regex

Регулярные выражения широко используются, но иногда слишком сложно написать их правильно. IntelliJ IDEA поможет вам проверить любое Regex в вашем коде: поместите курсор на него и нажмите Alt+Enter, чтобы использовать Check Regex intention.

Найти и заменить Regex группами

Еще один случай, когда IntelliJ IDEA помогает с Regex — функции поиска и замены. Стоит знать, что он поддерживает выделенные группы в заменяемых выражениях.


Поиск и замена также позволяет вам исключить комментарии и литералы из поиска: чтобы сделать это, используйте значок шестеренки.

Просмотр байт-кода

Иногда очень полезно увидеть реальный байт-код вашей программы. В IntelliJ IDEA вы всегда можете это сделать через View → Bytecode.

В Commit диалоге IntelliJ IDEA предлагает выполнить различные операции. Одна из них — исправление изменений. Полезна, когда вы хотите изменить ваш последний коммит.

Shelves and patches

Shelves — это функция IDE похожая на Git Stash, но работает для всех систем контроля версий.

Патчи позволяют вам сохранять набор изменений в текстовом файле, которые могут быть переданы по почте (или другим способом) и затем применены к коду. Очень полезно, когда вам нужно закоммитить что-то, после того как ваш самолет совершил аварийную посадку на необитаемом острове, или если вы просто остались без связи.

Точки остановки

Иногда вы, возможно, хотите получить значение чего-то в конкретной строке кода, без использования точек остановки. Вы можете сделать это, используя Action breakpoint. Чтобы создать их, просто нажмите на боковую панель, зажимая Shift. Таким образом, вы можете напечатать любое выражение, не меняя код. Особенно это полезно при отладке библиотек или удаленного приложения.

В дополнении к action breakpoints, вы можете так же использовать Field breakpoints. Эти точки остановят выполнение, когда поля, связанные с ними, доступны. Для этого просто нажмите на боковой панели, зажимая Alt (Ctrl+Cmd для OS X).

Маркеры объектов

Когда вы отлаживаете приложение, IntelliJ IDEA позволит вам отмечать экземпляры произвольных объектов цветными пометками для более простой идентификации, через действие Mark Object. Доступно в Evaluate Expression, Variables, Watches диалоговых окнах.

И если у вас есть какой-нибудь отмеченный объект, вы также можете использовать его в условных выражениях.

Визуализация пользовательских данных

Evaluate Expression, Variables, Watches и встроенный отладчик используют стандартный способ визуализации значений переменных, обычно на основе реализации классов toString. Не каждый знает, что вы можете определить свои собственные средства визуализации для любого класса. Для этого выберите Customize Data Views из контекстного меню в окне инструмента отладки.

Это особенно полезно, когда некоторые классы в библиотеке, которую вы используете, не обеспечивают значимую реализацию toString — поэтому вы можете найти его сами вне библиотеки.

Drop frame

В случае, если вы хотите вернуться назад во времени во время отладки, вы можете сделать это через действие Drop frame. Это отличная функция, если по ошибке вы ушли слишком далеко.

Принудительный возврат

Если вы, наоборот, хотите попасть в будущее, и сделать принудительный возврат без выполнения дополнительных инструкций, используйте действие Force Return. Если метод возвращает значение, вы должны указать его.

DCEVM

Иногда, когда вы вносите быстрые изменения в код, вы хотите сразу видеть, как он будет работать в приложении. К сожалению, у Java HotSwap VM много ограничений: вы не можете, допустим, добавить новый метод; единственное, что вы можете изменить — тело метода.

К счастью, есть способ, как изменить эту ситуацию с новым open-source проектом Dynamic Code Evolution VM. Это модификация Java HotSwap VM с неограниченной поддержкой для перезагрузки классов во время исполнения.

Для использования данной виртуальной машины в IntelliJ IDEA — разработан специальный плагин. При включении плагина, IDE предложит вам установить DCEVM JRE. Затем, вы должны будете выбрать его в списке альтернативных JRE.

Обновление приложения

Если вы запускаете ваше приложение на сервере приложений (Tomcat, JBoss и т.д.), вы можете перезагрузить измененные классы и ресурсы, используя действие Обновление приложений через Ctrl+F10 (Cmd+F10).

Заметьте, что перезагрузка ресурсов доступна только если вы развернули ваше приложение, используя WAR.

Внешние инструменты

IntelliJ IDEA интегрировал много инструментов для разработчиков. Если приложение, которое вам нужно, ещё не интегрировано, но вы бы хотели использовать его через ярлык, откройте Settings → Tools → External Tools, и настройте, как запускать данное приложение. Тогда вы сможете активировать этот инструмент через меню Tools → External Tools.

Командная строка запуска

Если вы хотите использовать IntelliJ IDEA из командной строки ( т.е. открывать проект или файл: “idea “), нажмите Tools → Create Command-Line Launcher.

Есть множество сред разработки программного обеспечения: Visual Studio, Eclipse, Android Studio, Xamarin Studio и т.д. Все они имею свои плюсы и минусы и предназначены для разных языков программирования и целей.

IntelliJ IDEA — интегрированная среда разработки программного обеспечения, разработанная компанией JetBrains в 2001 году. Она поддерживается на таких операционных системах как: Windows, Linux, macOS. Эта среда разработки поддерживает многие современные высокоуровневые языки программирования, такие как:

  • Java
  • JavaScript
  • CoffeeScript
  • HTML/XHTML/HAML
  • CSS/SASS/LESS
  • XML/XSL/XPath
  • Серверные языки: PHP, Ruby, Python
  • и т.д.

Ultimate Edition доступна под коммерческой лицензией (платная версия). В ней реализована поддержка Java EE, UML-диаграмм, подсчёт покрытия кода, а также поддержка других систем управления версиями, языков и фреймворков.

Как пользоваться

Первоначальная настройка при первом запуске

При первом запускаете или после того, как было сделано обновление программы, откроется диалоговое окно полной установки, в котором вы можете выбрать импортирование параметров IDE.

Незаменимая для программистов - IntelliJ IDEA

Если это был первая установка, то выбирается параметр «Не импортировать параметры» так как их неоткуда импортировать. Далее можно выбрать тему среды.

После выбора темы, можно выбрать выключить или включить нужные плагины, загрузить и установить их из репозитория плагинов IntelliJ IDEA.

После завершения первоначальной настройки, отобразится экран приветствия. Он позволяет:

  • создать новый проект
  • или проверить существующий проект из системы управления версиями
  • открыть существующий
  • импортировать новый проект (среда разработки позволяет перетащить существующий каталог проекта или отдельный файл на экран приветствия и открыть его в IntelliJ IDEA)

После запуска, среда разработки открывает справку Trip of Day.

Как создать проект java

  1. В меню приветствия выбираем пункт Create New Project (или если какой то проект уже открыт нажимаем File -> New Project … )
  2. В окне New Project выбираем папку Java. В поле Project SDK выбираем папку на компьютере где лежит ранее скаченный SDK для java. (Обычно эти библиотеки для работы с java устанавливаются в папку C/Programs File (или Programs File(x68) в зависимости от той версии которую вы используете)/java/). Далее нажимаем Next. – расположение библиотек jdk и jre для рабы с java.
  3. На Create project from template ставим галку и выбираем Command Line App. Нажимаем Next.
  4. В поле Project name пишем название создаваемого проекта латинскими буквами без пробелов. Нажимаем Finish. Название проекта и выбор его местоположения. В итоге генерируется класс Main который является точкой входа для созданного приложения (программы). Он создается пустым и ничего не делает, но при этом его можно запустить на выполнение.

По завершению выполнения компилятор выдает нам следующее:

Process finished with exit code 0

Запустить проект

Что бы запустить проект в IntelliJ IDEA можно воспользоваться знаком старта на верхней панели быстрого доступа:

Незаменимая для программистов - IntelliJ IDEA

Также программу можно запустить через вкладку Run -> Run Main или сочетанием клавиш Shift+F10.

Как создать jar файл?

Для создания jar файла необходимо открыть окно Project Structure (значок в верхнем меню быстрого доступа рядом с лупой). Так же это окно можно найти и открыть через поиск (лупа на панели быстрого доступа) или сочетание клавиш Ctrl+Alt+Shift+S.

В открывшемся окне выбираем вкладку Atrifacts -> + -> JAR –> From modules with dependencies…

В открывшемся окне в поле Main Class выбираем главный класс проекта и нажимаем OK.

В следующем окне ничего не делаем, просто нажимаем ОК.

Теперь, чтобы добавить jar файл проекта в сам проект нажимаем Build (верхняя панель меню) -> Build Artifacts… -> название проекта.jar -> Edit …

В открывшемся окне выбираем созданный jar файл и нажимаем OK.

Теперь в панели где отображается структура проекта появляется папка out в которой можно найти созданный jar файл

Все тоже самое только на видео:

Увеличение шрифта

Чтобы увеличить шрифт заходим в File -> Settings -> Editor -> Font. В данном окне в поле size можно указать желаемый шрифт.

Незаменимая для программистов - IntelliJ IDEA

Смена темы

Чтобы сменить тему заходим в File -> Settings -> Editor -> Color Scheme -> Color Scheme Font. Здесь в поле Scheme можно выбрать желаемую тему:

  • Default (по умолчанию, фон редактора будет белым)
  • Darcula (фон редактора темный)

Помимо этого, через знак колеса (настройки) можно импортировать желаемую тему или цвет фона.

Создание библиотеки

Jar файл является библиотекой для языка java (пакетом, в котором собраны классы). Как создается Jar файл было описано в четвертом пункте.

Полезное видео по настройке и запуску

Покупка и актуальная цена

Платную версию можно найти и купить на официальном сайте компании JetBrains. На конец 2018 года платная версия Ultimate стоит $499.

Где скачать и как установить?

На Windows

  1. Скачиваем установочный файл Community edition с официального сайта компании JetBrains.

На macOS

  1. Скачиваем с официального сайта JetBrains загрузочный файл для операционной системы macOS.
  2. Запускаем загруженный файл. После запуска файла открывается окно в котором необходимо перенести InteliJ IDEA CE в папку приложений (Application) командой .dragTo() (это слово так и переводится «перемещение»). Рисунок 20 – окно для перемещения загруженного приложения в папку приложений
  3. После этого можно запустить скаченное приложение из папки Application.

На Linux

Установка на ubuntu индетичная.

ВАЖНО: перед установкой убедитесь, что на компьютере, на который устанавливается среда разработки уже установлена Java машина.

  1. Скачиваем с официального сайта JetBrains загрузочный файл для операционной системы Linux tar.gz.Рисунок 21 – скачивание установочного файла для операционной системы LINUX
  2. Открываем терминал (в windows это командная строка (cmd)) и переходим в папку со скаченным архивом (cd – команда для смены директории). Далее распаковываем архив командой tar – упаковка и распаковка архивов tar: $ tar -xvf ideaIC-XX.Y.Z.tar.gz
  3. Переходим с помощью команды cd в распакованную директорию: $ cd ideaIC-XX.Y.Y.Z/bin/
  4. Запускаем в текущем каталоге файл idea.sh: sudo ./idea.sh
  5. После запуска нужно подтвердить лицензионное соглашение.

Обновление

Для обновления версии среды разработки нажимаем на вкладку Help -> Check for Upates.

После этого открывается диалоговое окно, в котором написана текущая версия среды разработки и последняя ее версия. Для обновления версии нажимаем кнопку Download. Откроется браузер со страницей откуда можно скачать последнюю версию.

При повторном нажатии на вкладку Help -> Check for Upates открывается такое же окно, но уже вместо кнопки Download появляется кнопка Update and Restart. При нажатии на эту кнопку начнется обновление среды разработки IntelliJ IDEA.

Системные требования

Требования к оборудованию:

Требования к ПО:

Горячие клавиши

Редактирование и генерация кода

Ctrl + Space Показывает список вариантов которым можно завершить ввод
Ctrl + Shift + Space Тоже самое, что и Ctrl + Space, только учитывает статические поля и методы. Также помогает инициализировать поле подходящим типом.
Ctrl + Shift + Enter Завершение оператора, ставит в конце оператора точку запятую
Ctrl + P Сведения о параметрах (в пределах аргументов вызываемого метода)
Ctrl + Q Быстрый поиск документации
Shift + F1 Внешняя документация
Ctrl + наведение курсором на команду Краткая информация
Alt + Insert Генерация блоков кода (Getters, Setters, Constructors, hashCode/equals, toString)
Ctrl + O Переопределение метода
Ctrl + I Реализация методов
Ctrl + Alt + T Оборачивает выделенную команду в блок кода (if..else, try..catch, for, synchronized, etc.)
Ctrl + / Однострочное комментирование / раскомментирование
Ctrl + Shift + / Многострочное комментирование / раскомментирование
Ctrl + W Умное выделение текста. Эта команда выделяет сначала слово где стоит курсор, потом строку (или целый блок кода)
Alt + Q Контекстная информация
Alt + Enter Показать предлагаемое исправление
Ctrl + Alt + L Структурирование кода (это сочетание делает код читабельным и удобным для восприятия)
Ctrl + Alt + O Удаление неиспользуемых импортов
Ctrl + Alt + I Авто-отступ линии
Tab / Shift + Tab Отступ / удаление отступа выбранному фрагменту кода
Ctrl + Shift + V Вставить последний фрагмент кода из буфера обмена
Ctrl + D Дублирование текущей строки
Ctrl + Y Удаляет целую строку
Ctrl + Shift + J Объединение строк
Ctrl + Enter Разделение строки (отличается от простое Enter тем, что курсор остается на месте)
Ctrl + Shift + U Переключает слово на котором стоит курсор в нижний / верхний регистр
Ctrl + Shift + ] / [ Выделить код до конца / начала блока
Ctrl + Delete Удалить слово после курсора
Ctrl + Backspace Удалить слово перед курсором
Ctrl + NumPad+/- Развернуть / свернуть блок кода
Ctrl + Shift + NumPad+ Развернуть все
Ctrl + Shift + NumPad- Свернуть все
Ctrl + F4 Закрыть активное окно редактора

Поиск / замена в коде

Ctrl + F Поиск по коду в текущей вкладке
F3 Поиск вперед
Shift + F3 Поиск назад
Ctrl + R Замена найденного слова
Ctrl + Shift + F Искать по проекту
Ctrl + Shift + R Заменить по проекту
Ctrl + Shift + S Поиск по шаблону
Ctrl + Shift + M Замена по шаблону

Поиск использованного кода

Alt + F7 / Ctrl + F7 Найти использования / Найти использования в файле
Ctrl + Shift + F7 Выделить используемое в файле
Ctrl + Alt + F7 Показать использования метода, класса, переменной

Компиляция/выполнение/отладка

Навигация

Рефакторинг (улучшение кода)

F5 Копирование класса
F6 Переместить
Alt + Delete Безопасное удаление
Shift + F6 переименовывает поле, метод или класс во всех местах, где используется
Ctrl + F6 Изменить сигнатуру
Ctrl + Alt + N Встроить
Ctrl + Alt + M Поместить в метод
Ctrl + Alt + V Поместить в переменную
Ctrl + Alt + F Поместить в поле
Ctrl + Alt + C Поместить в константу
Ctrl + Alt + P Поместить в параметр

Система управления версиями (Version Control System)

Ctrl + K Commit (сохранение, фиксация) проекта в репозиторий
Ctrl + Обновить проект из репозитория
Alt + Shift + C Посмотреть последние изменения

Работа с интерфейсом IDE

Открытие окон настроек кода и среды разработки

Ctrl + Alt + S Открытые окна Параметры (Settings)
Ctrl + Alt + Shift + S Открыть диалоговое Структура проекта (Project Structure)

В данной статье были разобраны основные принципы работы со средой IntelliJ IDEA. У нее достаточно интуитивный интерфейс для пользователя. В ней можно создавать полноценные приложения на таких языках как Java, Python, Kotlin, Scala и т.д.

Читайте также: