[содержание](/readme.md)  

# Основы работы с IntelliJ IDEA. Интерфейс программы

Для написания Java-программы (и естественно, Kotlin) по большому счету достаточно обыкновенного текстового редактора, но, конечно же, такой вариант просто несопоставим с использованием профессиональных сред разработки приложений, так называемых IDE (Integrated Development Environment).

**IntelliJ IDEA** – это интегрированная среда разработки программного обеспечения на Java/Kotlin от компании *JetBrains*. Кстати, не только на них. Среда с успехом используется и для других языков программирования, например, *Scala*. Первая версия программы появилась в 2001 г. и с тех пор программа неуклонно повышает свой рейтинг популярности. *IntelliJ IDEA* выпускается в двух редакциях: *Community Edition* и *Ultimate Edition*. Первая версия является полностью бесплатной. Вторая версия распространяется под различными лицензиями и, как декларируется, может использоваться бесплатно для разработки проектов с открытым программным кодом.

Версии отличаются также поддерживаемыми технологиями.

1. Ultimate Edition:

* полнофункциональная среда разработки под JVM и разработке на различных языках: Java, Kotlin, PHP, JavaScript, HTML, CSS, SQL, Ruby, Python;
* поддержка технологий Java EE, Spring/Hibernate и других;
* внедрение и отладка с большинством серверов приложений.

2. Community Edition:

* полнофункциональная среда разработки для Java SE, Kotlin, Groovy и Scala;
* мощная среда для разработки под Google Android.

Программа содержит полный набор необходимых для создания полноценных приложений компонент: *редактор*, *среда компиляции и выполнения*, а также *отладчик*.

Естественно, *IntelliJ IDEA* – не единственная среда создания приложений для Java, достаточно припомнить популярную *Eclipse* или *NetBeans*, так что разработчику есть из чего выбирать.

## Установка системы

Скопировать дистрибутив можно с сайта разработчика компании JetBrains по ссылке http://www.jetbrains.com/idea/. Установка *IntelliJ IDEA* проблем не вызывает. Отмечу только, что при инсталляции установите ассоциацию программы (Create associations) с файлами Java и Kotlin.

## Интерфейс программы

### Стартовое окно

После установки при первоначальной загрузке IntelliJ IDEA появляется стартовое окно «Welcome to IntelliJ IDEA», позволяющее загрузить либо открыть проект, импортировать проект, выполнить его загрузку из репозитория нескольких систем контроля версий («Check out from Version Control»). При наличии в проекте файлов настройки сборки для Maven или Gradle, IntelliJ IDEA предложит вам использовать их для конфигурации.

После работы с определенным проектом, он запоминается, и при последующем запуске программы происходит загрузка последнего открытого проекта. Впрочем, это происходит при настройках программы по умолчанию, когда в настройках программы (*File* - *Settings*) в группе *Appearance & Behavior* (Внешний вид и поведение), *System Setting* (Настройки программы) установлен флажок для поля-метки *Reopen last project on startup* (Открывать последний проект при загрузке).

![](/img/ide_01.png)

### Основное окно

Основное окно программы в общем виде состоит из трех областей, называемых также *инструментальными* окнами (на рисунке отмечены красным) и окна *редактора* (оранжевое).

![](/img/ide_02.png)

**Инструментальные** окна располагаются по периметру окна редактора, то есть слева, справа и внизу от него на полях главного окна, которые в дальнейшем будем называть боковыми панелями (sidebar в терминологии программы). Поскольку инструментальные окна отображают разноплановую информацию, то каждая боковая панель содержит ряд вкладок, которые открываются при выполнении определенной команды. Переход к нужной вкладке (инструментальному окну) осуществляется щелчком на ее названии, которые располагаются на боковых панелях главного окна. Названию некоторых вкладок инструментальных окон предваряет цифра. Используя клавишу <Alt> совместно с этой цифрой, можно быстро перейти к этой вкладке, попутно открыв ее, если она находится в свернутом положении, либо, наоборот, свернуть ее.

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

### Окно редактора

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

Программа содержит внушительный инструментарий управления вкладками окна. Так, расположение вкладок можно произвольно изменять, располагая их, например, горизонтально, перебрасывая файлы из одной группы вкладок в другую, что достигается при помощи группы команд *Windows* - *Editor Tabs* либо из контекстного меню, вызываемого на вкладке окна редактирования. При необходимости конкретную вкладку можно закрепить, что бывает полезным при большом количестве вкладок, когда все они не помещаются в окне редактирования, для чего используем команду *Pin Tab*, о чем речь пойдет ниже.

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

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

![](/img/ide_03.png)

Для отображения нумерации строк программного кода следует вызвать контекстное меню (кликнуть правой кнопкой мыши) на вертикальной полосе в левой части окна редактирования и выбрать *Show Lines Numbers* (Отображать нумерацию строк). Однако при таком действии отображение строк осуществляется только в текущем сеансе. Для постоянного же отображения нумерации строк программного кода следует в настройках раскрыть последовательно пункты *Editor* (Редактор), *General* (Общие настройки), *Appearance* (Внешний вид) и установить флажок для поля-метки **Show line numbers** (Отображать номера строк).

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

## Инструментальные окна

### Инструментальное окно проекта

На левой боковой панели отображается инструментальное окно проекта. Оно содержит вкладку иерархической структуры проекта (Project), вкладку структуры (списка метода) класса (Structure) и вкладку Favorites (Избранное), в которой отображаются закладки и точки останова.

Выбор во вкладке структуры проекта приводит к отображению его содержимого в окне редактора. Поскольку код практически любого класса содержит множество методов/функций, то вкладка «Structure» как раз и отображает их список. Он может быть упорядочен как по алфавиту (Sort by Alphabetically), так и в порядке их расположения в (Sort by Visibility). Щелчок на имени класса инициирует переход на начало метода или функции в окне редактора.

![](/img/ide_04.png)

### Инструментальное окно **Избранное**

В нижней части левой боковой панели основного окна можно вывести инструментальное окно «Favorites» (Избранное), содержащее, например, список точек останова и закладок, обеспечивая тем самым к ним быстрый доступ.

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

Данное окно располагается на правой боковой панели. Оно изначально содержит вкладки для наиболее распространенных инструментов сборки проектов Java – Gradle (или Maven) и Ant.

### Инструментальное окно вывода
Окно располагается на нижней инструментальной панели. В нем в зависимости от характера информации отображаются, например, сообщения компиляции («Messages»), консольный ввод/вывод («Terminal»), контроль изменений проекта («Version Control»), результаты работы отладчика («Debug») и некоторые другие.

## Создание проекта

Создается проект просто: *File* - *New* - *Project*. А вот дальше возникают вопросы: какого типа у нас проект, какие библиотеки нужны...

![](/img/ide_05.png)

Мы в своих проектах будем использовать Gradle и Kotlin/JVM. Если со вторым пунктом (язык программирования и реализация под JavaVirualMachine) сомнений нет, то с первым пока непонятно. Я выбрал Gradle, потому что он используется по-умолчанию в Android Studio с которым мы познакомимся в следующем году. Но что вообще означают эти слова: Maven, Gradle?

Если коротко, то это системы сборки проектов, а если подробно, то читайте, например, [тут](https://habr.com/ru/post/107085/)


## Структура проекта

При создания нового проекта система создает для нас необходимую структуру каталогов и файлы настроек. Нам из всего этого пока понадобится только каталог с исходными кодами и настройки системы сборки проектов:

![](/img/ide_07.png)

Для создания нового файла нужно кликнуть правой кнопкой мыши на подкаталоге **kotlin** в каталоге **src** и выбрать *Kotlin File/Class*

![](/img/ide_06.gif)

В появившемся окне введите название файла и выберите из списка **File**

![](/img/ide_08.png)

В первом созданном файле (у нас он называется main.kt, но это не обязательно) сделайте точку входа в программу:

```kt
fun main(args: Array<String>){

}
```

Любая программа (консольная, про андроид мы пока не говорим) начинается с функции **main**.

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

```kt
//файл lab1.kt
class SomeClass(var value: String){
    fun printValue() = print(value)
}

fun lab1(){
    val someClassInstanse = SomeClass("test")
    someClassInstanse.printValue()
}
```

```kt
//файл main.kt
fun main(args: Array<String>){
    lab1()
}
```

Все файлы одного пакета (название пакета мы не задавали, но он назначается системой) собираются в одину программу. Таким образом весь код лабораторной работы мы будем писать в отдельном файле (*lab1.kt*), а вызывать его из функции **main**. Это упростит нам работу с репозиторием (с ним мы познакомимся на следующем занатии) и уменьшит количество мусора на диске.


[Содрано отсюда](https://www.kv.by/blog/users/fetisovvs/1049285-osnovy-raboty-s-intellij-idea-interfeys-programmy)

[содержание](/readme.md)  
