Выбор Java IDE

Обновлено: Декабрь 2018 .

Каждому Java-разработчику нужен программный редактор или IDE, которые могут помочь в более грубых частях написания Java и использовании библиотек классов и фреймворков. Решение о том, какой редактор или IDE подойдет вам лучше всего, зависит от нескольких вещей, включая характер разрабатываемых проектов, вашу роль в организации, процесс, используемый командой разработчиков, а также ваш уровень и навыки как программиста. Дополнительные соображения: стандартизированы ли инструменты в команде и ваши личные предпочтения.

Три IDE, наиболее часто выбираемые для серверной разработки Java, - это IntelliJ IDEA, Eclipse и NetBeans. Однако это не единственный выбор, и в этот обзор также будут включены несколько облегченных IDE.

Для этого обзора я выполнил свежие установки IntelliJ IDEA Ultimate 2018.3, Eclipse IDE 2018‑09 для разработчиков Java EE и Apache NetBeans (инкубирующая) IDE 9 на Mac. Я также проверил несколько проектов Java с открытым исходным кодом, чтобы протестировать все IDE в одних и тех же проектах.

Об этом обновлении

Этот обзор IDE был впервые опубликован в сентябре 2016 года и обновлен в декабре 2018 года. За прошедшие годы язык Java, API, экосистема JVM и некоторые фреймворки претерпели значительные изменения. В Java EE 8 представлены или обновлены многие спецификации технологии Java, включая JSON-B (привязка нотации объектов JavaScript), Java EE Security, Servlet 4.0 и JSF (JavaServer Faces) 2.3 для создания пользовательских интерфейсов на стороне сервера. Java EE 8 также была последней корпоративной версией Java от Oracle: Eclipse Foundation взяла на себя ответственность за управление технологией, которая была переименована в Jakarta EE. Между тем, JUnit продвинулся до версии 5, нарушив интеграцию; IDEA и Eclipse имеют встроенную поддержку JUnit 5, но на момент написания этой статьи NetBeans не поддерживает.

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

NetBeans 10 добавляет поддержку JUnit 5 и JDK 11

В NetBeans 10, выпущенной в январе 2019 года, добавлена ​​поддержка JDK 11 и JUnit 5.

Основы: что вам нужно от Java IDE

Как минимум, вы должны надеяться, что ваша IDE поддерживает Java 8 и / или 11 (версии LTS), Scala, Groovy, Kotlin и любые другие языки JVM, которые вы регулярно используете. Вы также хотели бы, чтобы он поддерживал основные серверы приложений и самые популярные веб-фреймворки, включая Spring MVC, JSF, Struts, GWT, Play, Grails и Vaadin. Ваша IDE должна быть совместима с любыми системами управления сборкой и версиями, которые использует ваша команда разработчиков; примеры включают Apache Ant с Ivy, Maven и Gradle, а также Git, SVN, CVS, Mercurial и Bazaar. Для дополнительного удобства ваша IDE должна иметь возможность обрабатывать уровни клиента и базы данных вашего стека, поддерживая встроенный JavaScript, TypeScript, HTML, SQL, JavaServer Pages, Hibernate и Java Persistence API.

Наконец, вы можете надеяться, что ваша Java IDE позволит вам легко и без проблем редактировать, создавать, отлаживать и тестировать ваши системы. В идеале у вас будет не только интеллектуальное завершение кода, но и рефакторинг и метрики кода. Если вы работаете в магазине, который занимается разработкой на основе тестирования, вам нужна поддержка ваших фреймворков тестирования и заглушек. Если ваша группа использует систему тикетов и CI / CD, лучше, если ваша IDE сможет подключиться к ним. Если вам нужно выполнить развертывание и отладку в контейнерах и облаках, ваша IDE должна помочь вам в этом.

Помня об этом основании, давайте рассмотрим претендентов.

IntelliJ IDEA

IntelliJ IDEA, лучшая среда разработки Java IDE с точки зрения как функций, так и цены, представлена ​​в двух версиях: бесплатной версии Community и платной версии Ultimate с дополнительными функциями.

Версия Community предназначена для разработки JVM и Android. Он поддерживает Java, Kotlin, Groovy и Scala; Android; Maven, Gradle и SBT; и Git, SVN, Mercurial, CVS и TFS.

Версия Ultimate, предназначенная для веб-разработки и корпоративной разработки, поддерживает Perforce в дополнение к другим системам контроля версий; поддерживает JavaScript и TypeScript; поддерживает Java EE, Spring, GWT, Vaadin, Play, Grails и другие платформы; и включает инструменты базы данных и поддержку SQL.

Идея состоит в том, что коммерческая (Ultimate) версия получит свое место на рабочем столе профессионала, оправдывая платную подписку за счет повышения производительности программистов. Если вы зарабатываете от 50 до 100 тысяч долларов в год как Java-разработчик, вам не потребуется значительного повышения производительности, чтобы быстро окупить инвестиции по подписке на бизнес-IDEA стоимостью 500 долларов в год. В последующие годы цена будет снижаться для предприятий, намного ниже для стартапов и частных лиц и бесплатна для студентов, преподавателей, «чемпионов Java» и разработчиков открытого исходного кода.

IntelliJ рекламирует IDEA за глубокое понимание вашего кода, эргономику разработчика, встроенные инструменты разработчика и опыт программирования на полиглотах. Давайте углубимся в подробности и посмотрим, что означают эти функции и как они могут вам помочь.

Мартин Хеллер

Глубокое понимание вашего кода

Подсветка синтаксиса и простое завершение кода даны для редакторов Java. IDEA выходит за рамки этого, обеспечивая «интеллектуальное завершение», то есть может вывести список наиболее подходящих символов, применимых в текущем контексте. Они ранжируются по вашей личной частоте использования. «Завершение цепочки» идет глубже и отображает список применимых символов,  доступных через методы или геттеры  в текущем контексте. IDEA также дополняет статические члены или константы, автоматически добавляя любые необходимые операторы импорта. Во всех доработках кода IDEA пытается угадать тип символа среды выполнения, уточнить свой выбор на основе этого и при необходимости добавить приведение классов.

Код Java часто содержит строки на других языках. IDEA может вставлять фрагменты кода SQL, XPath, HTML, CSS и / или JavaScript в строковые литералы Java. В этом отношении он может выполнять рефакторинг кода на нескольких языках; например, если вы переименуете класс в операторе JPA, IDEA обновит соответствующий класс сущности и выражения JPA.

Когда вы реорганизуете часть кода, одна из вещей, которые вы обычно хотите сделать, - это также рефакторинг всех дубликатов этого кода. IDEA Ultimate может обнаруживать дубликаты и похожие фрагменты, а также применять к ним рефакторинг.

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

Эргономика разработчика

IntelliJ разработал IDEA с учетом творческого потока разработчика, также известного как  «быть в зоне». Окно инструмента Project, показанное слева на рисунке 1, исчезает из поля зрения простым щелчком мыши, так что вы можете сосредоточиться на редакторе кода. Для всего, что вы хотите делать во время редактирования, есть сочетание клавиш, включая отображение определений символов во всплывающем окне. Хотя изучение ярлыков требует времени и практики, в конечном итоге они становятся второй натурой. Даже не зная ярлыков, разработчик может легко и быстро научиться использовать IDEA.

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

Встроенные инструменты разработчика

IntelliJ IDEA предоставляет единый интерфейс для большинства основных систем контроля версий, включая Git, SVN, Mercurial, CVS, Perforce и TFS. Вы можете управлять всеми изменениями прямо в среде IDE. Когда я тестировал IDEA, мне хотелось, чтобы последнее изменение в блоке исходного кода отображалось в окне редактора в виде аннотации (как в Visual Studio). Как оказалось, для этого есть плагин.

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

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

Программирование на Java-сервере часто связано с работой с базами данных, поэтому IDEA Ultimate включает инструменты баз данных SQL и NoSQL. Если вам нужно больше, выделенная SQL IDE (DataGrip) доступна как часть подписки на все продукты, которая лишь немного дороже, чем подписка IDEA Ultimate.

IntelliJ IDEA поддерживает все основные серверы приложений JVM и может выполнять развертывание и отладку на серверах, что устраняет серьезную проблему для разработчиков Enterprise Java. IDEA также поддерживает Docker через плагин, который добавляет окно инструмента Docker. (Говоря о плагинах, в IntelliJ их много.)

Полиглот программирование

IDEA предлагает расширенную помощь в кодировании для Spring, Java EE, Grails, Play, Android, GWT, Vaadin, Thymeleaf, Android, React, AngularJS и других фреймворков. Не все из них являются фреймворками Java. Помимо Java, IDEA «из коробки» понимает многие другие языки, включая Groovy, Kotlin, Scala, JavaScript, TypeScript и SQL. Если вам нужно больше, в настоящее время существуют сотни языковых плагинов IntelliJ, включая плагины для R, Elm, Go, Rust и D.

Eclipse IDE

Eclipse, долгое время являвшаяся самой популярной Java IDE, является бесплатной, с открытым исходным кодом и написана в основном на Java, хотя ее архитектура плагинов позволяет расширять Eclipse на другие языки. Eclipse возник в 2001 году как проект IBM по замене семейства IDE IBM Visual Age на основе Smalltalk переносимой IDE на основе Java. Целью проекта было затмить Microsoft Visual Studio, отсюда и название.

Переносимость Java помогает Eclipse быть кроссплатформенным: Eclipse работает в Linux, Mac OS X, Solaris и Windows. Набор инструментов Java Standard Widget Toolkit (SWT) по крайней мере частично отвечает за внешний вид Eclipse, хорошо это или плохо. Точно так же Eclipse обязан своей производительностью (или, как некоторые говорят, ее отсутствием) JVM. Eclipse имеет репутацию медленной работы, что восходит к старому оборудованию и старым JVM. Однако даже сегодня он может показаться медленным, особенно когда он обновляется в фоновом режиме с множеством установленных плагинов.

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

Независимо от системы сборки, проект Eclipse Java также поддерживает модель своего содержимого, которая включает информацию об иерархии типов, ссылках и объявлениях элементов Java. Это также в целом хорошая вещь и позволяет использовать несколько помощников по редактированию и навигации, а также обзор структуры.

Текущая версия Eclipse - 2018‑09. Я установил Eclipse IDE для разработчиков Java EE, но есть много других установочных пакетов, включая возможность установить минимальный Eclipse SDK и добавлять плагины только по мере необходимости. Однако последний вариант не для слабонервных: несложно ввести конфликты между плагинами, которые на самом деле не  говорили о своей  несовместимости.

Мартин Хеллер

Поддержка расширяемых инструментов

Экосистема плагинов - одна из сильных сторон Eclipse, а также источник периодических разочарований. В настоящее время торговая площадка Eclipse содержит более 1600 решений, а плагины, предоставленные сообществом, могут работать или не работать, как рекламируется. Тем не менее, плагины Eclipse включают поддержку более 100 языков программирования и почти 200 фреймворков для разработки приложений.

Также поддерживается большинство серверов Java: если вы определяете новое соединение с сервером из Eclipse, вы попадете в список папок поставщиков, под которым вы найдете около 30 серверов приложений, включая девять версий Apache Tomcat. Коммерческие поставщики, как правило, объединяют свои предложения: например, в Red Hat JBoss Middleware есть только один элемент, который включает WildFly и EAP Server Tools, а также JBoss AS.

Редактирование, просмотр, рефакторинг и отладка

Первый опыт разработчика с Eclipse может сбить с толку и даже сбить с толку. Это связано с тем, что ваша первая задача - адаптироваться к концептуальной архитектуре рабочих пространств, перспектив и представлений Eclipse, функции которых определяются тем, какие плагины вы установили. Например, для разработки сервера Java вы, вероятно, будете использовать перспективы просмотра Java, Java EE и Java; вид проводника пакетов; перспектива отладки; команда синхронизации перспективы; веб-инструменты; перспектива развития базы данных; и перспектива отладки базы данных. На практике все это начнет обретать смысл, когда вы откроете нужные вам представления.

Часто в Eclipse есть несколько способов выполнить данную задачу. Например, вы можете просматривать код в проводнике проекта и / или в перспективе просмотра Java; какой выбрать - дело вкуса и опыта.

Поддержка поиска Java позволяет находить объявления, ссылки и экземпляры пакетов, типов, методов и полей Java. Вы также можете использовать быстрый доступ для поиска и использовать быстрые просмотры для всплывающих окон, например, схемы классов.