Подборка бесплатных кроссплатформенных сред для веб-разработки. Редактор или IDE? Очередная попытка анализа

15.05.2019

Представляем вашему вниманию адаптацию статьи Мартина Хеллера, программиста и редактора ресурса JavaWorld. Вы, вероятно, уже слышали о тройке самых популярных IDE для разработки на языке Java. Процентов 90 промышленных программистов пользуются либо Eclipse, либо NetBeans или же IntelliJ IDEA, и у каждой из этих IDE есть свои преимущества и недостатки. В этой статье мы постараемся описать их так, чтобы вы поняли, какая из них подходит именно вам. Хотя, конечно, лучше попробовать все три в работе, и выяснить, что лучше всего подходит именно вам. Этого не заменит ни один обзор. Я и ранее работал с этими IDE, но для этого исследования я установил IntelliJ IDEA Ultimate 2016.2, Eclipse Neon Java EE, и NetBeans 8.1 Java EE на ноутбук MacBook Pro. Я тестировал IDE на нескольких open source Java-проектах.

Чего ожидать от IDE

Современная IDE «здорового Java-разработчика» должна поддерживать Java 8, Scala, Groovy, а также другие языки виртуальной машины Java, которые тот регулярно использует. Не оказалась бы лишней и поддержка основных серверов приложений и наиболее популярных веб-структур, в том числе - Spring MVC, JSF, Struts, GWT, Play, Wicket, Grails и Vaadin. IDE должна быть совместима с любыми билдами систем контроля версий, например, Ant, Maven или Gradle, вместе с Git, SVN, CVS, Mercurial или Bazaar. Дополнительно для среды разработки важно уметь работать с базами данных и клиентским слоем вашего стека, обладать поддержкой встроенного JavaScript, TypeScript, HTML, SQL, JavaServer Pages, Hibernate, а также API Java Persistence. Наконец, логично надеяться на то, что IDE позволит редактировать, создавать, отлаживать и тестировать системы без лишнего напряжения. Идеально, если среда разработки поддерживает не только интеллектуальное автодополнение кода, но также интеллектуальный рефакторинг и метрики кода. Во многих случаях окажется не лишней поддержка фреймворков для тестирования и заглушек. Если ваша команда использует систему тикетов и CI/CD, нужно, чтобы IDE могла к ним подключиться. А еще решите, нужны ли вам развертывание и отладка в контейнерах и облаках. Мы перечислили только основные ожидания (возможно, вам есть, что добавить), а теперь присмотримся к нашим соперникам.

IntelliJ IDEA


IntelliJ IDEA с точки зрения возможностей и цены поставляется в двух вариантах: бесплатного Community edition, и платного Ultimate edition с расширенной функциональностью. Community edition предназначена для JVM- и Android-разработки. Бесплатная версия поддерживает Java, Kotlin, Groovy и Scala; Android; Maven, Gradle и SBT; работает с системами контроля версий Git, SVN, Mercurial и CVS. Ultimate edition приспособлена для веб- и enterprise-разработки. Эта версия IDE работает не только с Git, SVN, Mercurial и CVS, но также с Perforce, ClearCase и TFS; в ней вы сможете писать на JavaScript и TypeScript; естественно, есть поддержка Java EE, Spring, GWT, Vaadin, Play, Grails и ряда других фреймворков. И, конечно, не обошлось без SQL и инструментов для работы с базами данных. Идея, которой руководствуются разработчики этой IDE, формируя ценовую политику, заключается в том, что её коммерческая версия (Ultimate) займет свое место на компьютерах профессионалов, за счет чего их производительность повысится. Если Java-программист ежегодно зарабатывает $50 тысяч (или того больше), возврат потраченных на платную IDE IntelliJ IDEA инвестиций (500 долларов за годовую подписку) произойдет очень быстро за счет даже незначительного ускорения его работы. В последующие годы цена для бизнеса падает, для стартапов, фрилансеров она существенно ниже, а для студентов, учителей, Java-чемпионов и open source-разработчиков она и вовсе бесплатна. IntelliJ IDEA подкупает своим глубоким пониманием кода, умной эргономикой, встроенными функциями для разработки и поддержкой многих языков.
Рисунок 1. IntelliJ IDEA показывает количество предупреждений (warnings) и предположения, основанные на статистическом анализе Java-кода. Вы можете изучить предположения подробнее, кликнув на них, как показано на картинке; во многих случаях вы получите список с выбором и вариантами исправлений.

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

Подсветка синтаксиса и простое автодополнение кода - обычное дело для любых современных Java-редакторов. IDEA пошла дальше, предлагая «умное автодополнение». Этот термин означает, что среда разработки показывает список наиболее релевантных символов, применимых в данном контексте. Список символов зависит не только от контекста как такового, «общепринятого», но от стиля программирования разработчика, от того, насколько часто он использует те или иные операторы. «Завершение цепочки» и вовсе показывает список применимых символов, допустимых через методы или геттеры в текущем контексте. Кроме того, в случае со статическими членами или константами IDEA автоматически добавляет любые необходимые операторы импорта (import). Во всех случаях автодополнения, IDEA пытается угадать тип символа во время выполнения, уточнить свой выбор и даже применить приведение типов если необходимо. Код Java часто включает фрагменты из других языков в виде строк. IDEA может вводить код SQL, XPath, HTML, CSS или JavaScript в строковые литералы Java. В этом смысле IDE может проводить рефакторинг кода на нескольких языках. Например, если вы переименуете класс в JPA-отображении, IDEA обновит соответствующий класс сущностей и выражений JPA. Во время рефакторинга фрагмента кода, у разработчика возникает одно (вполне естественное) желание: чтобы все дубликаты этого кода также зарефакторились. IDEA Ultimate находит дубликаты и похожие фрагменты и также применяет к ним рефакторинг. IntelliJ IDEA анализирует код при загрузке и непосредственно при вводе. Она указывает на предполагаемые проблемы (как на нашем рисунке выше) и, по желанию, предлагает список вероятных быстрых правок к обнаруженным проблемам.

Эргономика


IntelliJ IDEA спроектирована так, чтобы не выбивать разработчика из состояния потоковой продуктивности, если он уже в него попал. Окно Project, показанное на первом рисунке слева, исчезает по простому клику мышки, чтобы программист мог сосредоточиться на окне редактора кода. На все действия, которые нужны во время написания кода, есть комбинации клавиш для их быстрого вызова, в том числе - определения символов во всплывающих окошках. Поначалу все эти комбинации сложно запомнить, но постепенно к ним привыкаешь, и только ими и пользуешься. Тем не менее, даже если программист не использует комбинации клавиш, как показывает практика, он привыкает к работе в IDEA легко и быстро. Хочется особо отметить отладчик IDEA: значения переменных отображаются непосредственно в окне редактора, рядом с соответствующим исходным кодом. При изменении состояния переменной, цвет подсветки также меняется.

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

IntelliJ IDEA обеспечивает единый интерфейс взаимодействия с большинством систем контроля версий, включая Git, SVN, Mercurial, CVS, Perforce и TFS. Вы можете управлять изменениями непосредственно в IDE, что очень удобно. Когда я тестировал IDEA, у меня возникало желание, чтобы последнее изменение в исходном коде показывалось в окне редактора в виде аннотации (как это происходит, например, в Visual Studio). Как оказалось, у IDEA есть для этого специальный плагин. Также IDEA оснащена инструментами для сборки, средой выполнения тестов, инструментами покрытия (coverage tools) и встроенным терминальным окном. У IntelliJ нет собственного профайлера, но с помощью плагинов к ней можно подсоединить сторонние. Например, YourKit, созданный бывшим ведущим разработчиком JetBrains или VisualVM (это переупакованная версия профайлера NetBeans). Отладка в Java может быть мучительной, когда происходят всякие загадочные вещи с классами, исходников которых у вас нет. В комплект IDEA входит декомпилятор для таких случаев. Серверное программирование на Java предполагает частое взаимодействие с базами данных, так что программисты IDEA версии Ultimate оценят удобство инструментов для работы с SQL и БД. Но если кому-то их возможностей будет мало, можно приобрести версию IDEA Ultimate с встроенной SQL IDE (DataGrip). Правда, это будет несколько дороже, чем обычная подписка IDEA Ultimate. IntelliJ IDEA поддерживает все основные серверы приложений JVM, и позволяет разворачивать и проводить отладку на этих серверах, что нивелирует хорошо знакомые всем программистам Java Enterprise трудности. IDEA также поддерживает Docker (с помощью плагина, который добавляет к среде разработки специальное окно инструментов Docker. К слову, плагинов у IDEA - просто море.

Настоящий полиглот

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


Eclipse долгие годы уверенно держал пальму первенства по популярности среди Java IDE. Эта среда полностью бесплатная, с открытым исходным кодом, написанным преимущественно на Java. Тем не менее, её модульная архитектура позволяет использовать Eclipse и с другими языками. Проект Eclipse, инициированный IBM, появился в 2001 году. Им хотели заменить семейство сред разработки IBM Visual Age, основанных на Smalltalk. Ну а главной целью, о чем даже название говорит, было затмить Microsoft Visual Studio (eclipse по-английски означает затмение). Портативность Java помогает Eclipse быть кроссплатформенной средой: эта IDE работает на Linux, Mac OS X, Solaris и Windows. Хорошо это или плохо, Java Standard Widget Toolkit (SWT), по крайней мере частично, отвечает за внешний вид Eclipse. Своей производительностью (или, как говорят некоторые доброжелатели, её отсутствию) Eclipse обязана JVM. Eclipse работает довольно медленно, поскольку упирается корнями в довольно старое «железо» и древние версии JVM. Даже сегодня она кажется медлительной, особенно если нацепить на неё много плагинов. Часть расходов ресурсов Eclipse можно отнести на счёт её встроенного инкрементного компилятора, который запускается всякий раз при загрузке файла или обновлении кода. Полезная штука, именно она ловит ошибки при вводе текста. Независимо от сборки, проект Eclipse поддерживает модель контента, которая содержит информацию об иерархии типов, ссылок и объявлениях Java-элементов. Текущая версия Eclipse носит имя Neon (4.6.0). Я инсталлировал Eclipse Java EE IDE для веб-разработчиков (это далеко не единственная опция, вы можете выбрать что-то ещё). Он содержит минимальную Eclipse SDK, а плагины добавляются по требованию. К слову, работа с плагинами в этой IDE - не для слабонервных. Сторонние плагины часто конфликтуют между собой, хотя в их официальной спецификации об этом ничего не сказано.
Рисунок 2. Слева направо расположены четыре панели инструментальных средств Eclipse: Проводник пакетов, редактор Java, структура классов Java и список задач. Проект, загруженный в Eclipse на этом рисунке - JUnit test framework. Панели можно легко поменять местами.

Поддержка плагинов

Экосистема плагинов Eclipse - это одновременно сильная сторона этой IDE и одна из главных её проблем. Именно из-за несовместимости плагинов порой падают целые сборки, и программистам приходится начинать работу сначала. В настоящее время для Eclipse написано более 1700 плагинов, официальных и неофициальных, которые могут работать отлично, а могут из рук вон плохо. Плагины Eclipse, поддерживают более 100 языков программирования и почти 200 фреймворков для разработки приложений. Большинство серверов Java также поддерживаются: если вы обозначите новое соединение с сервером из Eclipse, вы попадете в список папок производителей, где найдете около 30 серверов приложений. Только вариантов Apache Tomcat будет целых девять штук. Коммерческие производители, как правило, собирают свои решения вместе: например, есть только один пункт Red Hat JBoss Middleware, а уже внутри вы найдете WildFly и инструменты EAP-сервера, а также JBoss AS.

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

Первый опыт работы с Eclipse, может привести в замешательство, и даже сбить с толку. Поначалу необходимо настроить Eclipse и привыкнуть к её концептуальной архитектуре рабочих пространств, ракурсов и видов. Всё это определяется плагинами, которые вы установили. Для серверной разработки на Java, вы, вероятно, будете использовать ракурсы Java, Java EE и Java browsing, вид, отображающий структуру пакета (Package Explorer), ракурс отладки, ракурс командной синхронизации веб-инструментов, ракурс разработки баз данных и ракурс отладки базы данных. На практике все обретает смысл, когда вы откроете нужные вам окна. Eclipse практически всегда предлагает несколько способов решения той или иной задачи. Например, вы можете просматривать код с помощью ракурса просмотра Java (Java browsing perspective). Что выбрать - дело вкуса и выбора. Специальный поиск Java позволяет найти объявления, ссылки и вхождения Java-пакетов, типов, методов, полей. Вы также можете использовать быстрый доступ к поиску и предпросмотр. Распространенные паттерны кода можно сгенерировать из шаблонов кода. Рефакторинг Java в Eclipse, поддерживает 23 операции, начиная от общепринятых операций по переименованию и заканчивая менее очевидными преобразованиями (как в книге Мартина Фаулера). Eclipse, поддерживает отладку как локально, так и удаленно, при условии, что вы используете JVM, которая поддерживает удаленную отладку. Отладка довольно стандартна: вы определяете контрольные точки, а затем просматриваете переменные в закладке отладки. Конечно, можно пошагово выполнять свой код и вычислять выражения. У Eclipse - обширнейшая база документации самого разного возраста, ценности и полезности. Увы, обнаружить несоответствующую текущей версии картинку в инструкции, например, с устаревшим интерфейсом и расположением кнопок - обычное дело для этой IDE. К сожалению, проблема запоздалого обновления документации очень характерна для любых проектов с исходным кодом.


NetBeans появилась как студенческий университетский проект в Праге в 1996 году. В 1997 году IDE стала коммерческим продуктом, а в 1999 году её выкупила компания Sun Microsystems (родители Java) и уже на следующий год представила open source-релиз. Актуальная версия 8.1 работает на машинах под управлением ОС Windows, Mac OS X, Linux и Solaris. Ну а пакет portable можно запустить на любых системах, для которых существует Java-машина. Себе я загрузил Java EE bundle, это один из шести возможных пакетов загрузки. Этот бандл поддерживает JavaScript и HTML, GlassFish и Tomcat, но не поддерживает PHP, C/C++/Fortran, Groovy и Grails: их можно получить в пакете «Всё включено» (или просто «All»). Тем не менее, при желании, я в любой момент смогу загрузить поддержку вышеназванных языков, выбрав соответствующий плагин (да и любой другой). Их у NetBeans поменьше, чем у Eclipse, зато они обычно не конфликтуют друг с другом. Этой осенью Oracle (ей NetBeans досталась после поглощения Sun Microsystems) решила передать эту среду разработки под крыло Apache Software Foundation вместе со всеми правами, исходными кодами, торговой маркой, доменом "netbeans.org" и рядом других элементов инфраструктуры. Посему, будущее проекта пока туманно, хотя раньше у системы были определенные родственные привилегии. Так, именно NetBeans первой получила поддержку Java 8 практически сразу после выхода обновленной платформы, и была названа «официальной IDE для Java 8». Впрочем, через месяц после выхода это преимущество было утеряно: именно тогда другие IDE также получили поддержку восьмой Java. Тем не менее, хочу отметить, поддержка Java 8 в NetBeans действительно хороша, и эта IDE отлично подходит для вплетения в «старый» код трюков восьмой версии. Её редакторы, анализаторы кода и конвертеры помогут программисту провести апгрейд кода, используя в нем конструкции, характерные для Java 8 - лямбда-выражения, функциональные операторы и ссылки на методы. Плагины JavaScript в NetBeans 8 отлично справляются с поддержкой Node.js и новейших инструментов JavaScript, таких как Gulp и Mocha, равно как и поддержку интерпретатора JavaScript Nashorn.
Рисунок 3. Здесь NetBeans работает с тем же проектом на основе Maven, что и IntelliJ IDEA был открыт на рисунке 1. Обратите внимание на расширенную функциональность в контекстном меню и подменю рефакторинга

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

Редактор NetBeans поддерживает языки, обнаруживает ошибки в то время, когда вы печатаете, и помогает вам с помощью всплывающих подсказок и «умным» автодополнением кода. По субъективному ощущению IDE справляется с этой задачей быстрее, чем Eclipse, но несколько медлительнее IntelliJ IDEA. Кроме того, NetBeans обладает полным спектром инструментов рефакторинга (что показано на рисунке 3), которые позволяют программисту реструктуризировать код, не ломая его, выполнять анализ исходников, а также предлагает широкий набор подсказок для быстрых исправлений или расширения кода. В состав NetBeans входит инструмент проектирования для графического интерфейса пользователя Swing, ранее известный как "Project Matisse". Разработчики высоко оценивают средство автоматизированного рефакторинга Inspect & Transform, появившееся в версии NetBeans 7.1. Оно позволяет провести анализ кода проекта и сделать предлагаемые улучшения. Хотя лично я предпочитаю сначала проверить весь собственный код unit-тестами, и только затем запускать инструменты, которые могут внести радикальные изменения. Я неоднократно страдал от всяческих автоматических исправлений, которые привели к невосполнимым последствиям.

Сборка, отладка и профилирование

У NetBeans есть отличная встроенная поддержка Maven и Ant, а также плагина для Gradle. Я очень обрадовался, когда обнаружил, что проекты Maven воспринимаются системой как «родные». Это означает, что их можно просто открывать, а не импортировать. NetBeans также содержит привлекательное (и полезное) графическое отображение для зависимостей Maven. Отладчик Java NetBeans неплох, но с оговорками. Отдельный визуальный отладчик позволяет программисту делать снимки экрана пользовательского графического интерфейса и изучать интерфейсы приложений, выполненных с помощью JavaFX и Swing. Профайлер NetBeans делает более очевидным то, каким образом используется процессор и память, и обладает отличными инструментами для поиска утечек памяти.

Сравнение тройки гигантов

Я использовал все три IDE, Eclipse, NetBeans и IntelliJ IDEA, в течение многих лет в указанном хронологическом порядке. Всякий раз после перехода на другую IDE я чувствовал, что моя продуктивность повышается. Но даже когда я был твердо уверен, что мой окончательный выбор - IDEA, мне порой приходилось возвращаться к одной из двух оставшихся IDE. Так было, например, в то время, когда Eclipse была единственным инструментом, который поддерживал разработку под Android (сегодня есть Android Studio, текущая официальная IDE для Android, она основана на IntelliJ IDEA). Конечно, все три интегрированные среды разработки имеют своих поклонников и противников. Я знаю множество Java-разработчиков, которые обожают IntelliJ IDEA, равно как и лояльные фанаты Visual Studio C++ и C#. Чаще всего эти люди рады тому факту, что их продуктивность возросла, и стоимость годовой подписки возвращается всего за несколько недель использования платной версии IDEA. Однако пользователи NetBeans и Eclipse также зачастую привязаны к своим инструментам и недоумевают, почему другие программисты готовы платить деньги за IDEA. Начинающим Java-разработчикам я бы советовал держаться подальше от Eclipse. Невзирая на то, что это всё еще самая популярная IDE для Java, новичкам с ней тяжело: заблудиться в дебрях Eclipse легко, причем и во время развертывания системы, и во время выполнения повседневной работы. У Eclipse - самая развернутая экосистема плагинов среди всех IDE, а также наибольшая вероятность «слететь» из-за установки несовместимого набора этих самых плагинов. К сожалению, за время использования Eclipse, я неоднократно должен был удалять очередную поломанную сборку этой IDE и инсталлировать «чистый» бандл. NetBeans хорошо подходит для большинства разработчиков, у неё отличный профайлер, и я порой его использую. Однако предпочитаю заплатить за IntelliJ IDEA Ultimate. Да и будущее NetBeans пока туманно. Для начинающих Java-разработчиков, у которых пока нет средств для покупки инструментария, я рекомендую использовать NetBeans или IntelliJ IDEA Community Edition в зависимости от их задач. Первую стоит выбирать тем, кто занимается кодированием серверов Java, но только если вы не попадаете в категорию тех, кто может получить IntelliJ IDEA Ultimate бесплатно или с огромной скидкой (студенты или те программисты, которые разрабатывают проект open source).

«Легкие» Java IDE

Сегодня большинство Java-разработчиков используют IDEA, NetBeans или Eclipse, но порой возникает необходимость в более «легких» средах разработки или даже в редакторах кода наподобие Sublime Text, emacs или vim, которые поддерживают плагины Java. Ниже я перечислил разумные варианты для тех, кто ищет что-то полегче:
  • DrJava - небольшая бесплатная среда разработки. Её создали для студентов Университета Райса, и она стала довольно популярной: DrJava загрузили уже более 2 млн раз. DrJava призвана развивать разработку, основанную на тестировании (test-driven development). Среда содержит «умный» редактор кода, панель взаимодействия для оценки кода приложения, отладчик уровня источника и инструменты модульного тестирования.
  • BlueJ бесплатная среда разработки на Java, созданная специалистами Кентского университета для начинающих программистов. Эта среда поддерживается Oracle. BlueJ отличается гораздо более лаконичным и простым интерфейсом, чем профессиональные IDE, такие, как NetBeans или Eclipse, и даже содержит специальный учебник по основам ООП.
  • JCreator - ещё одна небольшая Java IDE для Windows, написанная на C++ (из соображений увеличения производительности). Платная версия Pro оснащена отладчиком, поддержкой Ant и code wizards, ну а бесплатная версия (LE) - нет.
  • Eclipse Che - браузерная облачная IDE, поддерживает Java, C++, JavaScript, Python, PHP, Ruby и SQL.

Выбор Java IDE в зависимости от проекта

Я постарался описать важные преимущества каждой из трех самых значительных Java IDE и вскользь упомянул об их полезных маленьких соперниках. Чтобы правильно выбрать IDE нужно взвесить все «за» и «против» и сопоставить их с вашими потребностями и потребностями ваших проектов. Если вы присоединяетесь к команде, будет целесообразно использовать ту же IDE, что и другие разработчики, хотя это и не обязательно. Если ваша команда размещает исходники на GitHub, естественно, будет удобнее, если ваша IDE поддерживает GitHub. Да, вы можете справиться с передачей кода и без IDE, используя клиент GitHub или командную строку git. Но насколько эффективными будут такие вот прыжки между разными системами? Также важно, чтобы IDE поддерживала систему сборки. Например, если это Maven, вряд ли вы захотите пересобрать систему в Ant для локального тестирования. К счастью, все три большие Java IDE поддерживают и Ant, и Maven, и Gradle, либо из коробки, либо с плагином. А вот для «маленьких» IDE это может оказаться неверным. Вполне естественным желанием является поддержка средой разработки версии JRE, которая используется в проекте. При несоответствии версий велика вероятность получить массу лишних багов, которые, например, у вас проявятся, а у других членов команды - нет. Вряд ли такая ситуация хорошо отразится на вашей карме. Откровенно говоря, несоответствие JRE чаще появляется при ошибках в конфигурации, чем при отсутствии поддержки IDE за исключением тех случаев, когда IDE еще не успела обновиться до новой версии Java. Просто поверьте: если ваша IDE полностью поддерживает фреймфорки и технологии, которые используются в проекте, это действительно помогает ускорить работу. Вы, скорее всего, и так справитесь. Но, если, IDE понимает, каким образом JPA statements относятся к классам сущностей и выражений JPA (как IntelliJ), на связанный с JPA код вы потратите гораздо меньше времени чем в случае тотального непонимания. Ну а если IDE поддерживает фреймворк для тестирования и используемый для проекта исполнитель кода, вы сможете проводить тесты, не меняя рабочую среду. Что тоже ускорит процесс разработки. Наконец, работа идет быстрее, если IDE совместима с системой отслеживания ошибок и тикет-системой проекта. Снова-таки, вы можете воспользоваться автономным или веб-клиентом, скажем, JIRA, но сложно не согласиться с тем, что проверять тикеты гораздо быстрее не меняя окно, оставаясь непосредственно в IDE.

Бесплатная или платная?

После тестирования именно от IntelliJ IDEA Ultimate у меня возникло ощущение правильной среды разработки. Этакого Кадиллака мира IDE. Повторюсь: хоть она и не бесплатна, я считаю, что прирост производительности от её использования стоит годовой подписки. Для начинающих, которые не могут себе позволить годовую подписку IntelliJ IDEA Ultimate, я рекомендую использовать NetBeans, а не Eclipse. Конечно, экосистема плагинов Eclipse сегодня развита куда больше, чем у любой другой IDE, однако она очень заросшая и неухоженная: начинающий разработчик рискует увязнуть в дебрях IDE вместо погружения в работу. Я также коснулся «облегченных» альтернатив, две из которых были разработаны специально для учебных целей. Что ж, если вы только-только начинаете изучать языки и вам предпочтительнее минималистичная среда - почему бы и нет?

Мы постарались объять необъятное, вспомнив несколько наиболее популярных и универсальных сред разработки. Опыт получился не слишком удачным, поэтому в этот раз мы сконцентрируемся только на одном языке, а именно Java. Если вы только начинаете знакомиться с ним, рекомендуем пройти .

Учредив 7 номинаций, субъективно определим лучшие из лучших:

Лучшая бесплатная IDE: NetBeans

NetBeans - мощнейшая среда разработки с открытым исходным кодом, ориентированная на интернет, мобильные и настольные приложения. Работает с Linux, Windows, MacOS и даже Oracle Solaris.

Несмотря на то, что NetBeans позволяет работать на нескольких языках, в среде разработчиков она считается Java-ориентированной. Она прекрасно взаимодействует с JPA, JSP, Struts, Spring и библиотекой Hibernate.

Лучшая коммерческая IDE: IntelliJ IDEA

По правде говоря, IntelliJ IDEA распространяется в двух версиях, одна из которых совершенно бесплатная - Free Community Edition. Причём для начинающего разработчика данного пакета хватит с головой. В частности, IDE Android Studio, речь о которой пойдёт чуть позднее, основана именно на этой версии.

В платной же версии вы получаете поддержку фреймворков Spring (Spring MVC framework, Spring Security, Spring Boot, Spring Integration и т. д.), Node.js, Angular React, Grails, возможность использовать дополнительные языки (javascript, typescript, coffeescript) и взаимодействовать почти со семи популярными серверами (Tomcat, TomEE, GlassFish, JBoss, WildFly, Weblogic, WebSphere, Geronimo, Virgo и т. д.).

Самая популярная IDE: Eclipse

Точную цифру привести практически невозможно, но практически любой Java-разработчик с опытом работы более 2 лет сталкивался с этой IDE. Победителем в этой номинации Eclipse удалось стать благодаря большому сообществу, тонне полезной информации и бесчисленному количеств плагинов. Как и с предыдущими экземплярами, Eclipse поддерживает несколько языков, но воспринимается как приверженец Java.

Cамая универсальная IDE: JDeveloper

Ещё один продукт от Oracle с массой преимуществ, среди которых поддержка системы контроля версий и облачного сервиса Oracle, он упакован SQL Developer, PL / SQL обработчиком запросов, WebLogic Server, редакторами HTML, CSS, JavaScript, JSF, JSP, WSDL и ещё огромным количеством всевозможных полезностей.

Лучшая для Android: Android Studio

Было бы странно, если победителем в этой номинации стала какая-нибудь другая IDE. Помимо всех возможностей, который вам дарит исходная IDE IntelliJ IDEA, Android Studio включает в себя немало надстроек от Google, как чисто визуальных (макеты, форматы, GPU профайлер), так и функциональных (JUnit 4 и Firebase Test Lab для тестирования и отладки, система сборки Gradle, Instant Run).

Лучшая IDE для обучения: DrJava

Именно к такому выводу пришла команда разработчиков под названием JavaPLT, представляющие университет Райса. Оно и неудивительно, учитывая, что DrJava - их детище. Впрочем, оставив шутки в стороне, стоит признать, что DrJava действительно прекрасно подойдёт новичкам, ведь данная IDE даже не ставит своей целью соперничество с выше названными. Главное её преимущество - предельно быстрая настройка и переход к непосредственному написанию кода. В качестве конкурентов можно на схожих условиях рассмотреть BlueJ, JGrasp и Greenfoot.

Самая перспективная IDE: MyEclipse

Приветственная надпись на странице скачивания гласит “The best Java EE IDE enhanced for the full stack developer”. Что ж, это весьма нескромно, совсем не подкреплено фактами, но по правде говоря - недалеко от истины. В сущности, MyEclipse - это Eclipse, где всё изначально “привинчено”, “допилено” и ещё немного расширено. К услугам разработчика предлагается несколько версий, две основные - стандартная и профессиональная. Стандартная - это как раз Eclipse в новой оболочке, а Professional содержит мобильный веб-симулятор, редактор картинок, UML-редактор, шаблоны, надстройки - в общем, всё, что сделает создание продукта значительно проще.

А чем пользуетесь вы?

Подбор удобного инструмента - одна из главных задач программиста. И первым делом это касается среды разработки. IDE отличается от простого редактора кода 4 вещами:

  • Поддержка большого числа языков программирования. Как правило, всех в рамках направленности (веб, мобайл, десктоп).
  • Наличие компилятора, интерпретатора для преобразования творений в машинный код.
  • Встроенные утилиты для автоматизации процесса: библиотеки, шаблоны, сниппеты и т. д.
  • Дебаггер для обнаружения ошибок, опечаток и прочих опасностей.

Для новичка в программировании может хватить редактора, который использует 1−2 языка, а ошибки ловить лучше в ручном режиме, чтобы видеть их последствия.

Но как только вы выходите на путь «взрослой» разработки, без хорошей IDE не обойтись. И хорошо, чтобы она была бесплатной. Вот подборка 9 субъективно лучших:

NetBeans

Платформа: Windows/Mac/Linux

Описание: NetBeans - кроссплатформенная open-source IDE, предназначенная для работы на Java, но поддерживающая Python, JavaScript, Ruby, C, C++, Ada, PHP, HTML, CSS, XML, Groovy. Среда позволяет работать во всех трех направлениях разработки.

Eclipse

Платформа: Windows/Mac/Linux

Описание: Ещё одна популярная IDE, не имеющая привязки к ОС, и с помощью надстроек поддерживающая до 25 языков программирования. Вообще количество подключаемых библиотек делает Eclipse одной из самых функциональных IDE.

Microsoft Visual Studio Express

Платформа: Windows

Описание: Урезанная, но бесплатная версия Visual Studio. Для новичка её возможностей хватит с головой:

  • Система автодополнения IntelliSense.
  • Поддержка C/C++/C#/Python/Ruby/VB.NET/JavaScript/HTML/CSS/XML.
  • Поддержка систем контроля версий Git и TFS.
  • Интеграция с Azure.

CodeLite

Платформа: Windows/Mac/Linux

Описание: Кроссплатформенная IDE для разработки ПО на C/C++, PHP и Node.js. Несмотря на свою минималистичность, все базовые потребности разработчика она удовлетворит.

Code::Blocks

Платформа: Windows/Mac/Linux

Описание: 3 главные фишки Code::Blocks:

  • Поддержка большого числа компиляторов, среди которых MinGW/GCC, Watcom, Clang, Digital Mars C/C++, и отладчиков GNU GDB и MS CDB.
  • Инструмент wxSmith для быстрой разработки приложений (RAD).
  • Основная библиотека wxWidgets упрощает разработку графического интерфейса в приложениях.

Qt Creator

Платформа: Windows/Mac/Linux

Описание: Qt Creator специализируется на работе с C, C++ и QML, поддерживает те же самые компиляторы и отладчики, что и Code::Blocks. Работает со всеми популярными системами контроля версий: Subversion, Mercurial, Git, CVS, Bazaar, Perforce.

Aptana Studio

Платформа: Windows/Mac/Linux

Описание: Без подключения библиотек Aptana может работать только с JavaScript, HTML и CSS. С ними поддерживает PHP, Python и Ruby. Также Aptana подключается к Eclipse в качестве плагина, что делает её еще более полезной для новичка.

WebScripter

Платформа:Mac

Описание: WebScripter - простая и понятная IDE «яблочных» веб-разработчиков. Не развивается уже лет 5, но для старта хватит встроенных редактора, отладчика и дебаггера.

PSPad

Платформа: Windows

Описание: Редактор кода, поддерживающий более 30 языков программирования, в том числе COBOL и Pascal. Имеет возможность подключения внешнего компилятора и дебаггера, что превращает PSPad в настоящую IDE.

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

Какой выбор сделали вы?

Компилятор преобразует исходный код (файлов *.с, *.cpp) в работающую программу. Если у вас нет компилятора, необходимо его установить, прежде чем начать программировать. Есть много компиляторов, которые доступны в Интернете для скачивания. Если вы являетесь пользователем Mac OS X, Linux или других *nix систем (например, Unix или FreeBSD), вероятно, у вас уже установлены компиляторы, такие как GCC или G++.

Основные понятия

Компилятор — программа, транслирующая исходный (высокоуровневый) код программы в конечный (низкоуровневый) код.
Компиляция — процесс преобразования высокоуровневого исходного текста программы, в эквивалентный текст программы, но уже на низкоуровневом языке.
Компоновщик (Линкер) — программа, которая генерирует исполнимый модуль путём связывания объектных файлов проекта.
IDE (Интегрированная среда разработки) — сочетание текстового редактора и компилятора. Разработка, компиляция и запуск своих программы осуществляется непосредственно в IDE. Интегрированные среды разработки упрощают процесс составления программ, так как написание кода компиляция и запуск программ выполняются в одной программе — IDE. Ещё одной важной особенностью IDE является то, что IDE помогает быстро найти и исправить ошибки компиляции.

Понимание процессов компиляции

Процессы компиляции и компоновки — краткое описание того, что именно происходит, когда вы компилируете программу.
Ошибки компиляции , в некоторых строках компилятор находит ошибки, которые нужно ликвидировать.
Предупреждения компилятора — что такое предупреждения компилятора, как и почему их устраняют.
В чём разница между объявлениями и определениями в С/C++ . Узнайте разницу между объявлением и определением в Си/C++, и почему это так важно.

Выбор компиляторов (IDE)

Для ОС Windows:
Code::Blocks с Mingw — рекомендуемая нами, бесплатная IDE! Code::Blocks также доступна на Linux. Посмотреть, как установить эту IDE можно в нашей статье Установка Code::Blocks и MINGW.
Microsoft Visual C++ — читайте о Visual C++. Руководство по установке Microsoft Visual Studio 2012

Связано с выбором рабочего окружения - IDE (integrated development environment / интегрированной среды разработки). Особенно важно это для тех, кто впервые сталкивается с программированием, поскольку выбор IDE может оказать существенное влияние на их рабочий процесс.

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

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

По своей функциональности NetBeans является наиболее простой и интуитивно понятной средой разработки для Java из тройки лидеров. Без сомнения можно рекомендовать ее для тех, кто впервые сталкивается со средами разработки и языком программирования Java. Среди отличительных черт этой IDE можно выделить оптимальную настройку среды «из коробки». Установив данную среду, пользователь получает отличные настройки компилятора и самой среды разработки, интерфейс без лишних иконок и пунктов меню, присутствуют лишь наиболее востребованные и часто используемые функции. Впоследствии, естественно, можно настроить интерфейс под себя. Можно отметить также удобную реализацию выполнения задач, все меню очень хорошо структурированы, имеют понятные названия. Отдельно можно отметить легкость работы с NetBeans из-за отсутствия необходимости бродить по бесконечным меню и всплывающим окнам, чем страдают многие другие среды разработки. В большинстве случаев при общении пользователя со средой NetBeans автоматически предлагает оптимальные параметры для работы. Таким образом, даже если начинающий пользователь не до конца понимает, о чем его спрашивает среда, нажимая «ОК», навредить своей работе почти невозможно. Установка дополнительных компонентов среды / плагинов (plug-in) производится в один клик. Имеется хорошая поддержка систем контроля версий (VCS, version control system), а также простая в использовании подсистема разработки графического пользовательского интерфейса (GUI, graphical user interface). NetBeans доступен .

Подводя итог, можно охарактеризовать NetBeans IDE как интуитивно понятную и простую в использовании среду разработки. Начиная работать с NetBeans, в нем легко разобраться, а также легко научиться пользоваться этой средой на продвинутом уровне. Кроме того, стиль взаимодействия NetBeans с пользователем таков, что позволяет быстро освоить и сам язык Java, если пользоваться встроенными в среду подсказками, будь то документация Javadoc или рекомендации по исправлению допущенных/потенциальных ошибок.

Eclipse - первоначально созданная IBM интегрированная среда разработки, находящаяся среди лидеров с момента своего появления. Eclipse, однако, заточен не только под Java, а является средой общего назначения Eclipse Platform, что сказывается на его функциональности. Наиболее подходящая для работы с Java сборка среды Eclipse доступна под названием ""Eclipse IDE for Java Developers"".

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

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

IntelliJ IDEA, созданная компанией JetBrains, была первой созданной полноценной интегрированной средой разработки. В отличие от вышеописанных IDE Intellij IDEA доступна в бесплатной Community Edition версии и платной - Ultimate. Для начинающего разработчика бесплатная версия содержит весь необходимый функционал и может рассматриваться как полноценная IDE.

Сейчас IDEA получает все больше и больше сторонников и положительных отзывов, являясь, как и говорит ее слоган «умной» средой разработки. Intellij IDEA крайне понятна, проста в использовании, поддерживает большинство современных технологий, имеет одну из самых удобных систем по работе с контролем версий. В ней полностью отсутствует какая-либо перегруженность: минимум диалоговых окон и только необходимая информация выводятся пользователю. Существует обширная система горячих клавиш, позволяющих быстро выполнять большое число нетривиальных функций. По уровню удобства работы с IntelliJ IDEA определенно стоит на уровень выше конкурентов, поскольку будучи «умной» средой, она всегда знает намерения пользователя, подсказывая/помогая ему в работе и экономя большое количество времени и сил. Как таковых минусов у IntelliJ IDEA нет, для новичка, однако, сложность может представлять система разработки GUI, поскольку потребует от пользователя хотя бы минимального набора знаний о построении GUI в Java.

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

Похожие статьи