Расширенная интегрированная среда разработки для чего угодно и не для чего конкретно

Почти никто не подвергает сомнению, что Eclipse — это решение, заслуживающее внимания, и что новая оболочка действительно соответствует и по скорости, и по функциональности графическому пользовательскому интерфейсу Windows
Когда консорциум компаний, возглавляемый IBM, прошлой осенью начал создание свободно распространяемой инструментальной оболочки, тут же поползли слухи. Не только о том, что в Eclipse не используются стандартные Java-библиотеки AWT (Abstract Window Toolkit) и Swing; их заменяет SWT (Standard Widget Toolkit) для базовых функций и JFace — для расширенных возможностей, а само существование Eclipse ставит под вопрос использование поддерживаемой Sun Microsystems свободно распространяемых инструментальных средств NetBeans. После анонса стало ясно, что Eclipse будет содержать столь же многочисленные инструментальные компоненты промежуточного уровня, что и Sun NetBeans. Действительно ли Eclipse имеет своей целью лишить Sun единоличного контроля над Java? И да, и нет.

Почти никто не подвергает сомнению, что Eclipse — это решение, заслуживающее внимания. Тестирование показало, что с его помощью действительно создаются Java-приложения самого высокого класса, способные поспорить с разработками на базе Visual Studio .Net, и что новая оболочка действительно соответствует и по скорости, и по функциональности графическому пользовательскому интерфейсу Windows, которому отдают предпочтение даже большинство разработчиков на платформе J2EE. Частично это объясняется тем, что его основу составляет SWT/JFace. Как заметил Крис Гриндстаф, ведущий сотрудник компании Applied Reasoning и бывший разработчик VisualAge, в AWT базовые элементы управления операционной системы скрыты. Другими словами, код, непосредственно взаимодействующий с разнообразными виджетами (графические элементы управления. — Прим. ред.), написан на языке Си, к нему нельзя обратиться непосредственно с помощью Swing. В то же время SWT в Eclipse инкапсулирует нижележащую операционную систему прозрачным образом.

Критики SWT утверждают, что такой подход сводит на нет все преимущества Swing, которыми она обладает в силу своей универсальности. Благодаря созданию своих собственных виджетов на множестве базовых графических примитивов, Swing повсюду выглядит одинаково. Это старые споры, но тот факт, что Java не удалось утвердиться на настольных системах с Windows, подчеркивает, насколько важен для пользователей оригинальный внешний вид. Верно и то, что SWT пока нельзя использовать где угодно. Но Eclipse 2.0 работает с Windows, Motif и GTK+ (Gimp Toolkit) 2, да и поддержка Mac OS X вот-вот будет реализована. В отличие от Swing, Eclipse непосредственно работает с функциями операционной системы, скажем, с Windows XP.

«Платформе Microsoft привержены многие программисты, но одновременно есть и Gnome/GTK, — заметил Гриндстаф. — Так почему бы этим не воспользоваться?»

Однако сильной стороной Eclipse является не только технология SWT/Jface. Основной разработчик Eclipse, компания Object Technology многие годы совершенствуется в искусстве создания компонентных интегрированных сред разработки — Smalltalk/Envy, VisualAge for Java — и переносимых графических пользовательских интерфейсов. Современная дискуссия, в которой AWT/Swing противопоставляется SWT/JFace, повторяет борьбу с переменным успехом между версиями Smalltalk с ParcPlace (эмулированный графический пользовательский интерфейс) и с DigiTalk (оригинальный графический интерфейс). Должна ли Sun поступить с Java точно так же, как Object Technology предлагала Sun в своих отчетах несколько лет назад? Все больше специалистов считают, что так и следует сделать.

Подобная непредусмотрительность, конечно, ничем не поможет компаниям, серьезно заинтересованным в Swing. «Eclipse, безусловно, прекрасная вещь, особенно для Windows», — считает Стив Бенфилд, директор по технологиям компании SilverStream. Бесконфликтная интеграция инструментов — отличительная особенность Eclipse и NetBeans. Это замечательная черта, но один лишь общий пользовательский интерфейс не в состоянии объединить различные идеологии.

Однако производители, продукты которых тесно связаны с поддержкой цикла разработки, не могут уклониться от решения этого вопроса. Возьмем, к примеру, Merant. С точки зрения ее системы контроля версий PCVS существует три платформы, для которых создаются модули расширения: Visual Studio .Net, Eclipse и NetBeans. Модуль расширения для .Net — данность. В области J2EE Merant выбрала Eclipse (и присоединилась к консорциуму), поскольку это, по словам Патрика Меррита, старшего менеджера Merant по продуктам, было требованием пользователей.

Заметным исключением среди компаний, поддержавших Eclipse, стала BEA Systems. «Если вы намерены предложить что-то взамен стандарта, то это ?что-то? должно быть в десять раз лучше», — считает Джордж Снеллинг, директор по инжинирингу компании BEA. Он утверждает, что добиться успеха с помощью Swing можно, но это требует ума и таланта, а эти качества отнюдь не часто бывают востребованы при попытках разгрызть твердый орешек Java GUI. Марк Лой, соавтор монографии O?Reilly?s Java Swing, придерживается того же мнения: «Если Swing можно было бы создать на основе усовершенствованного варианта AWT, мы бы обрели свой золотой стандарт».

BEA WebLogic Workshop — это приложение Swing, не связанное ни с Eclipse, ни с NetBeans. Будет ли пользоваться интересом Swing, перейдя на фундамент SWT? Снеллинга это не волнует.

«Если Sun решит упростить себе жизнь, перейдя на SWT, это не наше дело», — сказал он. Снеллинг сомневается в превосходстве Eclipse, которая, согласно официальной презентации проекта, является «расширенной интегрированной средой разработки для чего угодно и не для чего конкретно». Visual Studio .Net, по его словам, добилась успеха благодаря тому, что предлагает базовую функциональность, а не просто содержит самые хорошие модули расширения.

Оболочка для динамически подключаемых инструментальных компонентов на базе J2EE — это, безусловно, замечательная идея. «Не удивительно, что с ней выступила IBM. Она скопировала наш подход NetBeans, поскольку он правильный», — считает Дрю Энгстром, менеджер серии продуктов Sun ONE Studio. Скотт Хебнер, директор по маркетингу IBM WebSphere, заметил, что Eclipse никак не влияет на положение Sun, а целью конкурентов являлась Microsoft. В любом случае, они оба являются свободно распространяемыми проектами, на которые Sun и IBM, по их утверждению, оказывают минимальное влияние.

«Это происходит помимо нас, — заметил Скип Макгоджи, один из руководителей проекта Eclipse от корпорации IBM, и добавил — Сообщество программистов само выбирает для решения те задачи, которые кажутся ему наиболее важными».

Вне зависимости от того, насколько значительна власть Sun и IBM в этих сообществах, не понятно, какой проект — Eclipse или NetBeans — решает самые насущные задачи. Интегрированные среды разработки были и будут. Основой инструментальной среды всегда был и, возможно, остается редактор emacs. Самым важным новшеством является жизнеспособность Java на настольных системах с Windows и на устройствах меньшего размера, которые просто не в состоянии поддерживать Swing.

Вне зависимости, было ли это сделано преднамеренно или получилось случайно, участие IBM в проекте Eclipse и SWT — это притязание на роль лидера на рынке Java. Многие одобряют этот шаг, но предпочли бы, чтобы IBM осознавала реальное положение вещей и передала SWT на утверждение в рамках Java Community Process. «Если это хорошо для Java, давайте сделаем его открытым», — заметил Энгстром.

«Мы могли бы выработать совместные договоренности с Sun Microsystems», — считает Макгоджи.

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

Намного важнее базовый вопрос об SWT/AWT. Если IBM и Sun могут определить общие позиции как в рамках Java Community Process, так и вне них, это следует сделать во что бы то ни стало, не откладывая. Время летит.