# IntelliJ IDEA 
**IntelliJ IDEA** — это IDE предназначенная для **Java**, **Python** и других языков программирования от компании JetBrains.
![IntelliJ IDEA](https://images.velog.io/images/codemcd/post/c8c93f48-fcf2-4793-a23d-6f6ed1a12803/intellij_idea_logo.png)
Платформа IntelliJ IDEA индексирует весь код, что помогает разработчикам определять ошибки, ориентироваться в структурах кода и выполнять рефакторинг кода. 
Используя интеллектуальные, цепные и статические функции завершения, программисты могут получать предложения о соответствующих классах, методах, полях или ключевых словах, перечислять применимые символы, доступные с помощью методов, и использовать статические методы или функции.
___
### Функциональность 
В среде IntelliJ IDEA можно разрабатывать приложения на **Java** и других языках, работающих на платформе виртуальной машины **Java**, — **Kotlin**, **Scala** и **Groovy**
После установки бесплатных плагинов среда позволяет работать с другими популярными языками, включая **Go**, **Python**, **SQL**, **Ruby** и **PHP**.
___
### Комфортность
В IntelliJ IDEA очень гибка настройка внешнего вида программы:
+ Более 100 различных тем оформления;
+ Возможность синхронизировать цветовую схему с настройками операционной системы;
+ Наличие специальных возможностей:
	+  чтение с экрана
	+ гибкая настройка отдельных элементов интерфейса.
___
### Особенность
IntelliJ IDEA действительно понимает ваш код, а также контекст кодера, что делает его таким уникальным среди других Java IDE.
+ **Интеллектуальное завершение кода** – поддерживает контекстное завершение кода. Он дает список наиболее значимых символов, применимых в текущем контексте.
+ **Цепное завершение кода** – это расширенная функция завершения кода, которая перечисляет соответствующие символы, доступные через методы или методы получения в текущем контексте.
+ **Обнаружение дубликатов** – Он обнаруживает фрагменты дублированного кода на лету и дает уведомление / предложение об этом пользователю.
+ **Инспекции и быстрые исправления.** Всякий раз, когда IntelliJ обнаруживает, что вы собираетесь совершить ошибку, в одной строке появляется небольшое ламповое уведомление.  Нажав на нее, вы увидите список предложений.
___
### Недостатки
Несмотря на большую популярность IntelliJ, в данной IDE есть несколько проблем способных отпугнуть новых пользователей или затруднить им работу с ней.
+ Для комфортной работы IDE необходим достаточно мощный компьютер имеющий более 8 ГБ оперативной памяти и производительный процессор.
+ Не совсем существенный, но всё же недостаток --- отсутствие русского языка.
___
### Обзор работы в IntelliJ IDEA на примере
Рассмотрим интерфейс и принцип работы со средой разработки на примере Java проекта представляющего собой модификацию для игры **Minecraft**. 
![Screenshot](https://i.ibb.co/hmpcTz9/1.png)
Основные блоки, как видно на скриншоте, это собственно сам **код** и **структура проекта**, такой внешний вид похож на **Visual Studio Code**.
После ввода пары символов, IntelliJ уже предлагает возможные варианты на выбор, примечательно то, что в списке присутствуют и те варианты, для использования которых необходимо подключить соответствующую библиотеку. То есть IDE предлагает все возможные варианты которые только существуют в реестре IntelliJ.
![Screenshot](https://i.ibb.co/nsYT53v/2.png)
В данном проекте для отладки и тестирования написанного кода необходимо запустить игру с данной модификацией, в этом помогает **Gradle** --- система для автоматизации сборки приложений и сбора статистики об использовании программных библиотек.
![Gradle](https://i.ibb.co/kytBwD1/3.png)
Для непосредственно запуска необходимо нажать на **runClient**, после чего произойдёт загрузка и сборка необходимых файлов и запуститься клиент. Хочу заметить что для запуска игры, саму игру качать не нужно, она уже есть в пустом проекте модификации.
![Client](https://i.ibb.co/cb1MSJS/4.png)
Помимо запуска клиента, в Gradle также есть такие пункты как проверка целостности файлов проекта и сборка модификации в отдельный от игры файл.
___
### Заключение
В целом данная IDE заслуженно является одной из распространённых и имеет ряд преимуществ, из которых самым удобным на мой взгляд является предложение продолжения при написании кода по всем возможным библиотекам, в отличие от Visual Studio, где для того чтобы IDE предложила вариант кода - он должен быть доступен в данном скрипте, для чего необходимо либо знать правильное написание нужной структуры, либо знать название необходимой библиотеки.
Однако для полноценной комфортной работы в данной среде разработки необходима её настройка, ибо даже стандартное во многих программах динамическое изменение разрешения окна используя **Ctrl+Колёсико мышки**, в IntelliJ IDEA отключено по умолчанию. 