Новейшие средства разработки на Java обеспечивают полную поддержку JDK 1.1, повышенную производительность и расширенные функциональные возможности

В ближайшее время на рынке появится пакет JDK 1.2, а пока разработчики получили целый ряд новых инструментальных средств на основе JDK 1.1. В тестовой лаборатории JavaWorld были проведены испытания шести лучших, интуитивно понятных средств визуальной разработки для JDK 1.1. Вниманию читателей предлагается отчет о результатах тестирования, содержащий всестороннюю объективную оценку представленных продуктов. Надеемся, что наши материалы дадут пользователям возможность выбрать средство, в наибольшей степени отвечающее их потребностям.

В данном обзоре приводится сравнительная оценка профессиональных версий шести лучших средств визуального проектирования для JDK 1.1:

  • JBuilder 1.0 Professional (Borland);
  • Cosmo Code 2.5 (Cosmo Software);
  • VisualAge for Java 1.0 Professional (IBM);
  • Java WorkShop 2.0 (Sun);
  • SuperCede 2.0 Professional (SuperCede);
  • Visual Cafe 2.1 (Symantec).

Темпы развития визуальных средств разработки на языке Java, достигнутые за последние девять месяцев, поражают воображение. В прошлом году большинство этих продуктов не дотягивало даже до уровня ранних версий Borland C++. Сегодняшнее поколение сред разработки выглядит гораздо более мощным и дружественным.

КРИТЕРИИ ОЦЕНКИ

В данном обзоре рассмотрены наиболее популярные средства визуальной разработки, совместимые с пакетом JDK 1.1. За последние месяцы на рынке появилось множество новых или усовершенствованных продуктов. Если вы не можете себе позволить приобрести дорогие средства разработки, повнимательнее присмотритесь к альтернативным продуктам. С одной стороны, поддержка пакета JDK стала встраиваться в средства разработки относительно недавно. С другой - список этих продуктов уже достаточно обширен, и выбор кандидатов для данного обзора оказался непростой задачей. Основываясь на информации, почерпнутой из писем читателей JavaWorld, отчетов, публикуемых исследовательскими компаниями, и полагаясь на опыт специалистов, принимавших участие в тестировании, нам удалось выработать ряд критериев. По нашим условиям среда разработки должна была соответствовать следующим требованиям:

  • иметь полноценную коммерческую (не бета-) версию;
  • поддерживать визуальное программирование, предлагая по крайней мере возможности для размещения на экране нужных объектов без написания кода;
  • обеспечивать совместимость с JDK 1.1, включая возможность создания и применения многократно используемых компонентов;
  • занимать прочное положение на рынке средств разработки на Java;
  • иметь "профессиональную" версию или ее эквивалент. (Такие продукты, как Sybase PowerJ Enterprise, представлены на рынке в виде "корпоративной" или "многоуровневой" среды разработки баз данных. Они не отвечают всем вышеперечисленным требованиям и поэтому не фигурируют в нашем обзоре наряду с профессиональными средствами.)

Из всех указанных критериев труднее всего определить количественные показатели прочного положения на рынке. Сложность объясняется тем, что мнения аналитиков в отношении трех лидирующих продуктов (Visual J++, Cafe и Java WorkShop) очень сильно расходятся. Проанализировав опубликованные ранее обзоры (в том числе и на страницах предыдущих выпусков JavaWorld), в своих выводах мы постарались по возможности придерживаться объективного подхода.

КТО НЕ ПОПАЛ В ОБЗОР

Мы решили исключить Microsoft Visual J++, поскольку окончательный вариант новой версии этого продукта (которая получила номер 6.0, позволивший ей сравняться с номерами версий других средств разработки Microsoft - в частности, с Visual C++) еще не появился на рынке к моменту начала тестирования. Поставляемая в настоящее время версия 1.1 пакета Visual J++ не рассматривалась, поскольку с июня прошлого года в ней не произошло никаких изменений. (С тех пор Microsoft уже успела встроить в свои продукты пакет SDK for Java 2.0, поддерживающий большинство возможностей JDK 1.1, но не позволяющий создавать и применять многократно используемые компоненты.

Мы исключили и Metrowerks Code Warrior Professional, потому что данное средство имеет крайне слабые возможности визуального программирования и поддержки JDK 1.1. Средство Constructor не вполне совместимо с интегрированной средой разработки; с его помощью не удастся создать некоторые элементы экранного интерфейса, а также многократно используемые компоненты.

Для проведения анализа корпоративных средств, ориентированных на многоуровневое проектирование, требуется определить принципиально иные критерии оценки. Наиболее важными параметрами для них являются удобство и надежность взаимодействия с базами данных, поддержка протокола RMI (Remote Method Invocation), а также возможность работы с унаследованными системами. Кроме того, правила лицензирования данных продуктов должны быть достаточно гибкими, а производителю необходимо позаботиться об обучении и технической поддержке пользователей. Учитывая все вышеперечисленное, средства корпоративной разработки (такие, как Sybase PowerJ) в данном обзоре не рассматриваются.

ПЛАТФОРМА, ВЫБРАННАЯ ДЛЯ ТЕСТИРОВАНИЯ

Каждый программный пакет проходил испытания на компьютере с процессором Pentium II 266 МГц, 64 Мбайтами ОЗУ, жестким диском 5,2 Гбайта и 20-дюймовым монитором, а также на ПК с процессором Pentium-133, 32 Мбайтами ОЗУ, жестким диском 4,3 Гбайта и 17-дюймовым монитором. На обоих компьютерах была установлена операционная система Windows 95 OSR2 (OS Release 2). В ходе тестирования проверялось, насколько быстро можно создать новый проект в каждой из интегрированных сред. Кроме того, учитывались простота создания и применения многократно используемых компонентов. Чтобы уменьшить вероятность ошибок, все результаты обсуждались с производителями тестируемого ПО.

РЕЗУЛЬТАТЫ ТЕСТИРОВАНИЯ

С момента публикации результатов нашего последнего тестирования (июнь 1997 года) средства разработки на Java претерпели ряд существенных изменений. Это настолько ощутимо, что многие продукты, заслужившие в свое время высоких оценок, сегодня уже не удовлетворяют предъявляемым требованиям.

При объектно-ориентированном программировании разработчик решает две основные задачи: определение классов и использование их методов. Применительно к Java это означает создание и использование компонентов JavaBeans. Все рассмотренные нами продукты позволяют быстро и удобно проектировать и встраивать в другие приложения повторно применяемые компоненты. Кроме того, каждое средство разработки обладает возможностью визуальной компоновки интерфейсных форм из уже имеющихся элементов (например, из классов AWT).

Табл. 1. Общие сведения о продуктах
  Borland JBuilder 1.0 Pro-
fessional
IBM Visual-
Age for Java 1.0 Pro
Cosmo Software Cosmo Code 2.5 Sun Java Work-
Shop 2.0
SuperCede Inc. SuperCede 2.0 Pro-
fessional
Symantec Visual Cafe Pro 2.1
Бесплатные пробные
версии
Учебная версия Версия начального уровня* Да Да Да Да
Поддер-
живаемые платформы
Windows 95/NT Windows 95/NT, OS/2 Windows 95/NT, SGI Solaris, Windows 95/NT, HP-UX Windows 95/
NT
Macintosh, Windows 95/NT
Цена, долл. 799 99 329 99,95 995 299
* поддерживает до 100 классов, фактически отсутствует система подсказки и электронная документация
** рекомендуемая розничная цена в США

Как известно, многие средства разработки на Java в течение ряда лет значительно уступали в производительности продуктам серии Borland Turbo. Продукция компании Borland была оснащена функциями, позволяющими очень быстро создавать приложения, развитыми средствами проектирования на уровне API и прекрасной справочной системой. К примеру, уже в 1992 году пользователи Borland C++ могли переместить курсор на ключевое слово в тексте программы, нажать функциональную клавишу и получить исчерпывающую информацию о данной функции или операторе. После этого система предлагала ознакомиться с примерами (в которых содержались ссылки на близкие по назначению функции), а при необходимости и вставить фрагменты примеров в текст своей программы. Подобной справочной информацией, содержащей наглядные примеры, может сегодня похвастаться только пакет JBuilder, в котором очень хорошо проиллюстрированы библиотеки классов, разработанные компанией Borland.

Создатели среды проектирования приложений на Java гораздо больше внимания уделяли принципиально новым технологиям (в частности, диспетчерам компоновки - layout manager). Поэтому наш обзор в основном посвящен средствам, учитывающим специфические особенности языка. К примеру, диспетчеры компоновки Java анализируют свойства объекта и автоматически выбирают нужные значения параметров. Эти значения должны удовлетворять ограничениям среды компоновки. Некоторые средства, представленные на рынке и не вошедшие в данный обзор, написаны настолько грубо, что пользователь не получает никакого представления о назначении указанных параметров. Они позволяют определить только имя свойства и его значение. Приходится самому выбирать, какие именно параметры должны использоваться в том или ином случае, и вручную задавать значения этих параметров, не имея при этом возможности контролировать их правильность.

Сравнительные показатели дискового пространства, требуемого для установки, не позволяют выделить явных лидеров и аутсайдеров: всем продуктам в среднем необходимо 50-60 Мбайт. Полная установка всех компонентов Borland JBuilder занимает на диске 170 Мбайт. Для нормальной работы рекомендуется установить в компьютере не менее 48 Мбайт оперативной памяти и оснастить его монитором, поддерживающим разрешение 1024х768 пикселов. При использовании экрана меньшего разрешения придется постоянно прокручивать окно в ту или другую сторону, чтобы просмотреть спрятанную от глаз информацию. Если вам все же придется работать с низким разрешением, обратите внимание на продукты SuperCede и Cosmo Code. Их вкладки и всплывающие палитры инструментов позволяют легко перемещаться от одного объекта к другому.

Все протестированные продукты опираются на создание экранных форм и оснащены специальными конструкторами пользовательского интерфейса. Еще год назад ситуация была совершенно иной: пользователь Visual J++, к примеру, сначала работал с отдельным редактором ресурсов для GUI, а затем обрабатывал полученные результаты в визуальной среде. В любой представленной в обзоре среде сегодня можно создавать проекты более низкого уровня, например в форме пакетов.

Основные особенности

Требования к средствам проектирования на Java варьируются в зависимости от интересов и привычек конкретных разработчиков. Перечень возможностей, приведенных в табл. 2, может быть крайне необходим кому-то, но значит ли это, что он столь же важен и для вас? Этот вопрос вам придется решать самим. В обзоре же мы постараемся выделить наиболее интересные параметры и пояснить их значение.

Что такое визуальная среда разработки?

При отборе кандидатов на тестирование мы учитывали степень поддержки визуального проектирования пользовательского интерфейса, подразумевающего возможность выбора из палитры отдельных компонентов и размещения их в нужном месте. В некоторых источниках подобные средства называются средой визуальной разработки (VDE). Для обозначения инструментов визуального проектирования интерфейса используются самые различные термины: конструктор компоновки, конструктор форм, визуальный композиционный редактор, визуальный редактор, проектировщик экрана, экранный редактор, проектировщик форм и конструктор графического пользовательского интерфейса. В данной статье мы будем применять термин "конструктор пользовательского интерфейса".

Разработчики размещают компоненты в нужном месте, определяют моменты их появления на экране, связанные с ними атрибуты и события. В идеале среда визуальной разработки должна позволять быстро перетаскивать компоненты с помощью мыши и задавать значения изменяемых параметров. Если на выполнение каждой операции будет уходить ощутимое количество времени, то проектирование сложного интерфейса превратится в очень длительную процедуру.

Одни среды базируются на парадигме буксировки объектов (drag-and-drop), в то время как в других для выполнения той же операции достаточно щелкнуть мышью на исходном, а затем на целевом компоненте. Результат получается тот же, но большинство людей предпочитают технологию буксировки. В продуктах SuperCede и Cosmo Code используется метод буксировки, Visual Cafe поддерживает обе технологии, в остальных средствах применяется щелчок мышью. В пакете VisualAge реализована процедура многократного выполнения операции. В этом случае каждый новый щелчок мышью приводит к созданию очередной копии выбранного компонента.

Необходимость и частота обращения к диспетчерам компоновки зависят от выбранной среды. Все средства (за исключением Java Workshop) позволяют свободно размещать объекты внутри формы (не прибегая к помощи диспетчеров). Продукты JBuilder, VisualAge и Java Workshop дают возможность передавать объекты диспетчеру компоновки, который берет на себя всю оставшуюся работу по их размещению. В результате наиболее сложные процессы остаются скрытыми от глаз разработчика.

При использовании средств Cosmo Code, SuperCede и Visual Cafe необходимо четко ориентироваться в технологии и правильно задавать нужные ограничения. Только в этом случае диспетчер компоновки правильно определит схему расположения и размеры объектов. Естественно, если вы хотите свободно перемещать объекты, от услуг диспетчера компоновки придется отказаться.

JBuilder, VisualAge, Cosmo Code, SuperCede и Visual Cafe позволяют выбирать сразу несколько объектов для помещения их в буфер обмена и последующего копирования. Только с помощью JBuilder, VisualAge и Visual Cafe можно одновременно изменить свойства нескольких объектов. Хотя при работе с VisualAge отменять ограничения схемы компоновки сразу для многих объектов запрещено, в состав этого инструмента входят системы, позволяющие настроить схемы компоновки нужным образом и изменять размеры сразу нескольких объектов.

Парадигма визуального программирования

Понятие визуального программирования предусматривает наличие более широких возможностей, чем может предложить большинство средств визуальной разработки. Кроме базовой возможности визуального размещения объектов, общей для рассматриваемых нами продуктов, они существенно различаются своими подходами к визуальному программированию. Чтобы разобраться в этих различиях и оценить их значение, совершим краткий экскурс в историю визуального программирования.

Основные положения визуального программирования были сформулированы компанией Next Computer в процессе разработки операционной системы NextStep: задача программиста значительно облегчается, если вместо написания кода вручную использовать манипулирование графическими объектами. Эффективность визуального программирования определяется не столько наличием визуальных компонентов, сколько их взаимосвязью и взаимодействием с традиционными средствами.

Поскольку с помощью визуального программирования нельзя эффективно решить все вопросы проектирования, большинство продуктов не поддерживают все его аспекты. В среде JBuilder и Java WorkShop в отличие от Java Studio (набора средств разработки на Java, предназначенного для непрограммистов) возможности визуального программирования не столь широки. Компания SunSoft планирует включить Visual Studio в состав очередной версии пакета Java WorkShop и обеспечить более тесную интеграцию этих двух продуктов. В результате будет предложен набор мощных инструментальных средств, предназначенных как для программистов, так и для людей, не занимающихся написанием кода.

Среды Cosmo Code, SuperCede, Visual Cafe и VisualAge - в той или иной степени поддерживают визуальное программирование. Java Studio содержит визуальные средства управления многократно используемыми компонентами. Версия Java Studio 1.0 стала первой серьезной попыткой JavaSoft попробовать свои силы в визуальном программировании, однако данное средство в настоящее время поставляется отдельно от Java WorkShop и имеет слишком серьезные ограничения в сравнении с продуктами IBM. Это объясняется тем, что в Studio реализован специальный механизм организации связей между используемыми компонентами, в то время как IBM поддерживает все виды имеющихся интерфейсов для каждого компонента.

Лучшие средства визуального программирования отличаются возможностью эффективного взаимодействия с невизуальными объектами. К примеру, любой из этих инструментов позволяет одним нажатием кнопки мыши перенести значение текстового поля в поле списка. Но только с помощью VisualAge вы сможете использовать графическое представление списка в качестве параметра неграфических компонентных методов, автоматически извлекая атрибуты описания поля списка.

Продукты VisualAge, Cosmo Code и Java Studio (но не Java WorkShop) имеют оригинальные средства организации взаимодействия с невизуальными компонентами.

Необходимо четко определить, насколько важна для вас схема визуального взаимодействия. Она эффективна только в том случае, если каждому элементу ставится в соответствие отдельный класс. Если несколько кнопок вызывают один и тот же метод, а затем уже уточняется, какая ветвь алгоритма выбирается в том или ином случае, то вряд ли из этого выйдет что-то путное. Ничего хорошего не получится и в том случае, если один объект извлекает данные другого объекта, а всю обработку выполняет третий.

Но даже в таких сложных ситуациях визуальное программирование может облегчить вам жизнь, сгенерировав код для последующего ручного редактирования.

Необходимость компиляции

Приложения, написанные на Java (или других языках), могут быть скомпилированы для получения объектного кода того процессора, на котором будет работать программа. Это позволяет увеличить производительность, оптимизировать код, повысить его качество и безопасность. В свое время мы уже наблюдали подобный процесс в отношении Visual Basic, несколько лет спустя то же самое произошло и с программами, написанными на Perl.

Основные доводы в пользу компиляции программ:

  • Откомпилированные программы обладают существенно более высокой производительностью по сравнению с виртуальными машинами Java и компиляторами JIT. Полнофункциональные компиляторы Java, поставляемые компаниями Symantec и SuperCede, как правило обеспечивают уровень производительности, значительно превышающий возможности интерпретаторов или JIT-компиляторов. (В состав четырех программных пакетов, выпускаемых другими фирмами, подобные компиляторы не включены.)
  • Низкий уровень кода, получаемого на выходе транслятора, усложняет процедуру декомпиляции. Получить исходный код Java из байт-кода можно без особого труда. Продукты, предназначенные для защиты от декомпиляторов, значительно усложняют эту задачу, но не гарантируют полной безопасности. Кроме того, этим средствам присущи существенные недостатки. К ним относятся дополнительные этапы, появляющиеся при разработке программ, сложность отладки и необходимость принятия дополнительных мер, направленных на успешное выполнение возложенных на программу задач.
  • Бездумное следование принципу "написано однажды - работает везде" иногда не только не приносит никакой пользы, но может причинить немалый вред. Особенно это касается ответственных приложений (финансового ПО, процедур управления машиной, средств организации беспроводной связи и обеспечения безопасности). Перед их переносом на новую платформу подобные программы придется тестировать особенно тщательно. Распространение ПО, представленного в форме байт-кодов, может оказаться не таким уж безобидным: оно должно работать на любой платформе, но никто этого не проверял. Разработчик любой программы прежде всего должен задать себе вопрос: можно ли выполнять данное приложение на платформе, которая принципиально отличается от платформы, выбранной для тестирования? или - будет ли программа работать правильно после обновления существующей версии JDK или библиотек классов, выпущенных третьими фирмами? Если вы не решаетесь ответить утвердительно на какой-либо из этих вопросов, необходимо использовать версию приложения, специально скомпилированную для каждой конкретной платформы.
  • Учтите, что ПО скорее всего будет применяться в условиях ограниченного объема памяти. Для нормальной работы всех библиотек классов, входящих в состав JDK, требуется более 10 Мбайт ОЗУ. При этом для поддержки операционной системы дополнительно необходимо еще от 1 до 10 Мбайт, а при использовании браузера на стандартном настольном компьютере придется выделить еще около 8 Мбайт. Специалисты компании Sun утверждают, что для функционирования библиотек классов PersonalJava достаточно 2 Мбайт ОЗУ, но далеко не всех устраивают ограниченные возможности этого подмножества языка. Помимо PersonalJava, приложения могут создаваться с использованием средств Java Card, EmbeddedJava или JDK. Единственной гарантией работоспособности байт-кода является полная поддержка JDK. В скомпилированные приложения включаются функции всех необходимых библиотек. Можно также воспользоваться динамической библиотекой компании Symantec, которая занимает 2,5 Мбайт памяти и поддерживает все классы и методы JDK 1.1.

Symantec разработала двоичную версию библиотеки классов, которая является гораздо более компактной по сравнению со стандартным JDK. Вместо применения 9-мегабайтного файла classes.zip скомпилированным приложениям Java вполне достаточно тех динамических библиотек (DLL), функции которых действительно используются. (Для поддержки полного набора библиотек JDK потребуется не более 4 из 9 Мбайт.)

В июньском обзоре мы отмечали возможность получения скомпилированного кода Java при помощи средств пакета SuperCede. Теперь аналогичным компилятором может похвастаться и Visual Cafe. Пакет Cosmo Code также предлагает некоторые возможности компиляции, транслируя код Java в инструкции MIPS. Другие производители собираются включить компиляторы в будущие версии своих продуктов.

Табл. 2. Основные возможности
Основные возможности JBuilder 1.0 (Borland) VisualAge for Java 1.0 Pro (IBM) Cosmo Code 2.5 Pro-
fessional (Cosmo Software)
Java Work-
Shop 2.0 (Sun)
Super-
Cede 2.0 Pro-
fessional
(Super-
Cede)
Visual Cafe Pro 2.1 (Symantec)
Управление конфи-
гурацией (УК), профи-
лировщик и средства тестирования (СТ)
Нет Нет (В корпора-
тивной версии имеются средства УК)
Нет Интер-
фейс УК, встро-
енный про-
фили-
ровщик и базовые СТ
Инте-
грация с
версией 2.0
и про-
фили-
ровщиком
VTune
СТ, УК, VTune
Визуальное (интер-
активное) програм-
мирование
Нет. Имеется не под-
держи-
вающий графи-
ческих возмож-
ностей Мастер взаимо-
действия
Отлично: тесная взаимо-
связь визу-
альных и невизу-
альных компо-
нентов, воз-
мож-
ность выбора вида взаимо-
действия
Воз-
мож-
ность объеди-
нения визу-
альных и невизу-
альных компо-
нентов
Нет. Продукт Studio под-
держи-
вает огра-
ничен-
ное визу-
альное взаимо-
действие, в том числе и с невизу-
альными компо-
нентами
Взаимо-
связь визу-
альных
и невизу-
альных
компо-
нентов
Взаимо-
действие визу-
альных компо-
нентов между собой
Печатная доку-
ментация
Хорошая. Руководство програм-
миста, вклю-
чающее ряд учебников (более 210 стр.). Руко-
водства пользо-
вателя (более 220 стр.)
Хорошая. Руко-
водство пользо-
вателю (более 200 стр.). Руко-
водство про-
грам-
мисту (190 стр.)
Недо-
статоч-
ная. Имеется только буклет
для начала работы (17 стр.)
Легкие для чтения учеб-
ники: Explo-
ring Java Work-
shop (108 стр.)
Очень
под-
робное
руко-
водство
пользо-
вателя
(275 стр.) и учебник
для начала работы
(70 стр.)
Расши-
ренное описание задач (более 400 стр.). Руко
водство пользо-
вателя (200 стр.), а также электрон-
ная доку-
ментация (140 стр.)
Поддержка баз данных Да Только в корпо-
ративной версии
Да Ограни-
ченная. Полная под-
держка - в корпо-
ративной версии
Сред-
ства мани-
пули-
рования
дан-
ными
для любых
источ-
ников,
совме-
стимых с
JDBC
Ограни-
ченная. Полная под-
держка - в корпо-
ративной версии
Интер-
активная доку-
ментация
Очень хорошее описание классов Borland, но отсутствие кон-
текстной помощи
Нет кон-
текстной помощи, про-
|стейшая спра-
вочная система и учебники
Только основ-
ные
понятия
Имеется, но работает слишком медленно Про-
стейшая спра-
вочная
система и учебники
Только основные понятия
Генерация страниц HTML Да Да Да Да Да Да, включая визу-
альные страницы
"Обратное" проек-
тирование
Да Нет Нет Нет Нет Да
Включение в палитру соб-
ственных объектов
Да Да Да Да Да, компо-
ненты или элементы ActiveX
Да
Поддержка ActiveX Нет В версии для Web Нет Нет Да Нет
Допол-
нительные библиотеки классов Java
100 наиболее важных ком-
понентов Beans
Не вклю-
чены в состав поставки, но имеются на Web
Rogue Wave J-
Wid-
gets, JTools, JDB-
Tools и Jchart
Да KL Group
BWT,
Shafir JCT, Stingray Objective
Grid и Objective
Blend
Да
AFC или JFC Обе библи-
отеки
Нет Нет JFC Нет JFC
Поддержка JDBC Да Да Да Да Да Да
"Родные" методы JNI JNI JNI JNI JNI, прямой вызов
методов C/C++ в исходном коде
JNI

Универсальность

Такие средства позволяют генерировать код на основании созданного визуального представления. Сгенерированный код как минимум дает возможность вывести созданный при помощи визуальных инструментов объект на экран. В данной статье под "обратным" проектированием понимается воссоздание кода программы, исходя из визуального представления. Из перечисленных продуктов такой возможностью обладают только Visual Cafe и JBuilder.

Степень важности обратного проектирования обусловлена двумя причинами: хорошей интеграцией с программированием вручную и улучшением качества проектов Java. Давайте более детально рассмотрим этот вопрос, с тем чтобы вы сами смогли оценить всю его важность.

Интеграция визуальных средств с кодом, написанным вручную

Парадигме визуального программирования свойственны некоторые ограничения. Среди них можно выделить неполную поддержку всех объектов и методов (этот недостаток присущ, например, Microsoft Visual J++ 1.1). Кроме того, пользователь наверняка пожелает, чтобы его приложение (например, графическая программа) динамически формировало изображения на экране, а также автоматически генерировало экранные формы и отчеты для базы данных. Это тоже далеко не всегда возможно.

В любом случае вам придется изучать программный код и вносить в него необходимые изменения. Все средства позволяют вручную писать код, не зависящий от визуального программирования. В большинстве случаев генерируются также модули, редактирование которых вручную запрещено. Помимо частей программы, куда разрешено вносить изменения, пользователи могут свободно редактировать любые процедуры собственной разработки.

В этом смысле продукт IBM VisualAge for Java обладает двумя свойствами, имеющими несомненную ценность. Во-первых, он помогает создавать программный код при помощи "конструктора компонентов". Эти компоненты в дальнейшем могут быть интегрированы в разрабатываемое приложение с использованием методов визуального программирования. Во-вторых, большая часть кода, на который не накладывается никаких ограничений, представляется в виде отдельных файлов. Единственный, не очень серьезный недостаток - VisualAge блокирует в момент редактирования заголовки некоторых файлов, в то время как программисту может понадобиться их изменить.

Заметим также, что хотя JBuilder и Visual Cafe и обладают возможностями обратного проектирования, они не гарантируют правильность выполнения кода, если в него вносятся какие-либо изменения. JBuilder и Visual Cafe позволяют в полной мере воспользоваться своими преимуществами только в том случае, если вы создаете программный код при помощи соответствующих средств или пишете его вручную, придерживаясь определенных соглашений. К примеру, нельзя передавать переменную в качестве параметра методу setColumns(). Ни один из представленных продуктов не в состоянии быстро отыскать допущенную синтаксическую ошибку. Сообщения Visual Cafe не всегда понятны, а JBuilder и вовсе не выдает никаких сообщений. В Visual Cafe визуальное представление останется без изменений, пока не будут внесены изменения в программный код. Работа JBuilder вполне может завершиться некорректно.

Импорт Java-кода

Возможно, у вас уже имеется готовый код, который необходимо импортировать в приложение Java. Он может быть создан с использованием других средств, извлечен из информационных хранилищ Internet или получен в ходе разработки предыдущих проектов. Любая интегрированная среда Java должна иметь возможность добавления уже имеющегося файла к проекту. В дальнейшем этот файл скорее всего можно будет редактировать только вручную, визуальные средства не поддерживают ранее написанный код.

Что такое "открытая архитектура"?

Интегрированная среда разработки является средством, с помощью которого выполняются проектирование, отладка, тестирование и дальнейшее распространение прикладных программ. Для повышения эффективности данного процесса каждое из средств (конструкторы, отладчики и другие) должно быть реализовано на очень высоком уровне. Непрочное звено ослабляет всю цепочку.

Даже если среда не оснащена самыми лучшими компонентами, она все равно достойна внимания в том случае, если позволяет использовать имеющиеся на рынке альтернативные средства. Пакет Borland C++ базируется на открытой архитектуре начиная с 1992 года. В эту среду без труда можно встроить любимые вами средства, например компиляторы или генераторы тестовых данных. Ни один из продуктов, представленных в данном обзоре, не имеет полностью открытой архитектуры. Однако Borland и IBM предлагают своим партнерам прикладные программные интерфейсы, и с их помощью можно самостоятельно разработать все самое необходимое. Аналогичным образом поступают и другие производители интегрированных сред.

Вы можете использовать внешний инструментарий и в среде, не поддерживающей открытую архитектуру, однако это будет не столь удобно. Например, для работы с внешним редактором придется закрыть редактор IDE, запустить свое приложение и повторно открыть файл с исходным текстом программы. По окончании редактирования надо будет вновь загружать файл в интегрированную среду, дабы установить точки прерывания, скомпилировать и выполнить написанную программу. В среде VisualAge процедура еще более усложняется, поскольку исходный код приходится сохранять не в стандартных файлах, а в базе данных. Это означает, что предварительно нужно экспортировать файлы из базы данных VisualAge, а после обработки их внешними инструментами вновь импортировать в базу данных.

ВЫБОР РЕДАКЦИИ

Читатели JavaWorld высказывают пожелания, чтобы редакция, готовя обзоры, называла лучшее средство, на котором пользователи могли бы остановить свой выбор. Сделать это весьма непросто. Все испытанные средства справляются с возложенными на них задачами. И все же для себя я бы выбрал VisualAge for Java. Это средство дает разработчику возможность сосредоточиться на творческой деятельности (например, на создании бизнес-правил) и берет на себя большинство рутинных операций по проектированию пользовательского интерфейса. Мне нравится и продукт SuperCede, который имеет в своем составе полноценный компилятор, интегрированный отладчик и другие полезные возможности (позволяющие, в частности, изменять код в процессе выполнения программы).

При выборе подходящего для вас средства разработки приложений мы предлагаем вам самим определить наиболее значимые для вас критерии, рассмотреть достоинства и недостатки каждого продукта, а также характеристики, перечисленные в табл. 2. Выбранные вами параметры оценки (производительность, устойчивость, полнота и удобство справочной системы и документации, возможности конструктора пользовательского интерфейса, простота использования и другое) помогут вам сориентироваться в представленной нами информации.

ПОДРОБНОСТИ

В следующих разделах мы подробно рассмотрим каждый из сравниваемых продуктов. Думаем, что приведенных сведений окажется вполне достаточно для того, чтобы вы смогли их проанализировать и сделать правильный выбор.

JBuilder 1.0 Professional компании Borland

В то время как JBuilder по праву гордится своей функциональной полнотой, по удобству работы и возможностям получения подсказки он все же уступает более ранним продуктам Borland (Delphi, Turbo C++ и т.д.).

Достоинства

Среди "профессиональных" версий средств разработки на Java JBuilder выделяется наиболее полной поддержкой интерфейса с базами данных. Полная установка пакета займет на диске 170 Мбайт (не включая локальной версии Interbase и пакета Intrabuilder). Помимо стандартных классов JDK 1.1 в состав поставки JBuilder включена собственная библиотека компонентов JavaBeans (JBCL), апплеты, разработанные Sun, библиотека Java Generic Library (JGL), а также beans-компоненты, созданные компанией KL Group (каждое поле имеет отдельную вкладку в палитре). Вы можете добавлять к любой странице свои собственные страницы и компоненты.

JBuilder, как и Visual Cafe, позволяет вести разработку двумя способами: с использованием визуальных средств или путем написания программного кода вручную. Умелое сочетание этих двух технологий дает возможность значительно ускорить процесс разработки, но для понимания того, какое средство лучше применять в каждом конкретном случае, требуется определенный опыт.

Справочная система JBuilder составлена из множества отдельных "книг", между которыми установлены гипертекстовые связи. Каждая книга имеет собственный предметный указатель, кроме того существует главный индекс, с помощью которого можно вести поиск любого раздела справочной системы, не заботясь о том, в какой книге этот раздел находится. К некоторым расширенным библиотекам и классам KL Group прилагается дополнительная документация, содержащая массу примеров. Примеров, поясняющих применение стандартного интерфейса прикладных программ Java и JGL, не приводится. Следует заметить, что предыдущие версии продуктов Borland всегда отличались прекрасной документацией, изобилующей примерами использования API и стандартных библиотечных функций.

Конструктор пользовательского интерфейса, входящий в состав JBuilder, позволяет перетаскивать объекты мышью и помещать их в менеджер компоновки (аналогично тому, как это делается в пакетах VisualAge и Java WorkShop). Наиболее сложные операции автоматически выполняются менеджером компоновки. Отдельные действия (копирование, удаление и изменение свойств) можно выполнять сразу над несколькими объектами.

Разработчикам предлагается API-интерфейс, с помощью которого они могут включать в интегрированную среду собственные компоненты.

В состав пакета JBuilder включены мощные средства создания приложений, управляющих базами данных. Руководство программиста практически полностью посвящено вопросам организации взаимодействия с базами данных, в то время как в Руководстве пользователя рассматриваются более общие аспекты. Среди недостатков можно отметить излишнее акцентирование внимания на вопросах взаимодействия с базами данных в ущерб средствам быстрой разработки и сервисным функциям.

Недостатки

JBuilder работает медленнее других средств, особенно это ощущается в сравнении с Java WorkShop. В некоторых случаях реакции на нажатие клавиши приходится ждать в течение нескольких секунд, хотя изменение формы курсора и дает вам понять, что система восприняла ваше действие. На компьютере с процессором Pentium-133 JBuilder выполнял операции невыносимо медленно, однако при переходе на процессор Pentium II 266 МГц производительность стала вполне приемлемой.

Хотя JBuilder и не позволяет организовать взаимодействие с визуальными средствами, в состав пакета входит "мастер" взаимодействия - Interaction Wizard. По некоторым причинам такая технология менее удобна, чем подход, применяемым в VisualAge for Java:

  • Появляются дополнительные сложности с выбором объектов. Визуальный выбор объектов в момент начала работы с "мастером" не оказывает нужного воздействия, и в конце концов объекты приходится выбирать из списка.
  • "Мастер" взаимодействия нельзя использовать при работе с неграфическими компонентами.
  • "Мастер" распознает только те объекты, о которых ему сообщили заранее. (Большинство средств получают необходимую информацию при помощи интерфейса, отражающего основные свойства компонентов.)
  • "Мастер" не предназначен для масштабной генерации кода. Количество программного кода, который придется писать вручную, зависит от используемых управляющих элементов. Компоненты JBCL имеют специальный интерфейс, позволяющий им обмениваться данными, поэтому организация взаимодействия в данном случае не вызывает затруднений. К примеру, можно легко составить список из нескольких колонок, в который будет помещаться информация из базы данных, поскольку компоненту базы данных известен формат, понимаемый компонентом списка.

Помимо указанных ограничений "мастер" взаимодействия имеет и другие недостатки. Вместо того, чтобы запускать "мастер" из контекстного меню, появляющегося при нажатии на объекте правой кнопки мыши, приходится обращаться к главному меню. После запуска "мастера" на экране появляется неперемещаемое диалоговое окно. Поэтому если вы забыли имя нужного объекта, процесс придется прервать, а затем повторить все его этапы заново.

Средство настройки, позволяющее сообщить "мастеру" о неизвестных ему компонентах, изобилует множеством ошибок и недочетов. В частности, "мастер" не может разместить все компоненты в выпадающем меню, так как компоненты AWT и JBCL уже присутствуют в исходном коде. Если вы хотите определить порядок взаимодействия с компонентом, не представленном в списке, вам придется указать его полное имя (например, java.awt.List). Если же диалоговое окно настройки было вызвано непосредственно из "мастера", вы не сможете ввести нужное имя. Еще одним недостатком является то, что в момент ввода имени компонента размеры окна, в котором отражаются все события, становятся слишком маленькими. В результате для того чтобы просмотреть нужные имена, приходится довольно долго перемещаться внутри списка.

Многие средства, рассматриваемые в данном обзоре, не позволяют рисовать с помощью конструктора графического интерфейса даже простейшие геометрические фигуры. JBuilder предоставит вам такую возможность, но в довольно своеобразной манере. На палитре инструментов не имеется никаких стандартных средств рисования, с помощью которых можно было бы создать нужный контур. Вместо этого, вы должны воспользоваться набором фигур, содержащихся в библиотеке JavaBeans Control Library. Сначала необходимо выбрать одну из стандартных фигур (окружность, прямоугольник, вертикальную или горизонтальную линию и т.д.), а затем определить ее размер, цвет и местоположение. С помощью подобного инструментария вы не сможете не только нарисовать фигуру произвольной формы, но даже и провести линию, угол наклона которой не кратен 45 градусам.

Cosmo Code 2.5 компании Cosmo Software

Cosmo Code является прекрасным средством для быстрой разработки небольших апплетов. Если вы собираетесь создавать коммерческие приложения, то отсутствие интеграции с другими продуктами значительно затруднит процесс. Изначально Cosmo Code был выпущен корпорацией Silicon Graphics, но впоследствии группа разработчиков учредила независимую компанию Cosmo Software.

Достоинства

Одним из важнейших достоинств продукта являются развитые средства анализа кода. Вы всегда можете определить, какая процедура вызвала данный метод, в какой функции выполняется чтение или модификация определенной переменной, а также просмотреть имена всех переменных, методов и классов. К примеру, если мне необходимо изменить в одном из классов переменную типа "total", и я хочу посмотреть, какие методы при этом будут затронуты, достаточно ввести в поле "Search for" строку "total", выбрать в поле "Using Query" параметр "Methods Modifying Members" и нажать кнопку "find". После этого в поле "Using Query" нужно выбрать значение "Methods Reading Members" и повторить операцию. Было бы гораздо удобнее объединить два этих действия, но, к сожалению, пока Cosmo Code не имеет опции поиска "Methods Using Members".

Помимо возможности "связывания компонентов" Cosmo Code имеет развитые средства визуального программирования. Конструктор пользовательского интерфейса (так же, как и аналогичные средства JBuilder, VisualAge, SuperCede и Visual Cafe) позволяет выделить сразу несколько элементов и выполнить операцию копирования, удаления или изменения атрибутов группы объектов. Единственным недостатком является невозможность прямого выбора нужных объектов с помощью мыши (при этом автоматически выбирается объект верхнего уровня или текущая панель). Поэтому для того, чтобы выделить несколько объектов, необходимо выполнить команду "Select All", после чего, удерживая клавишу Shift, снять выделение со всех ненужных элементов.

Если вы являетесь поклонником компьютеров Silicon Graphics, могу вас порадовать: Cosmo Code работает и на этой платформе (по крайней мере так утверждается в рекламе версии 2.2), хотя не знаю, обладает ли он такими же возможностями, как на других платформах.

Недостатки

Проекты, поставляемые вместе с Cosmo Code в качестве примеров, довольно слабы и не используют всех возможностей данного средства. А некоторые из них даже не вполне корректно реализованы. К примеру, хотя Cosmo Code и скомпилировал пример "impression", выполняться тот отказался. После открытия примера "bounce" и обработки его визуальными средствами, на экране появилось сообщение об ошибке. (В сообщении говорилось, что система не может обнаружить класс Stage в хранилище классов - "Stage is not in CLASSPATH". Нам известно, что класс Stage используется в проекте, поэтому совершенно непонятно, почему его следует искать в CLASSPATH.)

При попытке обойти данную ошибку, мы обнаружили в пакете Cosmo Code две полезные возможности. Во-первых, система позволяет удобно определять окружение переменных. Во-вторых, в файле "readme.txt" описаны ситуации, которые могут поставить пользователя в тупик, и пути выхода из этих ситуаций. Однако нашу проблему с помощью этих советов, к сожалению, так и не удалось решить.

Пользовательский интерфейс Cosmo Code несколько статичен и не всегда интуитивно понятен. К примеру, если в процессе работы с файлом или формой вы захотите закрыть проект, то с удивлением обнаружите, что в меню File отсутствует пункт Close. Оказывается необходимо открыть проект в окне Project, и только после этого пункт Close появится в меню File.

Система оперативной помощи Cosmo Code не выдерживает никакой критики. Она ограничивается краткими выдержками из документации Sun по языку Java и API-интерфейсам. Нет ни одного примера использования API, а количество ссылок "см. также" крайне ограничено. Отсутствует контекстная справка для методов и классов, а многие важные особенности Cosmo Code и вовсе не нашли отражения в документации. К примеру, при редактировании компонентов JavaBeans вам может встретиться кнопка переключателя "focusTraversable", которая принимает значения "Истина/Ложь", но в данный момент недоступна. Если вы нажмете клавишу F1, на экране появится пространное описание, в котором, впрочем, ни слова не говорится о "focusTraversable", зато подробно расписано, как нужно правильно щелкнуть мышью, чтобы установить кнопку во включенное положение. Как мы ни старались, нам так и не удалось ничего узнать ни о переключателе "focusTraversable", ни о его свойствах. Полностью отсутствует справочная информация и по многим другим вопросам.

Поиск в справочной системе ограничен возможностями стандартного указателя, который не позволяет искать информацию о языке Java и Java API. Если вам все же удастся обнаружить эти темы, гиперссылок в них вы практически не найдете, поэтому единственным способом изучения остается последовательный просмотр и перелистывание множества электронных страниц.

Сохранение компонентов программы под другим именем может привести к тому, что визуальные средства откажутся работать. Мне не удалось импортировать файл, содержащий информацию о графическом пользовательском интерфейсе, а поскольку Cosmo Code не обеспечивает параллельной разработки визуальных компонентов и программного кода, после импорта процедуры, написанной на Java, визуальные средства перестали функционировать, и для восстановления их работоспособности пришлось затратить немало времени. Компоненты пользовательского интерфейса нельзя также копировать из одного проекта в другой. Причиной этого является то, что конструктор GUI не может выбрать сразу несколько объектов. В результате при копировании объекта теряется почти вся информация, включая данные о его расположении на экране и размерах.

Конструктор пользовательского интерфейса Cosmo Code в отличие от JBuilder, VisualAge, и Visual Cafe не позволяет изменять свойства сразу нескольких объектов.

VisualAge for Java Professional 1.0 корпорации IBM

Уже само название данного средства отражает его прекрасные визуальные возможности. VisualAge for Java обладает множеством достоинств и имеет очень мало недостатков.

Достоинства

Хотя пакет VisualAge for Java появился на рынке недавно, он выполнен на очень высоком уровне и наверняка должен получить хорошие отзывы программистов, работающих на Java. Данный продукт имеет несколько очень важных особенностей. Он поддерживает связь с "унаследованными" приложениями, работающими на мэйнфреймах, содержит расширенные средства визуального программирования, обеспечивает удобные средства создания bean-компонентов, содержит все необходимое для быстрой разработки приложений и для надежного управления файлами.

В некоторых средах в случае сохранения модифицированного файла под неверным именем он может навсегда исчезнуть из проекта. Кроме того, существует опасность присвоения файлу или каталогу имени, которое приведет к конфликтам с другими средствами. В среде VisualAge for Java исходные модули не записываются в виде отдельных файлов. Они хранятся в единой базе данных. Если нужно получить файл в обычном виде, вы должны экспортировать его из базы данных. Это вызывает некоторое неудобство при работе с внешними, такими как ПО управления конфигурацией, но большинство разработчиков считает, что подобный компромисс вполне оправдан.

VisualAge for Java обеспечивает отличную поддержку визуального программирования. Корпорация IBM гарантирует взаимодействие со всеми компонентами JavaBeans, в том числе и с теми, которые не относятся к категории визуальных. Поскольку взаимосвязей может быть довольно много, полное отображение всех линий связей на экране - очень сложная задача. Пакет VisualAge for Java предоставляет разработчику возможность самому определить при помощи фильтров, какие именно соединения должны быть представлены на экране. Большинство других средств разработки на Java позволяет либо представить все связи, либо не отражать их вовсе.

Конструктор пользовательского интерфейса VisualAge (так же, как и в JBuilder или Java WorkShop) поддерживает автоматическую настройку расположения объектов, отбуксированных мышью. Эту роль выполняет диспетчер компоновки (GridBagLayout), поэтому вам не придется вникать в сложности ограничений, которые накладываются на схему компоновки. Вы можете выбрать несколько объектов для выполнения над ними какой-либо операции (копирования, удаления или изменения свойств).

Уникальной особенностью конструктора пользовательского интерфейса VisualAge является то, что он позволяет выполнять операции повторно. Еще одно важное свойство - возможность изменения типа компонента уже после его размещения. Как и все визуальные средства, VisualAge имеет редактор, с помощью которого можно либо показать, либо спрятать определенные свойства. Это имеет большое значение, хотя и приводит к добавлению таких банальных полей, как "enabled".

Создание JNI-интерфейса к функциям C++ упрощается за счет использования "мастера" C++ Access Builder. В состав корпоративной версии VisualAge for Java входят "мастера", предназначенные для создания компонентов, обеспечивающих доступ к базам данных и выполняющих удаленный вызов процедур (Remote Method Invocation), а также для организации интерфейса с системами CICS (Customer Information Control System - произносится "кикс") компании IBM.

Недостатки

Обратной стороной "бесфайлового" подхода VisualAge является сложность интеграции с внешними средствами. Если вам не нравится редактор или какие-то другие компоненты VisualAge, такая ситуация вызывает лишь легкую досаду, но положение становится гораздо более серьезным при необходимости использования профилировщиков, средств тестирования или управления многопользовательской конфигурацией. Вы, конечно, по-прежнему можете работать с внешними средствами, но для этого вам придется сначала экспортировать файлы из базы данных, а затем вновь импортировать их после внесения нужных изменений. Корпорация IBM в рамках программы Object Connection разработала специальный API-интерфейс, который поможет ее партнерам добавлять к интегрированной среде собственные средства. Более подробную информацию об API-интерфейсах VisualAge for Java можно получить по адресу http://www.software.ibm.com/ad/vajava (ссылка "Business Partners").

VisualAge for Java не обеспечивает полной совместимости с JDK 1.1, поскольку не поддерживает встроенных (inner) классов. Это означает, что вы не можете определить класс внутри другого класса. Эту недоработку можно обойти, определяя все классы на уровне пакетов или импортируя байт-коды. Этот недостаток будет устранен в версии 2.0, которая должна появиться летом текущего года. Зарегистрированные пользователи VisualAge for Java Enterprise 1.0 и 1.01 получат обновленную версию 2.0 бесплатно.

Для производителей, занимающихся разработкой коммерческого ПО, однопользовательского хранилища информации VisualAge for Java может оказаться явно недостаточно. Профессиональная версия не поддерживает многопользовательскую среду. Для этого потребуется не только хранить отдельную версию каждого файла, но и помнить, какие версии файлов и какие установки применялись при последней компоновке приложения. Хорошим примером является собственный продукт корпорации IBM под названием Team Connection. "Бесфайловая" природа VisualAge затрудняет работу средств управления конфигурацией. Если вам непременно нужна многопользовательская среда, можно приобрести корпоративную версию VisualAge, которая уже содержит все необходимые компоненты управления конфигурацией.

Версия VisualAge начального уровня бесплатно распространяется через Internet. Она обладает всеми возможностями профессиональной версии, но позволяет создавать не более 100 bean-компонентов. Кроме того, в версии начального уровня нет полного набора документации. В ней имеется лишь система оперативной помощи "hover help" (Microsoft для обозначения этого понятия применяет термин "tool tips"), а также часть документации в виде файлов PDF без оглавления, поисковых возможностей и гиперссылок. Плохо ли это? Представьте, что вам нужно найти ответ на вопрос в книге, которую разрешается перелистывать только последовательно. Мой совет: если вы еще не определились, купите профессиональную версию. Сотня баксов - не слишком высокая цена за хороший инструмент и 400 страниц ценной документации.

Как и в большинстве средств (за исключением Visual Cafe) отладчик VisualAge работает только с собственной виртуальной машиной, поэтому его нельзя использовать для поиска ошибок, обусловленных особенностями пользовательской среды. (Например, ошибка может появляться только при работе конкретной версии программы в среде конкретного браузера, функционирующего под управлением определенной операционной системы на конкретной аппаратной платформе.) Удаленная отладка поддерживается только на виртуальной машине Java IBM, работающей на AS/400.

IBM не поставляет контекстную справочную систему. Это объясняется тем, что системе неизвестно, каким именно средством вы пользуетесь в данный момент. Для получения помощи необходимо запустить справочный сервер.

Java WorkShop 2.0 корпорации Sun

В среде Java WorkShop 2.0 произошли громадные изменения по сравнению с версией 1.0. Были расширены функциональные возможности, повышена производительность и удобство работы. Для достижения подобного результата разработчиками была проделана огромная работа, и в настоящее время Java WorkShop 2.0 является одним из наиболее конкурентоспособных продуктов.

Достоинства

Среда Java WorkShop первой из шести рассматриваемых средств стала поддерживать JDK 1.1, а разработчикам WorkShop всегда удавалось обеспечить совместимость с самыми последними версиями JDK и JFC. (Впрочем, это и не удивительно, ведь и WorkShop и Java вышли из недр корпорации Sun Microsystems.)

Среда Java WorkShop интегрирована со средствами управления конфигурацией SCCS, RCS и PVCS. В ее состав входит и встроенный профилировщик, хотя он и не дает таких ценных советов, как средство VTune корпорации Intel, а также инструменты тонкой настройки.

Вместе с Java WorkShop корпорация Sun поставляет мультимедийный учебник, позволяющий быстро освоить основные приемы использования ПО, а "мастер" проектов помогает быстро начать работу с проектом.

Привыкнув к особенностям конструктора пользовательского интерфейса Java WorkShop, вы поймете, что это самое быстрое средство создания GUI, особенно во взаимодействии с менеджером компоновки, который избавляет вас от необходимости изучения всех внутренних сложностей и ограничений среды компоновки. Для перемещения объектов достаточно просто отбуксировать их мышью, а координатная сетка позволяет автоматически выравнивать их расположение.

Java WorkShop - единственное рассматриваемое нами средство, которое работает под управлением операционных систем Solaris (на платформах как SPARC, так и Intel), HP-UX и SCO Unix.

Кроме того, корпорация Sun предлагает отдельное средство Java Studio, предназначенное для создания приложений без ручного кодирования. Java Studio базируется на методах визуального программирования и позволяет создавать приложения, апплеты и многократно используемые компоненты при помощи объединения уже существующих компонентов и установления между ними необходимых связей. Нужные компоненты можно проектировать с помощью Java WorkShop, а затем экспортировать их в среду Java Studio. В данном обзоре мы сосредоточили свое внимание на WorkShop, но там, где это возможно, постараемся давать информацию и о Java Studio.

Недостатки

Хотя среда Java WorkShop написана на Java, ее нельзя считать хорошим примером переносимости. При тестировании в среде Windows многие ссылки оставались неразрешенными, несмотря на то, что создатели WorkShop имели огромный опыт и использовали язык Java. Все это привело к тому, что среда в целом стала менее удобной. Довольно часто мы сталкивались с обрывом сообщений, неверным размещением проекта по умолчанию, нестандартными и несовместимыми ключевыми соглашениями. Чтение пользовательской документации, в которой перечислялись инструкции для всех платформ, не вызвало у нас особого энтузиазма. Она очень напоминает инструкцию по эксплуатации, написанную на нескольких языках, с той лишь разницей, что в данном случае значительно труднее сориентироваться в том, какие разделы можно опустить.

Выбрать объект в среде конструктора пользовательского интерфейса Java WorkShop - не менее сложная задача. Необходимо перемещать курсор над объектом, наблюдая за тем, в каком месте он изменить свою форму. Только после этого вы получаете управление. Интерфейс конструктора GUI отличается от привычного интерфейса Windows. (Этот недостаток в полной мере присущ и Java Studio, вследствие чего пользователи-непрограммисты могут просто растеряться.) Когда вы начинаете проектировать пользовательский интерфейс, Java WorkShop создает панель, управляемую менеджером компоновки. Для вставки строк или колонок не используется ни клавиша Insert, ни контекстное меню, вызываемое при нажатии правой кнопки мыши, ни выпадающее меню окна, ни любые другие стандартные способы, которые пришли нам на ум.

Средства Java WorkShop и VisualAge for Java помещают сгенерированный код в отдельные файлы. Любые другие файлы вам разрешается модифицировать. На мой взгляд, такое решение более удачно, чем выделение внутри файла областей, запрещенных для редактирования.

К сожалению, Java WorkShop не позволяет выводить файлы на печать - этот недостаток я считаю совершенно неприемлемым. Если какое-то средство претендует на роль рабочей среды, оно должно обеспечивать выполнение всех необходимых задач.

Хотя быстродействие Java WorkShop 2.0 по сравнению с предыдущей версией значительно увеличено, в целом замедление еще слишком заметно. Считывание браузером больших файлов справочной системы, а также выполнение процедур поиска занимает слишком много времени, а долгое ожидание вызывает определенное беспокойство, поскольку неясно, что в это время происходит с WorkShop. (Внешний вид экрана абсолютно не изменяется, вы видите только сообщение в строке состояния и медленно движущийся анимационный ролик в верхнем углу браузера.) Столь медленная работа во многом объясняется отсутствием прямого доступа, особенно заметно этот недостаток проявляется в момент обращения к файлам справочной системы.

Приведу пример. Для того чтобы найти описание класса MainHelper, я открыл содержание справочной системы и задал в качестве условия поиска ключевое слово "MainHelper". Примерно через десять секунд в области "Index of all Fields and Methods" появился один найденный элемент. После того, как я щелкнул по нему мышью, браузер начал загружать справочный файл, а сообщение в строке состояния говорило о том, что система обрабатывает файл, содержащий ключевое слово (MainHelper). Однако несмотря на то, что файл находился на локальном диске и занимал не больше половины мегабайта, среда Java WorkShop так и не смогла завершить процесс. После пяти минут созерцания песочных часов (говорящих о том, что файл еще загружается) я наконец решился прервать утомительную процедуру. Эта операция к моему удивлению привела к тому, что работа среды Java WorkShop также аварийно завершилась. После нескольких безуспешных попыток получения доступа к тому же файлу с помощью средств WorkShop я попробовал воспользоваться альтернативным методом: Netscape Navigator загрузил нужный мне файл за несколько секунд, а еще через несколько секунд я уже просматривал многочисленные ссылки на заданное ключевое слово.

Корпорация Sun собирается интегрировать Studio в будущую версию Java WorkShop. Но пока неясно, будут ли усовершенствованы возможности визуального программирования Studio, или этот продукт по-прежнему будет пребывать в тени VisualAge.

SuperCede Professional 2.0 компании SuperCede

Совершенно ясно, что компании SuperCede удалось создать нечто большее, чем очередное средство разработки. Версия SuperCede Professional 2.0 позволила существенно снизить основные претензии, предъявляемые к Java (этот язык уже долгое время ругают за низкое быстродействие и отсутствие совместимости со старым ПО).

Достоинства

В нашем прошлогоднем обзоре SuperCede был единственным продукт, который имел компилятор, способный генерировать "родные" коды процессора. Сегодня обладателями подобного компилятора являются и пользователи Visual Cafe, однако только компилятор SuperCede полностью совместим с программами и библиотеками классов JDK 1.1. Причина этого заключается в том, что компилятор SuperCede обрабатывает и файлы байт-кода, в то время как транслятор Visual Cafe способен воспринимать только исходные тексты программ на Java.

Кроме того, SuperCede обеспечивает лучшую интеграцию с кодами C/C++, поскольку поддерживает как JNI, так и прямой вызов функций C/C++. В состав SuperCede входят компилятор и отладчик C/C++. Управление программами C/C++ базируется совершенно на иных принципах, но при этом сохраняется полная совместимость с JDK 1.1. Вы можете легко применять модули C++ в среде SuperCede благодаря модели совместного использования объектов. Дополнительным преимуществом является то, что классы C++ можно без особого труда выводить из классов Java. Из всех средств, представленных в данном обзоре, только среда SuperCede поддерживает технологию ActiveX. Таким образом, вы сможете воспользоваться тысячами программных компонентов, уже созданных для среды Windows.

SuperCede включает в себя большое количество средств быстрой разработки приложений. Ее компилятор значительно превосходит инкрементальные трансляторы IBM VisualAge и Symantec Visual Cafe, поскольку изменения, внесенные в код, отражаются в программе даже без ее перезапуска. Код программы можно изменять даже в момент ее выполнения: все изменения будут учтены системой после нажатия кнопки Update.

Среда SuperCede обладает еще одним уникальным свойством - она позволяет транслировать исходный код Visual Basic в код Java. (Мы, правда, не проверяли эту возможность.)

Конструктор пользовательского интерфейса SuperCede (как и аналогичные средства Cosmo Code, JBuilder, VisualAge for Java и Visual Cafe) позволяет выбирать сразу несколько объектов и выполнять операции копирования и удаления.

Что касается программирования баз данных, в состав SuperCede включены интерфейсы JDBC APIs и Java Data Objects (JDO). Интерфейс JDO представляет собой адаптированную компанией SuperCede версию Microsoft ActiveX Data Objects. Специалисты SuperCede утверждают, что такая технология делает работу с базами данных более удобной. При этом для выполнения большинства операций даже не потребуется писать код SQL. Однако я не согласен с тем, что данный подход проще, ведь вам фактически приходится создавать объекты, представляющие собой встроенную реализацию SQL. Оператор SQL передается в качестве параметра методу, который обращается к объекту базы данных.

Комбинация компилятора, способного выдавать "родной" код процессора, транслятора с языка Visual Basic, поддержка технологий Beans и ActiveX делают продукт SuperCede наилучшим выбором для организаций, работающих со "унаследованными" программами. Очень сложно найти другое средство, которое в равной степени удовлетворяло бы многочисленным требованиям информационных служб предприятий и предлагало программистам, "не вылезающим из окопов", столь широкий спектр средств быстрой разработки.

Но самое, пожалуй, удивительное, что на сегодняшний день этот прекрасный продукт распространяется бесплатно. Стандартную версию продукта (в нашем обзоре рассматривается профессиональная версия) можно загрузить с Web-узла SuperCede или заказать CD по цене 10 долл. По сообщению представителей SuperCede, это предложение остается в силе до середины апреля.

Недостатки

В сгенерированном конструктором пользовательского интерфейса коде информация о расположении и идентификации объектов помещается в специальный файл (.ser?), таким образом, программное изменение расположения и идентификации объектов являются делом весьма затруднительным. Хотя результирующий код Java вполне работоспособен, обратное проектирование с использованием средств других производителей (например, JBuilder и Visual Cafe) невозможно. Как и большинство других продуктов SuperCede не поддерживает технологию обратного проектирования.

В описании комплекта поставки и документации говорится о том, что в состав пакета включено ПО Starbase Versions. При установке Versions просит ввести регистрационный номер и код (эти поля можно не заполнять при установке демонстрационной версии). Пользователь действительно получает полноценную копию ПО Starbase Versions. Однако из-за несогласованных действий компаний SuperCede и Starbase необходимый регистрационный номер и код в коробке отсутствуют. Представители SuperCede думали, что Starbase поместит эту информацию в специальный каталог для своих партнеров, как это произошло с версией 1.2. Если в вашей коробке не окажется нужных реквизитов, пошлите по адресу sctech@supercede.com сообщение с просьбой выслать регистрационный номер и код.

Конструктор пользовательского интерфейса SuperCede не обеспечивает визуального просмотра взаимных связей (как это делают аналогичные конструкторы VisualAge, Visual Cafe и Cosmo Code), отражающего порядок взаимодействия объектов. Конструктор пользовательского интерфейса не позволяет визуально размещать неактивные объекты GUI, такие как линии, окружности и другие геометрические фигуры.

При помощи конструктора пользовательского интерфейса SuperCede нельзя изменять свойства сразу нескольких объектов (подобные возможности имеются в среде JBuilder, VisualAge и Visual Cafe).

Справочная система является неполной. Отсутствует информация об организации взаимодействия, представлении взаимных связей, а также многие другие вопросы. Справочные сведения по API-интерфейсам Java дублируют стандартную документацию Sun и не содержат каких-либо пояснений и примеров.

Visual Cafe Professional Developer's Edition 2.1 компании Symantec

Среда Visual Cafe выделяется не только широкими функциональными возможностями, но и повышенными требованиями к системным ресурсам.

Достоинства

Среди всех продуктов предыдущего поколения версия Visual Cafe, пожалуй, изменилась меньше всего - но мы считаем это скорее достоинством, чем недостатком. Предшествующая версия была уже достаточно надежной и отличалась широкими возможностями. Усовершенствования, внесенные в новый вариант программы, коснулись прежде всего документации, поддержки JDK 1.1, инкрементальной компиляции и отладки. Появился также компилятор, позволяющий получить "родной" код процессора.

Visual Cafe имеет отладчик, работающий с виртуальными машинами Symantec, Netscape и Microsoft. Это очень важно, поскольку многие ошибки кода Java проявляют себя только на конкретной виртуальной машине.

Visual Cafe и JBuilder поддерживают обратное проектирование, т.е., могут переводить программный код в визуальное представление и наоборот. В прошлом обзоре мы отмечали, что в составе Visual Cafe имеются лучшие средства быстрой разработки приложений (rapid application development, RAD). В новой версии компания Symantec к старым достоинствам добавила возможность инкрементальной компиляции и отладки, причем проделала это очень элегантно. Одним из главных недостатков отладки было то, что внесенные изменения не отражаются в программе до ее перезапуска. Теперь изменения в исходный код можно вносить непосредственно во время работы отладчика. Когда вы возобновите выполнение программы средства Visual Cafe автоматически перекомпилируют ее и запустят вновь.

Среда Visual Cafe автоматически сохраняет файлы, если в них вносились какие-либо изменения на этапе отладки. Кроме того, файлы периодически записываются на диск в процессе редактирования, а при первом сохранении создается резервная копия старого файла.

Приложения, представленные в виде "родных" кодов процессора, обладают дополнительными преимуществами - помимо очевидного увеличения быстродействия. Например, двоичная версия библиотек классов занимает значительно меньше памяти по сравнению с обычными библиотеками JDK. Вместо 9-мегабайтного файла classes.zip скомпилированным приложениям Java вполне достаточно динамических библиотек (DLL), содержащих функции, которые действительно используются программой. При этом даже полный набор динамических библиотек занимает не более 4 Мбайт.

В состав Visual Cafe включен богатый набор средств работы с исходным текстом, позволяющих, например, выполнять процедуры глобального поиска и замены. Функции сравнения файлов были бы значительно более полезными, если бы они пропускали строки, отличающиеся только завершающими пробелами. (Если вы откроете в редакторе любой файл и сохраните его под другим именем, то функция сравнения обнаружит множество различий между оригинальным и новым файлами. Это связано с тем, что редактор Visual Cafe при сохранении текста автоматически вносит изменения в расположение пробелов и символов табуляции.)

В комплект поставки Visual Cafe Professional Development Edition входят также редактор HTML Visual Page, Netscape Communicator и "заплата" к нему, обеспечивающая поддержку JDK 1.1. Мы не будем подробно останавливаться на Visual Page, скажем лишь, что данное средство имеет примерно те же возможности, что и другие аналогичные редакторы. Правда, Visual Page обладает некоторыми особенностями, которые иногда не воспринимаются браузерами (например, вставляет в код HTML дескриптор конца абзаца

). Кроме того, Visual Page всегда стремится сохранить авторские шрифты, даже если они отличаются от поддерживаемых браузером. Я обнаружил, что обновленная версия Communicator предотвращает зависание системы в момент запуска некоторых апплетов Java.

Документация к новой версии Visual Cafe изменилась в лучшую сторону. Это касается как ее печатной, так и электронной формы. Основным недостатком документации обычно является подробный и скучный пересказ возможностей компонентов, входящих в систему. Гораздо лучше было бы построить справочную систему в виде ответов на конкретные вопросы. Система помощи должна помочь пользователю выполнить определенные задачи, а какой именно компонент отвечает за это - не столь уж важно. Руководство пользователя Visual Cafe (занимающее более 400 страниц) является прекрасными примером правильного подхода к составлению документации. Сначала описываются процедуры установки системы и создания первого апплета. Затем пользователь получает подробную информацию о порядке выполнения более сложных задач. Приводятся ссылки на дополнительную литературу. Руководство пользователя Visual Page (более 140 страниц) построено по тому же принципу. Полный объем печатной документации превышает 750 страниц.

Visual Cafe является единственным из рассмотренных средств, работающим на платформе Macintosh.

Недостатки

Большинство недостатков Visual Cafe связаны с особенностями системной конфигурации. К ним относятся случайные сбои и аварийные завершения, а также блокирование памяти. Большинство сбоев вызвано ошибками при настройке системы. Например, переменная CLASSPATH указывает на неверную библиотеку, система не может выделить достаточное количество виртуальной памяти, установлено несколько версий одинаковых динамических библиотек (таких, как javai.dll). Мне пришлось лично столкнуться со всеми этими неприятностями (в частности, после тестирования всех интегрированных сред в системе оказалось четыре библиотеки javai.dll). Аварийное завершение может быть вызвано и другими причинами (например, определенным порядком вывода панелей на экран). Компания Symantec помещает информацию об обнаруженных ошибках в своих группах новостей и активно работает над устранением недоработок).

Чтобы пакет Visual Cafe работал без сбоев, в системе должно быть установлено по крайней мере 100 Мбайт виртуальной памяти. Если объем оперативной памяти при использовании операционной системы Windows 95 составляет менее 64 Мбайт (для NT требуется еще больше памяти), система будет работать значительно медленнее.

Оперативная помощь Visual Cafe организована лучше, чем у конкурирующих продуктов, но тоже нуждается в доработке. При вызове контекстной справки система иногда выдает совершенно бесполезную информацию, в то время как нужные параметры не описываются. Например, вы хотели бы получить дополнительные сведения о числовых форматах, а система выдает информацию о способах установки размеров шрифта.

Наконец, один опытный разработчик поведал мне, что редактор Visual Cafe предлагает слишком мало цветов по умолчанию. Если вы в течение 12 часов в день набираете код, то слишком яркий или чересчур темный цвет исходного кода в конце концов начнет раздражать, поэтому хотелось бы получить большую гибкость.


Ресурсы

  • 30-дневная пробная версия ObjectShare Java
    http://www.objectshare.com/
  • Бета-версия пакета SNiFF+J Professional (свободно распространяется компанией TakeFive Software)
    http://www.takefive.com
  • ПО Super Mojo компании Penumbra Software. Начальная цена -39.95 долл.
    http://www.PenumbraSoftware.com/
  • Профилировщик VTune корпорации Intel поможет оптимизировать программы, написанные на Java, Visual Basic, C/C++ и Fortran. Пробная версия действительна в течение 30 дней. На узле находится информация о порядке работы с виртуальными машинами и JIT-компиляторами Microsoft, Symantec, SuperCede и других компаний.
    http://developer.intel.com/design/
    perftool/VTUNE/
  • На странице IBM Java Home Page можно найти статьи, посвященные Java, и информацию о Web-узлах, использующих технологию Java.
    http://www.ibm.com/Java/
  • Разработчикам, желающим подробнее ознакомиться с Visual J++ 6.0. Корпорация Microsoft публикует исчерпывающую информацию о продукте и предлагает загрузить бета-версию.
    http://www.microsoft.com/sitebuilder/
    visualj/vjonsbn.asp
  • Корпоративная среда разработки PowerJ Enterprise, разработанная компанией Sybase, становится еще мощнее.
    http://www.sybase.com/products/powerj

    Домашние страницы средств, рассмотренных в обзоре

  • JBuilder 1.0 Professional компании Borland
    http://www.borland.com/JBuilder
  • VisualAge for Java Professional 1.0 корпорации IBM
    http://www.software.ibm.com/ad/vajava/
  • Cosmo Code 2.5 компании Cosmo Software
    http://cosmo.sgi.com/products/
    studio/code/
  • Java WorkShop 2.0 корпорации Sun
    http://www.sun.com/software/
    Developer-products/java/
  • SuperCede Professional 2.0 компании SuperCede
    http://www.supercede.com
  • Visual Cafe for Java компании Symantec
    http://www.symantec.com/domain/
    cafe/deved/index.html


    Карл Дихтер занимает должность старшего инженера в корпорации Intel. В течение 17 лет он проработал инженером в компаниях Intel, Motorola и ряде других. Дихтер сотрудничал также с корпорациями AT&T, GE и Honeywell. За последние семь лет Дихтер опубликовал множество технических статей и в соавторстве с Марком Пизом написал книгу "Software Engineering with Perl". С ним можно связаться по адресу carl.dichter@javaworld.com.