Каждая качественная среда разработки - это своего рода произведение искусства. Потому что для того, чтобы среда "заиграла", чтобы разработчику было в ней так же уютно, как в собственном доме на диване, создателям среды разработки нужно не только трудолюбие, но и интуиция. И дело здесь не только в эргономике, но и в какой-то самой атмосфере, присущей каждой среде разработки. У качественных сред разработки эта атмосфера, не побоюсь этого слова, уютная. К чему это я? Конечно же, именно к тому, что IntelliJ IDEA - как раз одна из таких сред разработки. И хотя о ней многие наши читатели наверняка знают не понаслышке, я, тем не менее, решил о ней сегодня рассказать.
Что такое IntelliJ IDEA
Хотя, как я уже говорил, IntelliJ IDEA - продукт весьма известный, наверняка найдётся множество людей среди читателей этой статьи, которые никогда о нём и не слышали. Поэтому будет лучше, если я сначала расскажу немного о том, что за зверь такой диковинный эта IntelliJ IDEA. Если же для вас этот зверь вполне ручной и даже одомашненный, то, полагаю, этот раздел статьи вам никакой новой информации не даст.
Сначала сообщу, что официальный сайт этого программного продукта располагается по адресу www.jetbrains.com/idea, там можно скачать пробную версию IntelliJ IDEA - её размер для Windows составляет около 90 Мб.
Итак, самое важное, что нужно знать об IntelliJ IDEA, - это то, что под данным названием скрывается интегрированная среда разработки (IDE - Integrated Development Environment) для Java. Отличается эта среда от других, имя которым - легион, тем, что... ох, одним словом не скажешь ведь. Поэтому ниже будет обстоятельный рассказ обо всём том, что IntelliJ IDEA готова предложить разработчику.
Начнём с редактора кода, поскольку именно в нём программист проводит большую часть своего рабочего времени. Одна из приятных особенностей - автоматическое дополнение скобок. То есть, вы набираете открывающую скобку, а редактор кода самостоятельно тут же добавит закрывающую. Это относится не только к круглым скобкам, но и ко всем парным символам, что, согласитесь, весьма удобно. Но скобки редактор умеет не только расставлять, но и подсвечивать, чтобы выделять скобки одинаковой глубины вложения и определять, какие из скобок при этом остались без пары. Также редактор кода позволяет быстро производить комментирование нужных участков кода: одним нажатием клавиш Ctrl + / или Ctrl + Shift + / можно, соответственно, делать однострочные или многострочные комментарии. Ну, насчёт однострочных комментариев можно сказать, что вряд ли подобное обращение с ними сильно ускорит процесс написания кода, а вот что касается многострочных, то это довольно полезно.
Из других полезных вещей, связанных непосредственно с работой над кодом, стоит, на мой взгляд, отметить поддержку одновременно нескольких буферов обмена на уровне самой среды, фолдинг (сворачивание) структурно выделенных участков кода, а также быстрое переключение с помощью контекстного меню редактора между разными схемами подсветки синтаксиса, горячих клавиш и прочих настроек IDE. Естественно, поддерживаются и шаблоны кода: классы, пакеты, интерфейсы и т.п., шаблоны стандартных методов классов (например, конструктора). Можно легко создать класс, наследующий заданный, и указать, какие методы должны быть перекрыты, какие - делегированы. Позволяет редактор кода и быстро окружить нужный кусок кода конструкциями try...catch, if...else и прочими. Ещё одна интересная возможность, до сих пор отсутствующая во многих даже весьма продвинутых средах разработки, но, естественно, присутствующая в IntelliJ IDEA как автоматическое декларирование переменных, констант и методов, используемых в коде.
IntelliJ IDEA помогает разработчику следовать выбранному стилю написания кода. В среде можно настроить префиксы и суффиксы именованных элементов кода, правила расстановки пробелов перед и после скобок, расстановку отступов для выделения структуры кода, параметры JavaDoc. Если код копируется из файла, в котором он оформлен иначе, то изменить его внешний вид можно с помощью встроенного в среду инструмента форматирования кода (Code Formatter).
Кстати, что касается JavaDoc - эта технология очень хорошо поддерживается средой разработки. Например, при декларировании метода IntelliJ IDEA сама добавит JavaDoc-комментарий, разработчику только останется подписать, что значит каждый параметр метода. При написании JavaDoc-документации среда даёт программисту пользоваться подсказками, какие параметры JavaDoc могут использоваться. При наборе JavaDoc-комментариев среда показывает и ошибки в их оформлении, что помогает вовремя привести всё в надлежащий вид. Естественно, при наборе кода IntelliJ IDEA высвечивает все JavaDoc-подсказки и даже даёт возможность открывать их в отдельном окне, а не только во всплывающих окошках, и оставлять их, таким образом, на экране независимо от местоположения курсора мыши.
Теперь стоит кое-что сказать о поиске в IntelliJ IDEA. Результаты поиска отображаются в удобной древовидной форме. На самом деле, окно отображения результатов поиска в IntelliJ IDEA устроено очень и очень удобно, так что пользоваться им - одно удовольствие. Присутствует и так называемый "Структурированный поиск" - фактически, поиск с использованием регулярных выражений. Регулярные выражения - мощное средство облегчения себе жизни при поиске и, особенно, замене разных конструкций, которые наиболее широко раскрывают свои возможности в довольно-таки крупных проектах. Помимо непосредственно поиска, в среде неплохи и средства навигации по коду: навигация по именам файлов, классов, методов; быстрое переключение между декларацией и реализацией методов... Есть проводник по иерархии типов и классов, отдельный проводник по традиционно не слишком любимому программистами списку "To-Do" для проекта, панель со списком недавно открывавшихся файлов, инкрементальный поиск... Но поражает воображение функция поиска по диалогу опций. Пожалуй, этот удачный ход можно было перенять всем создателям программных продуктов, которые имеют больше, чем хотя бы десяток опций.
Анализатор кода в IntelliJ IDEA работает "на лету". Он автоматически подчёркивает ошибки, а также даёт возможность исправить их при помощи контекстного меню. Работает эта функция не только с Java, но и с другими языками программирования, с которыми умеет взаимодействовать IntelliJ IDEA: JavaScript, Flex, HTML/XHTML/CSS, XML/XSL, Ruby/JRuby, Groovy. Имеется в среде и мощный арсенал средств для создания многоязычных приложений.
Говоря об IntelliJ IDEA, нельзя не сказать о визуальном дизайнере графического интерфейса пользователя. Он основан на технологии Swing, и, надо сказать, как и всё остальное в этой среде разработки, весьма неплохо продуман. Все контролы на форме расположены в соответствии со специальной сеткой, причём имеются разные типы расстановки контролов по сетке. Для старых проектов, которые содержат формы, созданные с помощью написанного вручную кода, IntelliJ IDEA предоставляет возможность перевести их в новый вид - их можно конвертировать в формат, нужный для работы с формами визуальному дизайнеру. Стоит ли говорить о том, что переключаться между кодом и дизайнером можно очень легко и быстро? Мне кажется, это довольно очевидно.
Вообще в IDE IntelliJ IDEA столько разных вещей, что рассказывать о них можно долго - возможно, даже не на один номер газеты хватило бы, даже если целиком его посвятить только IntelliJ IDEA. Есть, , в среде встроенный мессенджер, чтобы общаться с коллегами насчёт работы прямо из IDE. Есть возможность работы с проектами другой среды разработки - Eclipse, причём проекты из неё можно не только импортировать, возможен также экспорт проектов и даже их синхронизация. Присутствуют в среде IntelliJ IDEA и мощнейшие средства рефакторинга кода, которыми она, вообще говоря, и славится. Есть в среде и встроенное средство поиска дублирующегося кода - оно особенно полезно тем, кто так и не проникся концепцией повторного использования кода, хотя, наверное, таких людей и не слишком много. Есть и средство анализа зависимостей между файлами, классами, типами, переменными и прочими вещами в проекте.
А ещё IntelliJ IDEA славится множеством качественных плагинов, написанных для этой среды разработки. На сегодняшний день репозиторий плагинов насчитывает их более двух сотен, а среда имеет мощные средства для того, чтобы с таким изобилием управляться.
Однако, как говорится, лучше один раз увидеть, чем сто раз услышать. Поэтому чтобы узнать обо всём, что умеет IntelliJ IDEA, лучше покрутить её собственными руками или почитать на сайте разработчиков, что ещё умеет их замечательное творение. А я перейду к рассказу о том, что нового появилось в новой, седьмой версии IntelliJ IDEA.
Седьмая версия: приятные новости
Надо сказать, что седьмая версия среды IntelliJ IDEA несёт довольно много полезных для разработчиков новшеств.
Например, расширена поддержка Spring: появилась возможность использования автодополнения и подсветки кода, добавилась поддержка p-namespaces, появилась поддержка создания Hibernate-разметки исходя из структуры данных. Hibernate и Spring в IntelliJ IDEA 7 теперь тесно интегрированы, появилась редактируемая диаграмма Hibernate-входов. Появились и другие полезные и интересные нововведения, касающиеся Hibernate и Spring.
Что касается web-разработки, то и здесь есть новшества. Появилась поддерка подсказок для кода Web Services (как XML и Java, так и смешанного XML-Java кода). Появилась быстрая генерация web-сервисов из Java-классов, возможность удалённой отладки с помощью поддерживаемых серверов приложений, а также генерация (автоматическая, конечно же) одного кода из другого: Java-кода из XMLBeans, WSDL/WADL из Java-кода и т.д. и т.п. Улучшена поддержка HTML, XHTML, XML: улучшена навигация по ML-коду, добавлена проверка HTML-кода на поддержку разными браузерами.
Авторы IntelliJ IDEA заявляют о том, что в седьмой версии их программного продукта они улучшили скорость его работы: сильно увеличилась скорость загрузки среды, скорость редактирования JSP, в фоновом режиме стало выполняться большее количество операций. Быстрее стало производиться переформатирование XML-документов, улучшена поддержка многоядерных процессоров. Интеграция с Eclipse, о которой я писал выше, - это, кстати, тоже нововведение седьмой версии.
Для большей производительности команды разработчиков, в целом, улучшена интеграция среды с системами контроля версий. Добавлена поддержка интеграции с Rational ClearCase, Perforce (оффлайн-режим), улучшена интеграция с Visual SourceSafe и StarTeam. Появилось автоматическое определение настроек проекта, касающихся VCS.
Добавилась в IntelliJ IDEA 7 поддержка Ruby и Groovy - правда, она пока дорабатывается, но на момент написания статьи разработчики обещали, что доработка займёт не более, чем несколько недель. Также одно из самых интересных нововведений - матрица структуры зависимостей, которая в очень удобной форме представляет зависимости между классами в проекте и позволяет их анализировать.
Но, в общем-то, и нововведений, равно как и исправлений, в новой версии IntelliJ IDEA так много, что обо всех из них сейчас мне рассказать не удастся. Так что, обозрев основное, за остальным отсылаю вас на официальный сайт проекта. А сам перейду к подведению итогов.
Резюмируем...
В общем-то, итог вполне очевиден: IntelliJ IDEA не зря многие называют лучшей средой разработки. Причём не только среди сред для Java. О вкусах, конечно, не спорят - NetBeans, Eclipse и JBuilder тоже продукты достойные, но IntelliJ IDEA - великолепная IDE. И добавить к этому, пожалуй, даже и нечего - я уже говорил, что лучше самостоятельно её поюзать и убедиться в том, что всё сказанное - не рекламный трюк, что среда разработки может быть настолько удобной.
Вадим СТАНКЕВИЧ,
dreamdrusch@tut.by
Комментарии
я сам работаю в Eclipse, все что Вы перечислили про Idea позволяет делать и Eclipse. У меня много знакомых работающих в Idea и любящих ее. Но на мой вопрос чем она лучше никто не может ответить. А у Eclipse все же есть одно неоспоримое преимущество - она бесплатна. Так же количество плагинов под нее неимоверно больше.
Может быть Вы можете ответить что же в Idea лучше чем в Eclipse (если Вы конечно с ней знакомы). А вот в Idea мне не понравилось что ресурс можно открыть только соответствующим редактором, например ant файл только соответствующим редактором, и нету аналога эклипсовского outline, т.е. если XML не отфармотирован, то нет удобной навигации по нему. (Хотя может я недостаточно знаю Idea).
С уважением,
Виктор