Священная война
Есть «вечные» вопросы, на которые нет однозначного правильного ответа. Например, что лучше: Windows или Linux, Java или C #; кто сильнее, Чак Норрис или Ван Дамм.
Одним из таких священных войн является выбор лучшей Java IDE:
Существует много споров по этой теме, обсуждая, какие из них имеют больше плагинов, ярлыков и так далее. Существует так много различий, что трудно решить, какие из них являются наиболее важными. В результате люди обычно утверждают, что обе IDE равны по своим возможностям, и выбор одного из них — дело вкуса.
Я утверждаю, что это не просто вопрос вкуса. Есть объективные причины, почему
Intellij IDEA (как Java IDE) определенно
лучше, чем
Eclipse .
Я не буду сравнивать множество крошечных различий , таких как плагины, ярлыки и т.д. — есть много сообщений в блоге на эту тему, как этот: [ часть 1 ] [ часть 2 ] [ часть 3 ]. Я собираюсь показать только одно существенное различие между IDEA и Eclipse. Как правило, ни фанаты IDEA, ни Eclipse не знают этого. Первые привыкли к этому и не могут представить, что IDE может пропустить это. Вторые жили без него и не могут представить, что IDE может делать такие вещи. Более того, пользователи Eclipse обычно не замечают этой разницы, пытаясь использовать IDEA для развлечения, просто потому, что раньше они работали «в режиме Eclipse».
Почему я так уверен?
Прежде чем начать, позвольте мне объяснить, кто я и почему стоит прислушиваться к моему мнению.
Я работаю над Eclipse 5 лет, я очень хорошо это знал, я написал для него плагины и искренне любил Eclipse. Затем я перешел в другую компанию и был вынужден перейти на IDEA. Пережив серьезный разрыв, я наконец понял, почему IDEA круче. И теперь я работаю над IDEA в течение нескольких лет. Так что я хорошо знаю обе среды и могу сравнить их.
Основное различие между IDEA и Eclipse
Основная причина, почему IDEA круче: IDEA чувствует контекст . Именно это имеют в виду сотрудники JetBrains, когда называют IDEA умным . Что это на самом деле означает? IDEA индексирует весь ваш проект, анализирует все, что у него есть, и даже создает синтаксическое дерево. Благодаря этому, в любое время, куда бы вы ни поместили курсор, IDEA знает, где вы находитесь и что там можно сделать.
Все еще не ясно? Не волнуйтесь, это станет ясно из следующих примеров.
Эта способность понимать контекст выражается многими, многими способами, вот только некоторые.
1. Отладка
Как часть процесса отладки, мы часто хотим оценить некоторое выражение, чтобы увидеть его значение. В Eclipse вам нужно выбрать это выражение. Важно точно выбрать все выражение, иначе Eclipse не сможет его оценить. Теперь вы нажимаете Ctrl + Shift + I и видите значение выражения.
С IDEA вам не нужно ничего выбирать. Вы просто помещаете курсор в любое место внутри вашего выражения (у метода hasAttribute в данном случае) и нажимаете Alt + F8. IDEA понимает, какое выражение вам, вероятно, нужно, и показывает диалоговое окно, предлагающее несколько возможных вариантов выражения. Вы также можете редактировать и сразу же оценить выражение в этом диалоговом окне. Очень удобно! Попробовав эту функцию, вы больше не сможете отлаживать в Eclipse.
Оказывается, обе IDE в принципе позволяют делать одно и то же. Но с IDEA это намного проще и быстрее. Я серьезно, разница огромна — это просто небо и земля. В этом небольшом диалоговом окне IDEA обеспечит автозаполнение, подсветку синтаксиса и все, что вам нужно.
2. Автозаполнение
Автозаполнение — это то, что отличает любую IDE от блокнота. В этой области чувство контекста дает IDEA качественное преимущество. Например, мы начали писать строку кода:
assertElement(By.id("errorMessage"), vi
и теперь мы хотим выяснить, какие у нас есть варианты: что может начинаться с букв «vi».
Что делает IDEA? Не ожидая каких-либо нажатий клавиш, он сразу понимает, что метод assertElement хочет экземпляр класса Condition в качестве второго параметра, и в классе Condition есть статическая переменная с видимым именем. И IDEA немедленно предлагает единственный действующий вариант:
А что делает Eclipse? Увы, не понимает контекст. Он не знает, что курсор находится там, где должен располагаться второй параметр метода assertElement. Поэтому, когда вы нажимаете священные клавиши Ctrl + Space, Eclipse просто показывает все во Вселенной, которое начинается с букв «vi»:
В красивом всплывающем окне мы видим много хорошо выделенной и хорошо документированной бесполезной информации. ?
3. Рефакторинг
Профессиональные программисты могут быть продуктивными, используя рефакторинг, предоставляемый их IDE. Все современные IDE предлагают очень впечатляющий набор рефакторингов. Но с другой стороны, рефакторинги IDEA разумны . Они понимают, что вы хотите, и предлагают различные варианты, которые подходят для большинства ситуаций.
Например, предположим, у нас есть метод assertErrorMessageIsHidden:
public void assertErrorMessageIsHidden() {
assertElement(By.id("errorMessage"), Condition.visible);
}
и мы хотим, чтобы String «errorMessage» был параметром этого метода.
Начнем с ИДЕИ. Поместите курсор в любое место внутри строки «errorMessage», нажмите Ctrl + Alt + P (что означает «параметр»), и IDEA предлагает, какое выражение мы, вероятно, могли бы извлечь для параметра:
Как только выражение «errorMessage» выбрано, IDEA предлагает несколько возможных имен для этого параметра.
Вау каждый месяц
Вы будете удивлены много-много раз тем, как умно ведет себя IDEA, предлагая варианты названия чего-либо. Он учитывает имя метода, тип переменной и даже значение, а также имена таких переменных в других местах, а также те имена, которые вы дали такую переменную ранее — за исключением того, что ваш знак зодиака игнорируется. Поверьте, вы скажете: «Ух ты, ИДЕЯ тоже может делать такие вещи?» по крайней мере, один раз в месяц.
А теперь давайте посмотрим, что предлагает Eclipse.
Не забудьте: выделите все выражение «errorMessage» (всегда с кавычками, или получите дикое сообщение «Необходимо выбрать выражение, чтобы активировать этот рефакторинг»), выберите рефакторинг «Ввести параметр» (в меню нет горячей ключ) и получите примерно такой же результат. Тем не менее, Eclipse не предлагает варианты для имени параметра, но спасибо за это.
Заключение
Если мы выбираем Java IDE, то Intellij IDEA определенно лучше, чем Eclipse. Это не просто вопрос вкуса. ИДЕЯ объективно лучше. Он позволяет быстро и легко писать и изменять код, предлагает подходящие имена, находит подходящие методы. Он не требует от вас точного выбора выражений, но угадывает, что вы хотите сделать и как вы хотели его назвать. ИДЕЯ предвидит и предлагает.
PS Замечания
Я утверждаю, что IDEA лучше, чем Eclipse, как Java IDE. Если вы рассматриваете их в другом качестве — например, в IDE для других языков (C ++, Python, Scala) или в качестве платформы для создания настольных приложений, Eclipse вполне может победить.
На самом деле это следует из их определения. Eclipse позиционирует себя как абстрактную платформу для создания чего-либо с помощью плагинов, а IDEA позиционирует себя как «интеллектуальную IDE для Java». Так что, это.
Ради интереса я попытаюсь назвать некоторые аспекты, в которых Eclipse, вероятно, лучше, чем IDEA:
- Затмение выглядит лучше (подумал, это дело вкуса). Вся эта суета о SWT и родном контроле стоила того. Eclipse выглядит как солидное, хорошо продуманное приложение с красивыми шрифтами и значками, в то время как IDEA на первый взгляд выглядит как трюковая игрушка с хромыми пиктограммами для взлома и неуклюжим интерфейсом Swing.
- Eclipse имеет более богатую поддержку структуры проекта. В IDEA у вас есть проект, состоящий из модулей. В Eclipse у вас есть рабочее пространство, состоящее из проектов, которые можно закрывать / открывать, группировать и скрывать. Но тебе это действительно нужно?
- Кажется, проще написать плагины для Eclipse.
- IDEA использует больше ресурсов (памяти), чем Eclipse. Это действительно имеет смысл — потому что он знает так много.
- И, наконец, Eclipse бесплатен. Тем не менее, IDEA Community Edition мне достаточно.
Моя окончательная рекомендация
Если вам нужны красивые значки, платформа для создания настольных приложений, IDE для C ++ или вы работаете на старом слабом ноутбуке, то Eclipse, вероятно, будет лучшим выбором для вас. Но если вы серьезный Java-разработчик и вам нужен быстрый и удобный инструмент, который поможет вам сосредоточиться на проблеме, а не отвлекать внимание, тогда IDEA это именно то, что вам нужно.
Я надеюсь, что еще один Holywar закончился сегодня.
Развивайся с удовольствием!