Ж у р н а л   о   к о м п ь ю т е р н ы х   с е т я х   и   т е л е к о м м у н и к а ц и о н н ы х   т е х н о л о г и я х
СЕТИ И СИСТЕМЫ СВЯЗИ on-line
  ПОИСК: ПОДПИСКА НА НОВОСТИ: НОМЕР:
    ДОМОЙ • Архив: Новостей | Конференций | НомеровПодписка
 
   
 
   
    
РЕДАКЦИЯ
 
Все о журнале
Подписка
Как проехать
Где купить
Отдел рекламы
График выхода журнала
Адреса в Интернет

РУБРИКАТОР
   
• Инфраструктура
• Информационные
   системы

• Сети связи
• Защита данных
• Кабельные системы
• Бизнес
• Колонка редактора
• Электронная
   коммерция

• Только на сервере
• Системы
   учрежденческой
   связи

• Новые продукты


Rambler's Top100

  

"Свежий" Java: способы быстрого приготовления

Тодд Танненбаум

Java — новый игрок на площадке языков программирования. Поддержка Web-браузеров, независимость от платформы и хорошая интеграция с сетью за одну ночь превратили его в сенсацию. Хотя программирование на языке Java уже само по себе является удовольствием, разработка сложных деловых приложений еще страдает от недостатка того, что называется современной средой разработки: сложного сочетания текстового редактора, компилятора, отладчика, средств разработки RAD (Rapid Application Development) и управления проектами, объединенных в едином интуитивно понятном графическом пользовательском интерфейсе.

Такие среды разработки являются нормой для других языков программирования, например таких, как С++ и Object Pascal, которые существуют уже несколько лет. Но процесс взрывного развития Java — от зарождения идеи до всемирного распространения — застал врасплох производителей программного обеспечения. Поэтому многим разработчикам, использующим данный язык, приходилось довольствоваться относительно простыми средствами и утилитами командной строки, до сегодняшнего дня бесплатно распространяемыми фирмой Sun в ее пакете разработки программ JDK (Java Development Kit).

В нашей лаборатории мы протестировали три новейшие среды разработки программ на языке Java. Хотя некоторые производители и прислали нам продукты, обеспечивающие пользовательскую оболочку типа RAD для пакета JDK фирмы Sun, в нашем обзоре мы рассматриваем только законченные интегрированные среды разработки (Integrated Development Environment — IDE) для Java, куда обязательно включены компилятор и графический отладчик. Таким образом, в наш обзор попали программные пакеты фирм Microsoft, SunSoft и Symantec.

Чем может заинтересовать Java?

Java обеспечивает ряд преимуществ при разработке проектов типа клиент—сервер в сфере бизнеса. Такие проекты, кроме развитых средств доступа к корпоративной информации, подразумевают также наличие сложной бизнес-логики, распределенной между клиентом и сервером. В отличие от решений PowerBuilder фирмы Powersoft и Delphi фирмы Borland International, в которых технология разработки сильно привязана к конкретному поставщику программного продукта, Java — это стандарт целой отрасли. Используя его при определении стратегии развития информационной технологии вашей организации, вы будете лучше защищены от каких-либо неприятных сюрпризов, являющихся следствием конъюнктурных решений, принимаемых отдельными фирмами-производителями в отношении своих продуктов.

Очевидно преимущество Java и над обычными объектно-ориентированными языками, например над С++: его проще изучить; он свободен от некоторых недостатков последнего, — таких, как управление памятью; включает богатую и самую стандартизированную во всей отрасли библиотеку классов, где есть все, начиная от доступа к Web-серверу и кончая связью с базами данных через интерфейс JDBC (Java Database Connectivity). Теперь ко всему этому прибавьте независимость Java от программной платформы, экономию на поддержке и обеспечении безопасности "тонкого" клиента и адаптированность к работе в интрасетях.

Рассматриваемый инструментарий для Java представляет собой лишь "первый залп". Уже в этом году несколько крупных интегрированных сред разработки для Java будут выпущены фирмами Borland, Powersoft и IBM. Кроме того, ожидается появление встроенных в среду разработки Java средств проектирования RAD для баз данных.

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

Visual Cafe 1.0 фирмы Symantec

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

Визуальная технология разработки на языке Java, которая подразумевает двунаправленную (two-way) синхронизацию исходного текста и графического интерфейса приложения, впервые (для языка Java. — Прим. ред.) реализована в пакете Visual Cafe. С его помощью можно не только генерировать код для обработки основных событий, но благодаря новому мастеру Interaction Wizard облегчать программирование взаимодействий между базовыми компонентами пользовательского интерфейса. Зрелая среда разработки с полнофункциональным редактором, отладчиком, быстрым компилятором и компилятором Just-In-Time (JIT) позволяет продуктивно работать даже при традиционном (невизуальном) программировании. Конкурирующие продукты могут "затмить" Visual Cafe лишь в некоторых специфических областях, но по своей мощи он не имеет равных.

Мы быстро обнаружили, что работа в Visual Cafe отличается высокой продуктивностью. Концепция визуальной разработки, основанная на формах, будет очень близка пользователям, знакомым с MS Visual Basic и Borland Delphi. В отличие от Visual J++ фирмы Microsoft в Visual Cafe задание отклика на простые события в управляющих компонентах и описание логики пользовательского интерфейса требуют минимума традиционного программирования. Продукт Symantec также включает несколько компонентов, строящих дополнительную функциональность более высокого уровня, чем базовые контейнеры библиотеки AWT Java (Abstract Windowing Toolkit). В качестве примера можно назвать SlideShow, DancingText, TreeView и ProgressBar. Кроме того, в нем имеется несколько компонентов-панелей, таких, как Toolbar Panel и TabPanel, используемых для создания соответственно панелей инструментов и диалогов. Пользователи или третьи фирмы могут создавать свои собственные компоненты Visual Cafe и добавлять их в библиотеку. Для этого надо написать код соответствующего класса Java, разработать пиктограммы и создать специальный файл в формате Visual Cafe.

Компоненты методом буксировки (drag-and-drop) помещаются на форму, которая может быть панелью мини-приложения (applet), фреймом или диалоговым окном. Конфигурацию, положение и размер компонентов, лежащих на форме, можно свободно изменять. В случае необходимости форме приписывается диспетчер компоновки (layout manager), основанный либо на абсолютном попиксельном смещении (такой способ достаточно прост, но вряд ли ваша форма будет выглядеть одинаково на различных клиентских платформах), либо на одном из типов традиционных компоновок AWT, таких, как BorderLayout и GridBagLayout, обеспечивающих независимость от платформы.

Каждый компонент имеет соответствующий набор свойств, содержит атрибуты, специфические для данного объекта. Текст программы Java создается "на лету" по мере того, как компоненты переносятся на форму, а их свойства редактируются. Другие продукты (Visual J++ и Java WorkShop) просто производят однонаправленную (one-way) трансляцию из средства визуального дизайна в Java и переписывают файлы исходных текстов .java при изменении их с помощью визуального редактора. Как уже отмечалось, Visual Cafe производит двунаправленную трансляцию, что означает автоматическую синхронизацию изменения в программном коде и в визуальных компонентах. Для проверки работы этого механизма мы поместили на форму кнопку и тут же увидели, как изменилась соответствующая строка в исходном тексте программы.

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

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

Для описания обработки событий можно выбрать определенный целевой объект (например, кнопку) и соответствующее событие (например, нажатие), в результате чего Visual Cafe создаст метод, который мы можем видоизменить. Мастер Interaction Wizard будет востребован как начинающими, так и опытными программистами. Эта утилита графически строит отношения между объектами, задавая разработчику ряд простых вопросов, потом автоматически генерирует код для выбранного отношения. Мы находим, что мастер Interaction Wizard — наиболее простое средство RAD для добавления процедур обработки событий. Но в отличие от Java WorkShop фирмы SunSoft пакет Visual Cafe оставил нас в режиме просмотра исходного текста программы, чтобы мы могли удалить код обработки событий или посмотреть, какие процедуры добавлены мастером Interaction Wizard. Текст программы, сгенерированный при помощи RAD, хорошо отформатирован и снабжен комментариями, что делает его простым для восприятия.

Невизуальные средства программирования в Visual Cafe в целом тоже оставили неплохое впечатление. Кроме того, нам понравился весьма быстрый отладчик, насыщенный разнообразными вспомогательными функциями. Хотя проблем с традиционными средствами задания точек останова в программе и не возникало, иногда мы не получали того, что ожидали, используя точки останова по условиям. Мы также не смогли отладить отдельно взятое приложение Java в режиме консоли, которое читало со стандартного ввода. В пакете имеются современные средства для просмотра/редактирования классов и даже программа просмотра/редактирования иерархий, хотя Visual Cafe почему-то неизменно "падала", когда мы пытались добавить новый класс, находясь в программе просмотра классов. Компилятор в этом пакете очень быстрый и по скорости стоит на втором месте после Visual J++. Редактор Symantec такой же удобный, как и в Visual J++.

Visual J++ Professional Edition 1.0 фирмы Microsoft

Программисты, ранее работавшие с Visual С++, почувствуют себя в Visual J++ как дома. Поскольку оба языка работают в среде Microsoft Developer Studio, то для них идентичны все меню и панели инструментов, относящиеся к управлению проектами, отладке, диалоговому оформлению, просмотру классов и интерактивной помощи. Фирма Microsoft потратила не один год, "оттачивая" эти возможности в Developer Studio для Visual С++, и пользователи Java уже в первой версии Visual J++ пожнут плоды этой совершенной и мощной программной среды.

Хотя Visual J++ и обладает богатым арсеналом средств написания программ, первый ее выпуск вернее было бы назвать просто J++, так как в области средств визуального программирования и RAD он пока не может полноценно конкурировать с другими пакетами.

Визуальную часть Visual J++ представляют редакторы диалогов и меню. С их помощью вы можете располагать компоненты диалоговых окон, создавать меню, а затем формировать стандартные файлы ресурсов Windows (.RCT или .RES). Далее, используя мастера Resource Wizard, пакет преобразовывает файлы ресурсов Windows в исходный код .java. Процесс организации компонентов очень прост, так как мастер Resource Wizard создает свой собственный диспетчер компоновки AWT. Последний обеспечивает независимость от клиентской платформы благодаря масштабированию компонентов исходя из конкретных настроек рабочего места (правда, это единственный диспетчер компоновки, который поддерживается мастером Resource Wizard).

В отличие от Visual Cafe процесс синхронизации код—форма в Visual J++ — однонаправленный. Никакие изменения текста в результирующих файлах .java не отражаются в графическом представлении формы, а любое изменение, произведенное в визуальном редакторе, имеет своим следствием полностью переписанный файл .java. Однако больше всего досаждает отсутствие какой-либо визуальной или RAD-поддержки для обработки событий, а также дополнительных управляющих компонентов (controls) Java (кроме основных компонентов AWT).

Недостаток визуальных средств программирования в Visual J++ компенсируется богатым набором традиционных средств работы с текстами программ. Компилятор исключительно быстрый. Представители Microsoft утверждают, что компилируется более миллиона строк кода в минуту, и мы им охотно верим. Что же касается качества исполняемого кода, то компилятор произвел файлы .class почти идентичные файлам .class более медленных компиляторов-конкурентов, за исключением теста "Циклы" из пакета CaffeineMark (см. врезку "Размалывая зерна Java, или Как мы тестировали"). По всей вероятности, более низкая оценка в тесте "Циклы" объясняется менее тщательной оптимизацией компилятора в таких областях, как обработка выражений и подстановка констант. В отношении синтаксиса компилятор оказался более придирчивым, чем другие протестированные нами компиляторы. Когда мы компилировали исходный текст программы JDBC, загруженный прямо с Web-узла Java фирмы Sun, Visual J++ был единственным компилятором, который стал "жаловаться" на синтаксические ошибки.

Графический отладчик располагает целым набором современных средств, включая технологию буксировки, точки останова и "всплывающие подсказки", позволяющие в процессе отладки получить текущее значение переменной, просто переместив на нее курсор мыши. Однако в отладчике, который сначала нам очень понравился, мы столкнулись с одной проблемой, связанной с использованием в проекте нескольких классов: среда Visual J++ просто отказалась повиноваться некоторым из наших точек останова. Позвонив в отдел технической поддержки, мы узнали, что отладчик будет правильно работать только с теми классами, которые программист явно перечислит в диалоговом окне настройки отладчика (debugger settings). Это окно не позволяет выбирать классы из списка, а также не допускает использования символов маски. Таким образом, если ваша программа состоит из 40 классов, то вам придется набивать их имена в окне настройки вручную, прежде чем вы сможете установить точки останова там, где вам нужно.

Нам пришлось сделать еще один звонок на фирму, когда в одном из наших проектов при пошаговой отладке мы попытались выполнить "шаг вовнутрь" (step in) и система Visual J++ начала устойчиво "падать". После того как расторопные парни из технической поддержки подсказали нам, что нужно вызвать REGEDIT и удалить некоторые пункты Developer Studio из реестра Windows, среда Visual J++ полностью прекратила "сбоить" и опять стала очень устойчивой.

При отладке мини-приложения в Visual J++ автоматически запускается Web-браузер Internet Explorer 3.01, что довольно удобно. Использование настоящего Web-браузера в качестве среды отладки программы можно рассматривать как преимущество перед подходами Symantec и SunSoft, которые для предварительного запуска приложения используют собственные средства, ведь в реальном браузере есть возможность проверить взаимодействия с другими приложениями Java и JavaScript.

Неудивительно, что Visual J++ — это единственный продукт, который поддерживает объекты Windows Component Object Model (COM), включая управляющие компоненты ActiveX и технологию OLE Automation. Мы находим, что интеграцию компонентов ActiveX и COM в программу Java данный пакет реализует весьма удачно. Мастер Type Library Wizard в Visual J++ автоматически "упаковывает" любой объект COM в класс Java и выдает сообщение о получившихся в результате методах. Объект COM потом можно использовать как любой традиционный пакет Java, синтаксис Java при этом остается достаточно прозрачным.

Мы обнаружили, что управляющие компоненты OLE (Object Linking and Embedding) и ActiveX не могут быть помещены в контейнер Java AWT. Их можно расположить только рядом с мини-приложениями Java, выполняющимися в Internet Explorer. Однако в Visual J++ вы можете осуществлять обратное преобразование, т. е. открывать ваши Java-классы в качестве объектов COM. Таким образом, этот пакет позволяет использовать написанные на Java компоненты в других COM-совместимых языках, таких, как Visual Basic. Правда, в отличие от открытия объектов COM в качестве компонентов Java, когда мастер автоматизирует этот процесс, открытие классов Java для COM производится вручную и состоит из последовательности довольно утомительных шагов.

Java WorkShop 1.0 фирмы SunSoft

Без сомнения, Java WorkShop 1.0 фирмы SunSoft — уникальная среда разработки программ и может быть прообразом программного обеспечения сетевого компьютера будущего. Сама среда Java WorkShop почти полностью написана на языке Java и работает под управлением Web-браузера. Поскольку фирма Sun Microsystems — материнская компания фирмы SunSoft — главный двигатель технологии Java, ее компилятор, вышедший из комплекта JDK, и библиотека классов Java WorkShop практически определяют стандарт языка. Хотя Java WorkShop хорошо разработана и имеет много замечательных качеств, она в большей степени похожа на первую версию, чем другие протестированные нами продукты. Производительности нашей работы мешали медлительность системы и происходившие время от времени блокировки, а также интерфейс пользователя, который, несмотря на то что и реализован достаточно просто, иногда способен привести разработчика в отчаяние.

Поскольку Java WorkShop выполняется внутри Web-браузера, то его пользовательский интерфейс на основе гиперссылок интуитивно понятен и привычен для большинства пользователей. В отдельных случаях мы были убеждены, что на фоне многочисленных рядов кнопок инструментальных панелей и пунктов меню в Visual Cafe и Visual J++ пакет Java WorkShop будет выгодно отличаться элегантностью своего графического интерфейса.

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

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

Немного лучше положение со средствами визуального программирования и RAD. Теперь Java WorkShop включает в себя Visual Java — сложное средство разработки интерфейса Java AWT, которое, подобно Visual Cafe и Visual J++, позволяет программисту методом буксировки располагать компоненты на форме и автоматически генерирует исходный текст программы на языке Java. Так же как и Visual J++, средство Visual Java имеет однонаправленную трансляцию и при каждом изменении в визуальном редакторе полностью переписывает соответствующие .java-файлы исходных программ.

Хотя немногочисленные дополнительные компоненты Visual Java очень полезны и хорошо сделаны, Visual Cafe превосходит его просто по числу предлагаемых компонентов. Средство задания событий в Visual Java достаточно удобное, но не такое гибкое, как мастер Interaction Wizard в Visual Cafe. Однако Visual Java поддерживает отличный режим предварительного просмотра, который, не требуя перекомпиляции, дает очень ясное представление о том, как все будет выглядеть во время выполнения программы.

Visual Java в пакете Java WorkShop содержит хороший набор диспетчеров компоновки Java AWT. При использовании популярного и платформно-независимого диспетчера AWT GridBagLayout процесс компоновки управляющих элементов в Visual Java является гораздо более "визуальным", чем даже в Visual Cafe. Нужно задать всего несколько параметров в GridBagLayout, чтобы определить то, как визуальный компонент будет расти, уменьшаться или перемещаться, в зависимости от изменений его контейнера. В Visual Cafe эти параметры вводятся программистом как список чисел на странице свойств. С другой стороны, Visual Java более полно реализует подход WYSIWYG (What You See Is What You Get) благодаря более развитому пользовательскому интерфейсу в диспетчере компоновки.

Компилятор Visual Java был прост в работе, но на порядок медленнее Visual J++. В отладчике среды разработки реализовано немного меньше отладочных средств, чем в других продуктах, но нам они и не были особенно нужны. Однако 24 Мбайт оперативной памяти нашей машине было явно недостаточно, поскольку порой мы испытывали существенные задержки при пошаговой отладке программы, в то время как наш жесткий диск активно работал. К тому же нам не понравилось, что WorkShop всегда выполнял нашу (часто полную ошибок!) программу в том же рабочем пространстве, что и сама среда разработки Java WorkShop. Например, когда мы работали над проектом, где используется всплывающее модальное окно, мы по своей простоте запустили его, не добавив предварительно никакого кода для закрытия этого окна. Диалоговое окно конечно же "всплыло", после чего убрать его — хотя бы затем, чтобы вернуться в WorkShop, — нам уже не удалось.

И наконец, нам понравились некоторые уникальные средства интеграции Java WorkShop со службой Web. Например, такое средство, как Publish, позволяет автоматически загрузить только что разработанное мини-приложение на ваш Web-сервер. А используя диспетчер Portfolio Manager, несколько программистов могут совместно работать над одним и тем же проектом через службу Web


распечатать статью

pedant.ru




  
6 '1997
СОДЕРЖАНИЕ

колонка редактора

• Политэкономия модемных баталий

локальные сети

• Высокопроизводительные сетевые принтеры

• Разделение сетевых сервисов, или Еще раз о том, сколько нужно серверов

• UTP или STP?

• Переходим к Fast Ethernet

• Перспективы развития кабельных систем

корпоративные сети

• Серверы удаленного доступа для малого бизнеса

• Тестируем серверы удаленного доступа

услуги сетей связи

• Сегодня и завтра компьютерной телефонии

• По телефонной линии — со скоростью 56 Кбит/с

• ISDN: мечта или реальность?

• Звучит голос по Frame Relay

• Сети управления электросвязью

интернет и интрасети

• Всемирная Интер-активная Среда: как достичь критической массы?

• SCO Gemini: сверхновое созвездие

• Свежий Java: способы быстрого приготовления

• Глобальные сети для деловых коммуникаций

защита данных

• Воздвигая "огненные стены"

• Ведение личных финансов, покупки и управление банковским счетом через Интернет

новые продукты

• BayStack 350 Autosense Switch фирмы Bay Networks, Magellan Passport 30 фирмы Nortel, Новинки от SMC: скорость и гибкость

только на сервере

• PointCast — остров профессора Айболита

• Имя для домена верхнего уровня: право на выбор



 Copyright © 1997-2007 ООО "Сети и Системы Связи". Тел. (495) 234-53-21. Факс (495) 974-7110. вверх