Я слышал от людей, которые перешли в ту или иную сторону и которые клянутся тем или другим.
Будучи большим поклонником Eclipse, но не имея времени опробовать IntelliJ, мне интересно услышать от пользователей IntelliJ, которые являются «бывшими Eclipsians», некоторые конкретные вещи, которые вы можете делать с IntelliJ, которые вы не можете делать с Eclipse.
Примечание : это не субъективный вопрос и вовсе не означает превращения в священную войну IDE. Пожалуйста, уменьшите любые ответы на приманки .
java
eclipse
ide
intellij-idea
Epaga
источник
источник
Ответы:
CTRL-клик работает где угодно
CTRL-щелчок, который приводит вас туда, где определен объект, по которому щелкают объекты, работает везде - не только в классах Java и переменных в коде Java, но и в конфигурации Spring (вы можете щелкнуть по имени класса, или свойству, или имени компонента), в Hibernate (вы можете щелкнуть имя свойства или класс или включенный ресурс), вы можете в течение одного клика перейти от класса Java к тому месту, где он используется как компонент Spring или Hibernate; щелчок по включенному тегу JSP или JSTL также работает, нажатие Ctrl при нажатии на переменную или функцию JavaScript возвращает вас к определенному месту или показывает меню, если имеется более одного места, включая другие файлы .js и код JS в HTML или JSP. файлы.
Автозаполнение для многих языков
Hibernate
Автозаполнение в выражениях HSQL, в конфигурации Hibernate (включая имена классов, свойств и столбцов БД), в конфигурации Spring
и он покажет вам список бобов, которые вы можете добавить в это свойство.
Ява
Очень умное автозаполнение в коде Java:
и он показывает вам ТОЛЬКО getName () , getAddress () и toString () (только они совместимы по типу), а getName () стоит первым в списке, потому что у него более подходящее имя. Последняя версия 8, которая все еще находится в EAP, имеет еще более умное автозаполнение.
и он автоматически завершит его
Javascript
Умное автозаполнение в JavaScript.
и он показывает ТОЛЬКО getName () и getAddress () , независимо от того, как можно получить методы *, которые есть у вас в других объектах JS в вашем проекте, и нажатие ctrl на this.getName () приведет вас туда, где это определено, даже если в вашем проекте есть некоторые другие функции getName () .
HTML
Я упоминал автозаполнение и нажатие Ctrl в путях к файлам, таким как <script src = "", <img src = "" и т. Д.?
Автозаполнение в атрибутах HTML-тегов. Автозаполнение в стиле атрибута тегов HTML, как имен атрибутов, так и значений. Автозаполнение в атрибутах класса.
Напечатайте <div class = "<CTRL-SPACE>, и он покажет вам список классов CSS, определенных в вашем проекте. Выберите один, кликните по нему Ctrl и вы будете перенаправлены туда, где он определен.
Легкое выделение языка
В последней версии есть внедрение языка, поэтому вы можете объявить, что ваш пользовательский тег JSTL обычно содержит JavaScript, и он будет выделять JavaScript внутри него.
Индексированный поиск по всему проекту.
Вы можете использовать Find Usages любого Java-класса или метода, и он найдет, где он используется, включая не только Java-классы, но и Hibernate, Spring, JSP и другие места. Переименование метода рефакторинг переименовывает метод не только в классах Java, но и где угодно, включая комментарии (не может быть уверенности, что строка в комментариях действительно является именем метода, поэтому он спросит). И он найдет только ваш метод, даже если есть методы другого класса с таким же именем. Хорошая интеграция с системой контроля версий (поддерживает ли SVN списки изменений? IDEA поддерживает их для каждого элемента управления версиями), возможность создавать патч с вашими изменениями, чтобы вы могли отправлять свои изменения другому члену команды без их фиксации.
Улучшенный отладчик
Когда я смотрю на HashMap в окне просмотра отладчика, я вижу логическое представление - ключи и значения, в прошлый раз, когда я делал это в Eclipse, он отображал записи с хешем и следующими полями - я не отлаживаю HashMap , я просто хочу посмотреть на это содержание.
Проверка конфигурации Spring & Hibernate
Он проверяет конфигурацию Spring и Hibernate при редактировании, поэтому мне не нужно перезагружать сервер, чтобы узнать, что я неправильно написал имя класса или добавил параметр конструктора, чтобы мой Spring cfg был недействительным.
В прошлый раз, когда я пытался, я не мог запустить Eclipse на Windows XP x64.
и он предложит вам person.name или person.address . Ctrl щелкните на person.name и переведет вас в GetName () метод Person класса.
Введите
Pattern.compile("");
put \\ туда, нажмите CTRL-SPACE и посмотрите полезный совет о том, что вы можете вставить в свое регулярное выражение. Здесь вы также можете использовать языковую инъекцию - определите свой собственный метод, который принимает строковый параметр, объявите в диалоговом окне параметров IntelliLang, что ваш параметр является регулярным выражением, и он также даст вам автозаполнение. Излишне говорить, что это подчеркивает неправильные регулярные выражения.Другие особенности
Есть несколько функций, которые я не уверен, есть в Eclipse или нет. Но, по крайней мере, каждый член нашей команды, который использует Eclipse, также использует какой-то инструмент слияния для объединения локальных изменений с изменениями из системы контроля версий, обычно WinMerge. Мне это никогда не нужно - мне достаточно слияния в IDEA. В 3 клика я вижу список версий файлов в системе контроля версий, еще в 3 клика я могу сравнить предыдущие версии или предыдущую и текущую и, возможно, объединить.
Он позволяет указать, что мне нужны все файлы .jars внутри
WEB-INF\lib
папки, не выбирая каждый файл по отдельности, поэтому, когда кто-то фиксирует новый файл .jar в эту папку, он автоматически подхватывает его.Упомянутое выше, вероятно, составляет 10% того, что он делает. Я не пользуюсь Maven, Flex, Swing, EJB и многими другими вещами, поэтому не могу сказать, как это помогает с ними. Но это так.
источник
Есть только одна причина, по которой я использую intellij, а не eclipse: юзабилити
Будь то отладка, рефакторинг, автозаполнение. Intellij гораздо проще использовать с согласованными привязками клавиш, опциями, доступными для поиска и т. Д. По функциям Intellij будет сложно догнать Eclipse, так как последний имеет гораздо больше доступных плагинов, чем intellij, и легко расширяемый.
источник
Вероятно, дело не в том, что можно / нельзя сделать, а в том, как это сделать .
Например, у обоих есть редактор, окруженный док-панелями для проекта, пути к классам, выходных данных, структуры и т. Д. Но в Idea, когда я начинаю печатать все эти свертки, автоматически позвольте мне сосредоточиться на самом коде; В затмении все эти панели остаются открытыми, оставляя мою область редактора очень уменьшенной, около 1/5 от общей видимой области. Поэтому мне нужно схватить мышь и щелкнуть, чтобы свернуть эти панели. Делать это целый день - очень неприятный опыт в затмении.
Совершенно противоположное происходит с окном вывода вида. В Idea запуск программы выводит окно / панель вывода, чтобы увидеть результат работы программы, даже если он был явно свернут. В eclipse мне нужно снова схватить мою мышь и найти вкладку вывода и щелкнуть по ней, чтобы просмотреть вывод моей программы, потому что окно вывода / панель просто другое, как и все остальные окна, но в Idea это рассматривается в особым образом: «Если пользователь хочет запустить свою программу, очень вероятно, что он хочет увидеть результаты этой программы!» Когда я пишу это, это кажется естественным, но затмение терпит неудачу в этой базовой концепции пользовательского интерфейса.
Возможно, для этого есть ярлык в eclipse (окно вывода с автоматическим скрытием при редактировании и автоматическое отображение его при запуске программы), но, как и у некоторых других десятков функций, на форумах, онлайн-справке и т. Д. Нужно искать ярлык, а в Idea это немного больше » естественно».
Это может быть повторено почти для всех функций: автозаполнение, перенос слов, быстрый просмотр документации, все. Я думаю, что пользовательский опыт гораздо более приятен в идее, чем в затмении. Тогда сбудется девиз «Развивайся с удовольствием»
Eclipse быстрее обрабатывает большие проекты (+300 банок и +4000 классов), и я думаю, что IntelliJ Idea 8 работает над этим.
Все это, конечно, субъективно. Как мы можем измерить пользовательский опыт?
источник
Идея 8.0 имеет прекрасный ctrl+shift+spaceх 2, который выполняет следующее автозаполнение:
решает в
через любое количество уровней геттеров / сеттеров.
источник
Не забудьте "сравнить с буфером обмена".
То, что я все время использую в IntelliJ и которое не имеет аналогов в Eclipse.
источник
Мой любимый ярлык в IntelliJ, который не имеет эквивалента в Eclipse (который я нашел), называется «Перейти к символу». CTRL-ALT-SHIFT-Nпозволяет начать вводить и выводить классы, имена методов, имена переменных и т. д. из всего проекта.
источник
Я пытался перейти на IntelliJ из-за новой Android Studio. Но сейчас я очень разочарован. Я использую Eclipse с плагином Code Recommanders . Вот простой пример, почему Eclipse такой крутой:
Я хочу создать новый
SimpleTimeZone
.SimpleTimeZone
не имеет конструктора с нулевыми аргументами.Ctrl + Space в затмении
Ctrl + Space в IntelliJ
В IntelliJ я не получаю информации о том, какие конструкторы
SimpleTimeZone
есть.После Enterв Затмении
Я получаю ранее выбранный конструктор, заполненный предопределенными именами переменных. И я вижу тип каждого аргумента. С помощью Code Recommanders Eclipse угадывает правильный конструктор по предварительно определенным типам переменных в текущей области и заполняет конструктор этими переменными.
После Enterв IntelliJ ничего не происходит. Я получаю пустой конструктор. Я должен нажать, Ctrl + Pчтобы увидеть ожидаемые аргументы.
источник
Если у вас есть курсор на метод, CTRL+SHIFT+Iпоявится всплывающее окно реализации метода. Если метод является
interface
методом, то вы можете использовать стрелки вверх и вниз для циклического перебора реализаций:Где | находится (например), где находится ваш курсор.
источник
IntelliJ имеет несколько довольно продвинутых проверок кода (сравнимых, но отличающихся от FindBugs).
Хотя я серьезно скучаю по плагину FindBugs при использовании IntelliJ (интеграция Eclipse / FindBugs довольно крутая).
Вот официальный список CodeInspections, поддерживаемых IntelliJ
РЕДАКТИРОВАТЬ: Наконец, есть плагин findbugs для IntelliJ. Это все еще немного бета, но сочетание Code Inspections и FindBugs просто потрясающе!
источник
Куда, куда, намного больше рефакторингов.
источник
Одна вещь, которую я регулярно использую, это установка точки останова, но затем контроль того, что она делает. (На моей последней работе большинство остальных использовали Eclipse ... Я помню, что был удивлен, что никто не мог найти, как это сделать в Eclipse.)
Например, точка останова может не останавливаться, а просто записывать сообщение в консоль. Это означает, что мне не нужно засорять мой код «System.out.println (...)», а затем перекомпилировать.
источник
System.out.println("here"); false
печатать, но не разбивать (последний оператор - логическое выражение, определяющее, следует ли нам разбивать)Есть много вещей, которые идея решает намного проще, или нет эквивалента:
Автозаполнение действий: ctrl+shift+aВы можете вызывать любое действие идеи с клавиатуры, не помня комбинацию клавиш ... Подумайте о gnome-do или запуске в окнах, и у вас есть идея! Также эта функция поддерживает сокращения CamelCasing;)
Полка: позволяет легко разделить некоторые части кода, а затем просмотреть их через средство просмотра различий.
Местная история: гораздо лучше управляемый и простой.
Аннотации и история SVN: проще проверять, а также вы можете легко просматривать историю только для такой части всего исходного файла.
Автозаполнение везде, например, в окне оценки выражения и состояния точки останова.
Интеграция Maven ... намного, намного проще и хорошо интегрирована.
Рефакторинг гораздо ближе к руке, такой как вставка циклов, обтекание / приведение, переименование и добавление переменных.
Найти много мощных и хорошо организованных. Даже в больших проектах
Гораздо стабильнее для работы с несколькими ветками большого проекта одновременно (как бывший исправитель 1.5Gb по источникам веток и необходимость одновременной работы в них, идея показала его отличные возможности)
Более чистый и простой интерфейс ...
И проще в использовании только с клавиатурой, избавляя от необходимости использовать мышь для множества простых операций, экономя ваше время и давая вам больше внимания к коду ... где это важно!
И теперь, будучи открытым исходным кодом ... пользовательская база Idea будет расти в геометрической прогрессии.
источник
Структурный поиск и замена.
Например, найдите что-то вроде:
Где $ string $ это литерал, а $ expr $ это выражение типа my.package.and.Class, а затем заменить на:
источник
Мое время может быть немного с точки зрения этой темы, но я просто должен был ответить.
Я большой поклонник затмений - использую его с первого появления. Друг сказал мне тогда (10+ лет назад), что это будет игрок. Он был прав.
Однако! Я только начал использовать IntelliJ, и если вы не видели или не использовали списки изменений - вы упускаете возможность попасть на небеса программирования.
Возможность отслеживать мои измененные файлы (в моей ветке разработки ala clearcase) была тем, что я искал в плагине для Eclipse. Intellij отслеживает все ваши изменения за один коммит, чрезвычайно легко. Вы можете изолировать измененные файлы с помощью пользовательских списков. Я использую это для файлов конфигурации, которые должны быть уникальными локально, но постоянно помечаются, когда я синхронизирую или сравниваю с репозиторием - перечисляя их в списке изменений, я могу отслеживать их, но аккуратно убрать их, чтобы я мог сосредоточиться на реальных дополнениях Я делаю.
Также есть плагин Commit Log, который выводит текст всех изменений для тех SCCS, которые не интегрированы с вашим программным обеспечением для отслеживания ошибок. При вставке журнала в историю работы заявки фиксируются файлы, их версия, дата / время и ветка / теги. Это чертовски круто.
Могу поспорить, что все это может быть поддержано с помощью плагинов (или будущих улучшений) в Eclipse; тем не менее, Intellij делает это бризом.
Наконец, я очень рад общепринятой любви к этому продукту - нажатия клавиш, так что это больно, но весело.
источник
Отладчик IntelliJ имеет очень удобную функцию, называемую «Evaluate Expression», которая намного лучше, чем подвеска Eclipses. У этого есть полное завершение кода, и я полагаю, что это вообще "более полезно".
источник
Ну, для меня это тысячи крошечных вещей. Некоторые макросы, макет GUI в целом в Eclipse я нахожу ужасным. Я не могу открыть несколько проектов в разных окнах в Eclipse. Я могу открыть несколько проектов, но тогда система, основанная на представлении, меняет на меня кучу вещей, когда я переключаю файлы. Проверки кода IntelliJ кажутся лучше. Его всплывающие подсказки для исправления общих проблем - это хорошо. Множество простых в использовании вещей, таких как боковая панель, где я могу навести курсор на горячую точку, и она расскажет мне о каждом реализующем подклассе метода или метода, который я реализую, и откуда.
Всякий раз, когда мне приходилось использовать или наблюдать за тем, как кто-то использует, в Eclipse кажется, что они могут делать большинство вещей, которые я могу делать в IntelliJ, но это отнимает у них больше времени и выглядит более грубым.
источник
Введите переменную. ( Ctrl+Alt+Vв Windows, Cmd+Alt+Vв OSX)
Допустим, вы вызываете метод,
service.listAllPersons()
Hit Ctrl+Alt+Vи Enter, и вставляется переменная для возвращаемого значения из вызова метода:Сохраняет ваш ввод, и вам не нужно проверять тип возврата метода, который вы вызываете. Особенно полезно при использовании дженериков, например
[ввести переменную]
(конечно, вы можете легко изменить имя переменной перед нажатием Enter)
источник
control+1
(самая очевидная привязка клавиш в мире, а?), Он предлагает действия, которые вы можете сделать в текущей позиции курсора, аналогично намерениям в IDEA. Например, в нем перечислены «назначить локальный», «назначить поле» и другие параметры.control+2, L
это ярлык для него.ctrl+2, L
, вы все равно можете изменить тип создаваемой переменной либо на правый тип (по умолчанию), либо на любой супертип: тип переменной можно выбрать с помощью TAB.IntelliJ имеет поддержку intellisense и рефакторинга из кода в документы jspx.
источник
Для меня это поддержка IDEA maven, особенно в 9-й версии. Синхронизация проекта на лету с моделью «на лету» просто фантастическая и делает разработку приятной.
источник
Intellij имеет гораздо лучший плагин SVN, чем Subversive или Subclipse, и он работает! Время, которое мы потратили на слияние исходных файлов с использованием Eclipse, не имеет значения. Это не проблема с IntelliJ, потому что плагин поможет вам гораздо больше.
Также плагин Subclipse ненадежен - у нас регулярно бывают случаи, когда плагин не думает, что какой-либо код был зарегистрирован в SVN другими разработчиками, но есть - сервер CI обработал их!
источник
VIM Emulator. Этот плагин обеспечивает почти полную эмуляцию vi / vim / gvim при редактировании файлов в IDEA. Поддерживаются следующие функции:
некоторые комментарии об этом плагине от http://plugins.jetbrains.net/plugin/?id=164
Я не могу видеть, чтобы когда-либо возвращался к любому другому идею из-за этого плагина .. Лучшее из обоих миров ... Удивительно !. это то, чего мне не хватало во всех IDE.источник
Одним из хороших моментов, на мой взгляд, является Матрица структуры зависимостей : http://www.jetbrains.com/idea/features/dependency_analysis.html#link0.
Хорошее введение в использование и преимущества DSM можно найти на веб-сайте Lattix (отдельный продукт): http://www.lattix.com/files/dl/slides/s.php?directory=4tour
источник
Несколько других вещей:
источник
IntelliJ делает две вещи, которые Eclipse не делает, которые очень ценны для меня:
Метод сепараторы: те слабые серые линии между методами сделать код гораздо более удобным для чтения
Сглаживание текста: код выглядит так красиво в IDE
источник
Одна очень полезная функция - возможность частично построить проект реактора Maven, чтобы в него входили только те детали, которые вам нужны.
Чтобы сделать это немного понятнее, рассмотрим случай, когда коллекция файлов WAR со множеством общих ресурсов (например, JavaScript, файлы конфигурации Spring и т. Д.) Распределяется между ними с использованием метода наложения., Если вы работаете над какой-либо веб-страницей (запущенной в Jetty) и хотите изменить часть оверлейного кода, хранящегося в отдельном модуле, то обычно вы ожидаете, что вам придется остановить Jetty, запустить сборку Maven, запустить Jetty снова и Продолжить. Так обстоит дело с Eclipse и практически со всеми другими IDE, с которыми я работал. Не так в IntelliJ. Используя настройки проекта, вы можете определить, какой аспект какого модуля вы хотите включить в фоновую сборку. Следовательно, вы получите процесс, который выглядит безупречно. Вы вносите изменения практически в любой код проекта, и он сразу становится доступным после обновления браузера.
Очень аккуратно и очень быстро.
Я не мог себе представить кодирование внешнего интерфейса в чем-то вроде YUI с резервированием на DWR / SpringMVC без него.
источник
Преамбула к моему ответу: мое использование Eclipse ограничено. Нам нужна была Java IDE для работы как на Windows, так и на Mac, и порт Mac замедлялся с каждым днем. Это было много лет назад, и я уверен, что теперь все в порядке. Но это то, что заставило нас перейти на IntelliJ, и мы были рады этому.
Теперь мой ответ: одна большая разница, о которой я еще не упоминал, заключается в том, что техническая поддержка лучше с IntelliJ / Jet Brains. Мы отправляем электронное письмо в JetBrains и получаем окончательный ответ менее чем за час. Поиск ответов на проблемы Eclipse приводит к обычным ответам «Ты глупый идиот» (обычно небольшое количество ответов) вместе с гораздо большим количеством проницательных, полезных ответов. Но чтобы получить реальный ответ, нужно немного разобраться.
источник
То, что я все время использую в IntelliJ, - это рефакторинг, когда я печатаю. Я переписал классы из распечатки (первоначально написанной в Eclipse), используя обе IDE, и я использовал примерно на 40% меньше нажатий клавиш / щелчков мыши, чтобы написать те же классы в IntelliJ, что и Eclipse.
Я не хотел бы использовать Eclipse, пока они не поддерживают столько же рефакторинга с неполными частями кода.
Вот более длинный список возможностей IntelliJ 8.0 / 8.1 [ http://www.jetbrains.com/idea/features/index.html]
источник
Есть одна вещь, что IntelliJ делает намного лучше, чем Eclipse, и это пустые карманы!
Однако я предпочитаю использовать его, и одним из его больших преимуществ по сравнению с Eclipce является то, как он синхронизируется с файловой системой, для больших проектов и медленных компьютеров (да, в рабочих средах ПК намного медленнее, чем у нас дома), кажется, Eclipse бороться, где IntelliJ кажется более быстрым, хотя и с более медленным начальным временем индексации.
Версия IntelliJ Community, очевидно, делает его бесплатным, но вскоре вы захотите, чтобы этот дополнительный рефакторинг и приятные маленькие вкусности не вошли в версию CC.
На мой взгляд, это, как правило, лучший пользовательский опыт, но стоит ли вопрос стоимости, это вопрос для каждого разработчика, чтобы ответить на себя.
Но давайте будем благодарны, что у нас есть до трех отличных IDE для Java прямо сейчас, и NetBeans постоянно улучшается.
источник
Анализ потока данных : межпроцедурный анализ обратного потока и анализ прямого потока, как описано здесь . Мой опыт основан на Community Edition, которая довольно хорошо анализирует потоки данных. Он потерпел неудачу (отказался что-либо делать) в нескольких случаях, когда код очень сложный.
источник
Прежде всего я люблю интеллидж. Есть по крайней мере сто особенностей, которые есть в этом затмении. Я лучше говорю о надежности и интеллекте, которые ни одна гипербола не может описать, когда речь заходит о рефакторинге, переименовании, перемещении и других, которые уже были упомянуты.
НО, есть одна вещь, которую intellij не позволяет, что делает затмение. Он не позволяет запускать сразу несколько проектов под одним и тем же vm.
Когда у вас есть отдельные проекты для front, middle, core, agent..etc, где они все должны взаимодействовать друг с другом, вы не можете быстро изменять и отлаживать одновременно, афаик. Единственный способ справиться с этим в настоящее время - использовать ant-скрипты для развертывания и обновления jar-файлов в зависимых проектах или использовать maven.
Eclipse позволяет отлаживать несколько проектов в одном экземпляре ide vm.
источник