Средства разработки Java-приложений

Cтатья посвящена одной из самых популярных сегодня категорий средств разработки приложений — средствам разработки Java-приложений. Прежде чем обсуждать эту категорию средств разработки, следует обратить внимание на то, что в настоящее время абсолютно неверно рассматривать Java лишь как язык программирования или как средство написания аплетов и иных простых приложений для настольных компьютеров и конечных пользователей, хотя они, естественно, с помощью Java по-прежнему создаются и описываются спецификацией J2SE (Java 2 Standard Edition). В последние годы интерес к Java был обусловлен не столько особенностями, присущими этому языку программирования, сколько появлением таких технологий, как J2EE (Java 2 Enterprise Edition), включая JSP (Java Server Pages), J2ME (Java 2 Micro Edition), и ряда других, сделавших Java наиболее популярной платформой для создания корпоративных решений, поддерживаемой почти всеми производителями программного обеспечения. Основная сфера применения Java — это приложения масштаба предприятия и многозвенные распределенные системы, базирующиеся на J2EE-совместимых серверах приложений. Именно с этой позиции и следует рассматривать средства разработки на Java, присутствующие на современном рынке программного обеспечения.
 

Особенности современных средств создания Java-приложений

Среди особенностей средств создания Java-приложений, интересных в плане создания корпоративных решений, следует назвать средства повышения производительности труда разработчиков, средства поддержки коллективной работы, поддержку различных этапов жизненного цикла приложений, как предшествующих созданию кода приложений (таких как управление требованиями, моделирование данных и приложений), так и следующих за ним (тестирование, внедрение и сопровождение), возможности, связанные с повторным использованием моделей и кода, поддержку средств и стандартов создания распределенных приложений и их интеграции (включая поддержку стандарта J2EE и Web-сервисов XML), а также возможность создания мобильных решений, в том числе поддержку стандарта J2ME. Современные инструменты разработки Java-приложений, как правило, обладают различными средствами повышения производительности труда программистов. Здесь мы не будем останавливаться на таких ставших уже привычными вещах, как цветовое выделение синтаксических конструкций, визуальные редакторы пользовательских интерфейсов, поддержка создания приложений с базами данных (в случае Java — с помощью универсального механизма доступа к данным JDBC, Java DataBase Connectivity) или наличие средств обычной и удаленной отладки, — сейчас без них ни один инструмент для разработки приложений не имеет шансов занять сколь-нибудь значимой позиции на рынке. Из средств, наличие которых не является очевидным, в первую очередь отметим средства рефакторинга — автоматического внесения сопутствующих изменений в код при переименовании классов (например, изменение кода, содержащего ссылки на переименованный класс) и изменении параметров методов, автоматического добавления конструкций try…catch вокруг блока кода с учетом возможных исключений, которые могут произойти при вызове методов, содержащихся в этом блоке, а также иных действий, связанных с автоматическим внесением изменений в код, что крайне необходимо при коллективной работе над большими проектами и при повторном использовании кода. Помимо этого, к полезным особенностям Java-инструментов можно отнести средства создания тестовых классов, средства конвертации файлов SQLJ1 в Java-код, различные средства, упрощающие генерацию тестов и поставку приложений, а также наличие мастеров создания Web-приложений, Web-сервисов, генерации кода на основании WSDL2 -описаний. Говоря о поддержке проектирования приложений, следует подчеркнуть, что создание Java-приложений масштаба предприятия сейчас практически немыслимо без применения средств UML-моделирования. Такие средства могут быть включены непосредственно в состав продукта либо поддерживаться на уровне интерфейсов к ним; при этом наиболее предпочтительным является наличие средств UML-моделирования в виде модулей, встроенных в среду разработки и поддерживающих синхронное изменение моделей и кода. Особо стоит остановиться на том, что в настоящий момент во всех продуктах, лидирующих на рынке средств разработки Java-приложений (иногда только в наиболее дорогих редакциях этих продуктов), реализована возможность создания EJB (Enterprise Java Beans) — объектов, выполняющихся под управлением серверов приложений, поддерживающих спецификацию J2EE. Эта возможность наиболее важна с точки зрения применимости подобного средства при создании корпоративных решений, в частности распределенных приложений, реализующих следующие схемы: «предприятие — потребитель» (B2C, business-to-consumer), такие как онлайновая продажа товаров, бронирование билетов и мест в отелях; «предприятие — предприятие» (B2B, business-to-business), такие как виртуальные торговые площадки и онлайновые аукционы; «предприятие — сотрудник» (B2E, business-to-employee), такие как корпоративные порталы. Зачастую в корпоративных решениях применяются конфигурации, содержащие несколько серверов приложений или различные кластерные конфигурации. Нередко производители Java-инструментов производят собственные серверы приложений, но многие из них поддерживают создание объектов EJB и для серверов приложений других производителей. Говоря о корпоративных решениях, нельзя не отметить, что и на Западе, и в России, переживающей сегодня последствия так называемой островковой автоматизации, весьма актуальна проблема интеграции различных приложений, используемых как внутри одного предприятия, так и на разных предприятиях. Одним из достаточно универсальных и простых способов решения этой проблемы является реализация функций приложений, к которым следует предоставить доступ извне в виде Web-сервисов XML, что позволяет обращаться к ним другим приложениям, поддерживающим Web-сервисы, независимо от того, на каких платформах они эксплуатируются и с помощью каких средств разработки созданы. В настоящее время популярность этой технологии интеграции быстро растет и большинство производителей серверов приложений и средств разработки уже так или иначе реализовали поддержку Web-сервисов и связанных с ними технологий. Отметим, однако, что сегодня имеются и альтернативные средства интеграции, отличные от Web-сервисов, например средства поддержки синхронного доступа к EJB из Windows- или .NET-приложений, таких как Borland Janeva3 . Еще одна важная особенность, характерная для большинства современных средств разработки Java-приложений, — это поддержка создания мобильных решений, базирующихся на спецификации J2ME. По мнению аналитической компании Gartner Group, к 2004 году с вероятностью 0,7 на J2ME будут основаны 37% приложений для PDA (Personal Digital Assistant), а к 2005-му с той же вероятностью 65% сотовых телефонов будут оснащены виртуальной Java-машиной. Поддержка создания мобильных решений может быть осуществлена различными способами — от добавления в среду разработки дополнительных мастеров и классов до создания специализированных редакций средств разработки Java-приложений, в том числе редакций для конкретных типов мобильных устройств. Как правило, современные средства создания Java-приложений поддерживают разработку приложений для нескольких различных платформ, а зачастую и сами существуют в версиях для различных платформ. Обычно в их число входят Windows, Linux, Solaris, а иногда и другие операционные системы. В заключение отметим, что нередко само средство разработки Java-приложений может поставляться как отдельно, так и в составе комплекта инструментов, включающих обычно средства UML-моделирования, версию сервера приложений, предназначенную для разработки и отладки EJB, а также, возможно, иные инструменты (например, средства создания пользовательских интерфейсов Web-приложений или средства оптимизации производительности приложений).

Лидеры рынка средств создания Java-приложений

С точки зрения аналитической компании Meta Group, в настоящее время лидерами рынка средств разработки Java-приложений являются Borland, IBM, Oracle, а к компаниям, имеющим четкое видение рынка и претендующим на заметную его долю, относятся Sun, JetBrains и Novell (см. Thomas Murphy, Java Intergrated Development Environments, METAspectrum Evaluation, 25 February 2003). Каковы же изменения, произошедшие на рынке средств Java-приложений за последние полтора года? Исходя из результатов исследований, проведенных аналитической компанией Gartner Group, к началу прошлого года лидерами рынка средств разработки Java-приложений должны были стать Borland, IBM, Oracle и WebGain; Sun считалась компанией, имеющей четкое видение рынка (см. Mark Driver, Joseph Feiman. 2002 Java IDE Vendor Magic Quadrant — Research Note M-14-1330, 13 November 2001), а к наиболее известным так называемым нишевым игрокам относились TogetherSoft, Sybase, Microsoft, Macromedia. Однако со времени публикации упомянутого отчета произошли некоторые изменения. В частности, компания Sybase отказалась от дальнейшей поддержки своего средства разработки Java-приложений PowerJ, рекомендуя своим пользователям сменить его на Borland JBuilder Sybase Edition; компания Microsoft покинула рынок средств Java-разработки, предложив взамен средства миграции Java-кода на платформу .NET и язык J#, предназначенный для Java-разработчиков, предпочитающих писать .NET-код на привычном для них языке. А недавний лидер рынка средств Java-разработки компания WebGain год назад объявила о прекращении работ над новыми версиями WebGain Studio и входящим в его состав Visual Cafе вследствие продажи корпорации Oracle бизнеса, связанного с продуктом TopLink, предназначенным для организации связи EJB с реляционными базами данных. В дальнейшем продукт WebGain Studio был приобретен компанией TogetherSoft, которая, в свою очередь, была приобретена корпорацией Borland, предложившей пользователям WebGain средства перехода на ставший практически безусловным лидером рынка Borland JBuilder. Кроме того, за последнее время на рынке появились новые заметные игроки, такие как Novell, которая приобрела год назад компанию SilverStream, обладавшую J2EE-сервером приложений и весьма неплохим средством разработки Java-приложений, а также чешская компания JetBrains, предложившая весьма привлекательное в плане удобства применения средство разработки Java-приложений IntelliJ IDEA.