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


Присмотритесь к Java
Персональные приложения на Java
Результаты испытаний
Что на горизонте?
Продление жизни
Производители
Java-ресурсы
Как проводилось тестирование
Написано однажды - работает везде?
Epic обеспечивает солидную Java-платформу
Novera выявляет сильные и слабые стороны JVM
Производительность Java на разных платформах
Пройдет ли ваше Java-приложение тест на 100% чистоту?
Глоссарий

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

Действительно, довольно трудно поддерживать мэйнфреймы, на которых хранятся критически важные для бизнеса данные, и множество ПК, включая Windows-машины разных мощностей и разновидностей (Windows 3.1, Windows 95 и Windows NT на ПК с процессорами 386, 486 и Pentium), компьютеры Macintosh, машины с OS/2 и Unix. И хотя в большинстве своем отделы ИТ уже научились справляться с подобным набором разнообразной техники, нетрудно представить, каким бременем ложится на них дополнительная нагрузка, связанная с поддержкой разных приложений на различных компьютерах.

В действительности, многие производители уже создали приложения, работающие на нескольких платформах (из них наиболее известны, пожалуй, Lotus Notes и Netscape Navigator); но таких приложений явно недостаточно, и их разработка требует от компаний-производителей поистине титанических усилий. Отделы ИТ часто вынуждены использовать в своих гетерогенных сетях множество разных приложений. В результате приходится тратить время еще и на администрирование, а также поддержку этих приложений, что приводит к непомерному увеличению стоимости содержания системы.

Присмотритесь к Java

К Java стоит присмотреться повнимательнее. Когда компания Sun Microsystems выступила со своей знаменитой фразой "написано однажды работает везде", многие навострили уши. Так как бремя администрирования множества приложений, написанных для разных платформ, с каждым днем становилось все тяжелее, менеджеры ИТ, естественно, начали искать способы облегчить свою участь, а Java как раз обещала в этом помочь.

Java не только в состоянии обеспечить независимость от платформы; этот язык имеет и много других достоинств. Для программистов он относительно прост в изучении; им нравится на нем программировать. Отсутствие в языке механизма указателей, простота обеспечения многопоточности и серьезная поддержка сетевых функций - все эти свойства Java способны реально облегчить разработку программ.

Встречаются, однако, и скептики, по-прежнему испытывающие к Java недоверие. Менеджеры ИТ уже привыкли сдержанно относиться ко всем этим новейшим и прогрессивнейшим технологиям, которые, похоже, развиваются по бесконечной спирали. Для многих актуален вопрос, как можно использовать технологию Java, сохранив при этом уже имеющиеся в организации ресурсы - компьютерное оборудование и ПО. Ответ достаточно прост. Основное преимущество Java состоит в том, что виртуальная машина Java (Java virtual machine, JVM) - виртуальный процессор, выполняющий скомпилированные Java-программы независимо от операционной системы, на которой он работает, - уже создана для всех распространенных платформ. Кроме того, на многих настольных компьютерах корпоративной сети Java уже есть - в форме Web-браузеров с поддержкой Java.

Персональные приложения на Java

Мы задались целью проверить "Java-платформу" (виртуальные машины Java на различных платформах), используя реальные приложения, предназначенные для повышения продуктивности работы пользователей (так называемые "productivity applications" - прим. ред.), и с помощью этих приложений оценить переносимость и производительность Java-программ. Многие отделы ИТ уже создают или собираются создавать приложения на Java для решения задач своих компаний. При этом больше всего их интересует вопрос, насколько успешно эти приложения смогут функционировать на каждой из имеющихся платформ. Например, как приложение, написанное для NT, будет работать на Macintosh? Чтобы ответить на эти вопросы, мы проверили, как работают реальные приложения, написанные на Java: Anyware Office 4.3, поставляемое компанией Applix, и Novera Epic 1.2 от Novera Software.

Многие компании сейчас выпускают небольшие программы (апплеты), написанные на Java. Это главным образом встраиваемые модули для браузеров, обеспечивающие доступ к корпоративным почтовым системам, как, например, GroupWise Web Access компании Novell, или простые программы администрирования типа Network Printer Manager компании IBM. Мы разговаривали с несколькими производителями о коммерческих приложениях более глобального масштаба, написанных на Java, и обнаружили, что готовых версий можно ожидать лишь через несколько месяцев. С компанией Lotus мы обсудили комплект приложений с кодовым названием Kona, который она готовит, а с компанией Corel - запланированный ею выпуск Office for Java. Оказалось, что Corel изменила свою стратегию в отношении Java; другие поставщики задерживают выпуск своих продуктов, ожидая появления новых версий JVM.

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

Результаты испытаний

Java призвана стать идеальной технологией для корпоративных сетей - приложение, купленное или написанное один раз, будет работать на любом компьютере. Похоже, наконец удалось решить вечную проблему поддержки множества приложений, написанных для конкретных компьютерных платформ. Слишком хорошо звучит, чтобы быть правдой, скажете вы? Тестовый центр еженедельника InfoWorld выяснил, что в большинстве случаев Java выполняет свои обещания по части платформенной независимости. Испытанные Java-приложения - Anyware Office 4.3 от Applix и Novera Epic 1.2 от Novera Software - работают на большинстве платформ; единственная платформа, на которой все прошло не так гладко, - это Macintosh. Мы также установили, что Java довольно требовательна к ресурсам процессора и объему ОЗУ компьютера. Мы даже выявили определенную конфигурацию, в которой Java вообще не может работать нормально (компьютер с процессором Intel 486, 16 Мбайт ОЗУ и Windows 3.1). Кроме того, стало ясно, что от реализации каждым производителем виртуальной машины Java зависит скорость выполнения приложений.

Помимо прочего, Java имеет возможность работать на операционных системах, не поддерживающих многопоточность и многозадачность. Две JVM с приложениями Anyware и Epic под Windows 3.1 функционировали нормально - следовательно, Java может работать и на менее изощренных ОС.

Однако JVM на MacOS не выдержала ни одного из наших тестов, показав, что у Macintosh еще существуют проблемы с Java. Кроме того, некоторые приложения, которые все же "пошли" на Macintosh, вели себя довольно странно: отображали текст строки состояния программы в середине экрана или не обеспечивали всех заложенных в них функциональных возможностей.

Мы попробовали испытать Microsoft Internet Explorer с активизированными компиляторами JIT (just-in-time) в Windows 95, Windows NT и MacOS, однако при попытке выполнить любое из двух приложений - Anyware или Epic - они очень быстро вызывали сбой системы. Однако нам удалось выполнить все тесты, используя виртуальные машины, и зафиксировать результаты для Internet Explorer на различных платформах.

Из всех платформ, на которых мы тестировали приложения, Unix (Sun Solaris и Linux), Win95 и NT показали самую высокую производительность при минимальном количестве проблем, в том числе связанных с отображением на экране. Под OS/2 приложения также выполнялись нормально, но в них не работали "спускающиеся меню". Под MacOS приложение Epic могло функционировать, однако сообщения о состоянии почему-то отображались в середине экрана, а не в нижней части окна. Под Windows 3.1 работали оба приложения, но на 486 процессоре они выполнялись слишком долго. На машине с Pentium результаты оказались значительно лучше.

Если в своей корпоративной сети вы используете исключительно платформу Wintel, то приложения, написанные на Java, одинаково хорошо будут работать и на Windows 96, и на NT. Все четыре испытанные нами виртуальные машины прошли тесты на производительность и выполняли приложения, полностью реализуя все заложенные в них функциональные возможности; проблем с отображением на экране также не возникало. Однако напрашивается резонный вопрос: если вы имеете дело только с Windows 95 и NT, то почему бы в этом случае не использовать обычные Windows-приложения? Один существенный аргумент в пользу Java все же остается: развертывание бизнес-приложений в большой сети не создает проблем, когда за данными об очередном отпуске или другой связанной с бизнесом информацией можно просто отослать сотрудников на корпоративный Web-узел.

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

Что на горизонте?

Компания Sun Microsystems определенно была провидцем, используя для продвижения Java различные способы - от Java Enterprise API до смарт-карт. Другие производители, подхватив эту инициативу, начали интегрировать Java в свои операционные системы и клиентское ПО, а также переписывать на Java свои приложения.

Компания Corel еще прошлой осенью заявила, что намеревается перенести на Java свой офисный комплект. Те, кто имел возможность ознакомиться с предварительной версией пакета Office for Java, отмечали, насколько смелый шаг предприняла компания. Возможности бета-версии пакета, появившейся в марте, произвели на пользователей большое впечатление. Однако после этого Corel надолго затихла, а потом объявила, что не хочет выпускать офисный комплект того же плана, что и Microsoft Office или PerfectOffice. Вместо этого компания решила использовать свой опыт, накопленный в процессе работы над проектом Office for Java, для создания корпоративной версии своего комплекта персональных приложений.

Новый продукт будет основан на технологии ORB (object request broker) компании Visigenics и позволит доставлять приложения с сервера на клиентские машины. Это больше напоминает модель работы ПО WinFrame компании Citrix, нежели монолитный набор приложений. Предварительная версия этого ПО должна увидеть свет в декабре.

Lotus также работает над комплектом ПО для "тонкого" клиента, получившим кодовое название Kona. Этот комплект приложений, доступ к которым осуществляется через Web-браузер, предназначен для управляемых настольных компьютеров. Lotus утверждает, что Kona адресована прежде всего тем, кто работает с текстами или выполняет простые вычисления с помощью электронных таблиц. Компания пытается сохранить клиентскую часть приложений в пределах 500 Кбайт, что должно предоставить пользователям возможность при необходимости работать с Kona через модем.

Продление жизни

Виртуальная машина следующего поколения, которую компания Sun назвала HotSpot, использует технологию компиляции "на лету" (just-in-time, JIT), призванную ускорить выполнение определенной части кода Java-программ. В соответствии с этой технологией компилируется только та часть кода, которая выполняется многократно. По сравнению с текущими версиями JIT-компиляторов это обещает существенный выигрыш в производительности за счет сокращения объема кода, компилируемого в машинные команды конкретной компьютерной платформы.

Sun также работает над программным решением, названным Java PC, согласно которому на 486 компьютере сначала загружается DOS, а затем Web-среда Java под названием HotJava Views - разновидность оконной среды на основе виртуальной машины Java и браузера. Идея состоит в том, чтобы превратить устаревающие компьютеры с Windows 3.1 в ПК на базе Java. Тест-центр InfoWorld еще не испытал это решение в действии, однако сама идея продления жизни маломощным настольным ПК, которые в большом количестве установлены в различных организациях, несомненно заслуживает интереса.

Sun также разработала спецификацию на API-интерфейсы для создания серверных Java-приложений, которые она назвала сервлетами (servlets), и обещает на ее основе создать Java Web Server. В основе серверных Java-приложений лежит идея расширения с помощью программ на Java функциональных возможностей сервера - будь то Web-сервер или файл-сервер. Идея дать разработчикам возможность приспосабливать серверы для решения конкретных задач не нова. Netscape имеет интерфейс NSAPI (Netscape Server API), Microsoft - ISAPI (Internet Server API), а Novell - NLM (NetWare Loadable Modules). Вопрос в следующем: зачем приспосабливать свой сервер с помощью программ на Java, если "родные" программы для конкретного сервера можно писать гораздо быстрее и в более компактном виде?

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

Некоторое время назад компания Netscape разработала технологию, позволяющую наращивать функциональные возможности выпускаемого ею Enterprise Server с помощью серверных программ на Java. Однако эта технология пока еще несовместима с разработанной Sun архитектурой Servlet. Sun создала специальный комплект средств разработки, предназначенный как для Enterprise Server, так и для Internet Information Server компании Microsoft. Этот комплект позволяет разработчикам писать сервлеты, которые могут выполняться на вышеназванных серверах.


Производители

Applix
http://www.applix.com

Novera Software
http://www.novera.com


Java-ресурсы

Sun Microsystems
http://java.sun.com

Apple Computer
http://applejava.apple.com

Microsoft
http://www.microsoft.com/java/default.htm

Caldera
http://www.caldera.com


Как проводилось тестирование

Выполнение Java-приложений на разных платформах обеспечивается виртуальной машиной Java (JVM). Мы испытали несколько платформ и несколько JVM на каждой из них - от Power Mac 601 до ПК с процессором Pentium Pro 180 - и использовали две станции Sun Sparc в качестве тестовых серверов. Мы испытывали наши Java-платформы с помощью офисного пакета Anyware и комплекта программ Epic, которые обеспечивают хранение файлов и службы печати для Java-приложений, основанных на использовании браузера.

Чтобы запустить Java-приложения на разных операционных системах в нашей тестовой лаборатории, нам нужно было инсталлировать виртуальные машины, совместимые с каждой из платформ. JVM существуют отдельно от Web-браузеров, однако при использовании Anyware для доступа к файловой системе хост-компьютера необходима функция аутентификации, встроенная в Web-браузер. Epic также использует серверную файловую систему, но это приложение дает значительно большую гибкость: оно не полагается на Web-браузер, а использует для хранения учетных данных пользователей собственную базу данных. Мы выбрали браузер Netscape Communicator для платформ, на которых он может работать, Netscape Navigator - для платформ, на которых Communicator пока не работает, и Microsoft Internet Explorer - для тех платформ, на которых он функционирует.

Мы хотели использовать любую возможность, чтобы запустить подготовленные нами приложения на Mac OS. Microsoft встроила интересную функцию в Internet Explorer, работающий на платформе Mac OS: для выполнения в браузере Java-апплетов вы можете указать, какую виртуальную машину необходимо запускать. Нам понравилась эта возможность, и мы удивились, почему Netscape не включила подобную функцию в свой браузер. Microsoft разработала виртуальную машину, содержащую компилятор JIT (just-in-time); Apple поставляет среду выполнения Mac OS Run-time for Java (MRJ), включив в Mac OS 8 компилятор JIT. По результатам наших испытаний мы пришли к выводу, что из всех существующих для Macintosh виртуальных машин наиболее стабильно работает последняя версия MRJ (Version 1.5).

Проводя испытания на Macintosh, нам не удалось запустить Epic ни на JVM производства Microsoft, ни на JVM, встроенной в Netscape Communicator - в обоих случаях возникала ошибка, связанная с защитой памяти. Однако на MRJ версии 1.5 приложение Epic вполне могло работать (если не считать некоторых проблем с отображением строки состояния). С приложением Anyware дела обстояли несколько хуже: нам удалось без каких-либо проблем запустить его на всех виртуальных машинах под Mac OS, однако приложение не могло открыть ни одного окна за исключением инструментальной линейки.

IBM реализовала поддержку Java в операционной системе OS/2 Warp, и браузер Netscape для этой ОС использует поддержку Java, обеспечиваемую IBM. Поэтому, когда IBM перенесла JDK 1.1 на свою ОС, пользователи Netscape должны были только выиграть, так? Оказывается, нет. К сожалению, для работы Navigator требуется JDK 1.0.2, а поддержка JDK 1.1 в этом браузере пока не предусмотрена. Поэтому в наших испытаниях мы использовали JDK 1.0.2 для OS/2 и Netscape Navigator 2.02. Сачала мы установили на компьютер 16 Мбайт ОЗУ, но приложения работали под OS/2 очень медленно. Зато когда мы увеличили объем памяти до 32 Мбайт, производительность программ выросла очень существенно.

ОС Windows 95 и NT совместимы с широким диапазоном JVM, однако похоже, что ни Netscape, ни Microsoft не хотят, чтобы пользователи их браузеров могли использовать разные виртуальные машины. Поэтому их собственные версии JVM прочно встроены в браузеры, что лишает пользователей свободы выбора JVM. На платформах Windows мы тестировали приложения с помощью Netscape Communicator 4.01a и Internet Explorer 3.02.

Caldera обеспечила для ОС Linux свою собственную поддержку браузера Navigator. Мы тестировали браузер Netscape Navigator 3.01c Gold for Caldera OpenLinux 1.1, поставляемый компанией Caldera. Этот браузер устанавливается по умолчанию вместе с X Windows, поэтому его установка не вызвала у нас никаких затруднений.

ОС Solaris компании Sun является проверенной платформой для Java, поэтому мы решили также включить ее в наши испытания. Мы испытывали браузеры Netscape Navigator и Communicator, работающие под Solaris 2.51.

Windows 3.1 все еще широко используется в корпоративных настольных системах, поэтому нам было особенно интересно узнать, сможет ли Java работать под этой ОС. Мы испытывали Communicator и Internet Explorer 3.02, используя 486-ой компьютер с 16 Мбайтами ОЗУ и компьютер, оснащенный процессором Pentium 133 МГц и 32 Мбайтами ОЗУ.

При тестировании каждого приложения мы проверяли время запуска и открытия файлов. В приложении Anyware мы открывали 50-страничный файл, импортированный из Microsoft Office и электронную таблицу меньшего размера. В комплект поставки Epic входит небольшой текстовый редактор, который мы использовали для открытия документов размером 1, 24 и 52 Кбайта (к сожалению, этот редактор не смог открыть файл размером более 24 КБ).


Написано однажды - работает везде?

Итак, мы имеем комплект офисных приложений, написанных на Java, выполняющихся на виртуальной машине Java, встроенной в браузер, функционирующий в 32-разрядной операционной системе. Если принять во внимание подобные накладные расходы, то какой производительности мы можем ожидать? Говоря откровенно, на достаточно мощном оборудовании пакет Anyware от Applix показал вполне приемлемую производительность. А если еще учесть и ограничения, которые имеет сегодня Java-технология, то можно сказать, что Anyware являет собой просто техническое чудо (см. раздел, посвященный тестированию производительности).

Версия 4.3 этого пакета стоит 295 дол. и поставляется с декабря прошлого года. Она обеспечивает практически все возможности, которые большинство пользователей хотели бы видеть в офисном пакете. В состав пакета входит текстовый процессор, процессор электронных таблиц, почтовая программа и СУБД; предоставляется также полная среда разработки, которая позволяет модифицировать любой из указанных компонентов. Отражая приверженность компании Applix рынку финансовых услуг, в пакете имеется возможность включения в документы информации в реальном масштабе времени.

Приемлемая производительность

Производительность пакета Anyware произвела на нас сильное впечатление. Он работает в браузере и открывает окно с пиктограммами своих компонентов - текстового процессора, процессора электронных таблицы, СУБД и почтовой программы. На компьютере с процессором Pentium и ОС Windows 95 или NT, а также на Linux-машине время реакции программ было достаточно высоким. Такие функций, как набор текста в текстовом процессоре, в среде Windows 95 выполняются хоть и немного замедленно, но все же с приемлемой скоростью.

Несмотря на то, что на Linux-машине Anyware работал достаточно быстро, мы заметили, что даже набор текста в документе занимал достаточно много ресурсов процессора. Это может стать реальной проблемой при увеличении числа пользователей, обращающихся к данному компьютеру. Anyware совсем отказался работать на Macintosh, даже несмотря на то, что мы перепробовали все имеющиеся у нас виртуальные машины. Представители компании Applix утверждают (и наши тесты это подтвердили), что Anyware не приспособлен для работы на Macintosh.

Однако, если оставить в стороне вопросы производительности и учесть объемы программного кода, исходящие от Microsoft, Apple, Netscape и др., то есть ли у нас шансы получить когда-либо продукты, которые будут нормально сосуществовать друг с другом? Даже достижение совместимости за счет устранения ошибок является задачей не из легких. Если же принять во внимание, что виртуальные машины Java, созданные для разных платформ, очень плохо совместимы между собой, то становится очевидным, что Anyware - это все-таки огромный шаг вперед в направлении кросс-платформенности.

Везде и для всех?

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

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

Если вы используете только Unix, то наверняка знаете, что рынок офисных пакетов для Unix не балует своим изобилием. В этом случае, советуем вам внимательно присмотреться к Anyware - он не уступает по своим возможностям ни одному из аналогичных продуктов для Unix, но может отплатить вам своими кросс-платформенными возможностями, которых не имеют другие пакеты.

Если же вы используете исключительно платформу Wintel, подумайте дважды, прежде чем устанавливать пакет Anyware. Тесная интеграция между Microsoft Office и Windows обеспечивает этому сочетанию явное преимущество. Кроме того, Microsoft Office работает несколько быстрее, поскольку он написан на Си и выполняется непосредственно в ОС, а не на JVM, встренной в браузер.


Epic обеспечивает солидную Java-платформу

Пакет Epic разработан компанией Novera Software как платформа для построения Java-приложений, выполняющихся в браузере. Сервер Epic обеспечивает три базовые службы: аутентификация пользователей, хранение файлов и службы печати. Novera называет свой пакет "Intranet Network Operating System" (сетевая операционная система интрасети), и нам понравилась идея обеспечивать для браузера службы сетевой ОС с помощью Java.

Изначально сервер Epic предполагалось включить в качестве серверного компонента в комплект Office Suite for Java компании Corel, однако последняя изменила свои планы в отношении выпуска этого продукта. Сервер Epic может работать на платформах Sun Solaris и Windows NT 4.0. Мы установили его на компьютер Sun Sparc 20 и не столкнулись ни с какими проблемами в процессе конфигурирования сервера. Кроме того, нам удалось настроить Epic таким образом, чтобы он работал совместно с Directory Server 1.01 компании Netscape. Сервер Epic поддерживает базу данных каталога LDAP (Lightweight Directory Access Protocol) с информацией о пользователях и обеспечивает для них службы файловой системы и печати. В состав поставки Epic входит файл Lightweight Directory Information File, содержащий конфигурационные объекты и примеры учетных данных двух пользователей. Эту информацию нам без труда удалось объединить с информацией, хранящейся на нашем сервере LDAP. В состав сервера Epic также входит общедоступный сервер LDAP, разработанный в Университете штата Мичиган, который содержит все необходимые файлы.

К сожалению, все учетные данные пользователей, которые вы добавляете с сервера Epic, могут администрироваться только с этого же сервера. Мы попытались изменить пароль нескольких пользователей с помощью Netscape Administration Server, но после того, как это было сделано, эти пользователи не смогли более работать с сервером Epic.

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

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

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

Документы можно напрямую выводить в очереди печати Unix - либо заданные на сервере, либо подключенные к нему дистанционно. Поэтому принтер должен воспринять все, что вы на него посылаете.

Novera создала очень серьезную платформу, обеспечивающую серверные службы для разработчиков приложений, которым требуется доступ к файловой системе и печати из браузера. Однако серверу Epic не достает ряда функциональных возможностей, которые могли сделать его более полным решением. К таким недостаткам относится отсутствие хорошей интеграции с локальными файловыми системами. Сервер Epic 1.2 поставляется с июня текущего года и стоит 6500 дол. в расчете на 20 одновременно работающих пользователей.


Novera выявляет сильные и слабые стороны JVM

Windows 95, Windows NT и Sun Solaris оказались наиболее надежными платформами для выполнения приложений Epic 1.2. Нам не удалось выполнить все тесты на OS/2, поскольку пиктограммы приложений не появлялись на инструментальной панели после входа в систему. Нам не удалось сделать контрольных замеров для ОС Windows 3.1 и Internet Explorer на 486-ой машине, поскольку браузер переставал реагировать на запросы после того, как мы открывали File Manager. Однако Netscape Communicator 4.0 под Windows 3.1 прошел все наши тесты. Мы запускали Epic на двух компьютерах Macintosh с установленной ОС Mac OS Run-time for Java, но нам не удалось запустить его на других конфигурациях Macintosh. Epic также отказался работать на платформе Linux.

Контрольные замеры производительности Novera Epic 1.2

Платформа Запуск Вход File Manager Файл 1 КБ (1) Файл 52 КБ (1) Всего
Sun Solaris, Netscape Navigator 3.0, Sparc 1000, 256 МБ ОЗУ 0:10(2) 0:09 0:14 0:04 0:04 0:41
Sun Solaris, Netscape Navigator 4.0, Sparc 20, 128 МБ ОЗУ 0:08 0:10 0:29 0:03 0:05 0:55
OS/2, Netscape Navigator 2.0, Pentium 133 МГц, 16 МБ ОЗУ 0:39 0:58 x(3) x(3) x(3) x(3)
OS/2, Netscape Navigator 2.0, Pentium 133 МГц, 32 МБ ОЗУ 0:22 0:39 x(3) x(3) x(3) x(3)
Windows NT, Netscape Navigator 4.0, Pentium Pro 180, 64 МБ ОЗУ 0:05 0:08 0:15 0:01 0:02 0:31
Windows NT, Microsoft Internet Explorer 3.02, Pentium Pro 180, 64 МБ ОЗУ 0:07 0:04 0:22 0:02 0:03 0:38
Windows 95, Microsoft Internet Explorer 3.0, Pentium 120 МГц, 32 МБ ОЗУ 0:20 0:09 0:30 0:02 0:03 1:04
Windows 95, Netscape Navigator 4.0, Pentium 120 МГц, 32 МБ ОЗУ 0:11 0:24 0:40 0:03 0:04 1:22
Windows 3.1, Microsoft Internet Explorer 3.0, 486 66 МГц, 16 МБ ОЗУ 0:35 3:02 10:23 x(3) x(3) x(3)
Windows 3.1, Microsoft Internet Explorer 3.0, Pentium 133 МГц, 32 МБ ОЗУ 0:10 0:40 2:10 0:09 0:17 3:26
Windows 3.1, Netscape Navigator 4.0, Pentium 133 МГц, 32 МБ ОЗУ 0:25 0:30 1:00 0:03 0:05 2:03
Windows 3.1, Netscape Navigator 4.0, 486 66 МГц, 16 МБ ОЗУ 0:56 2:01 3:43 0:08 0:17 7:05
Mac 8100 MRJ(4), PowerPC 60 100 МГц, 24 МБ ОЗУ 0:25 0:34 0:48 0:02 0:06 1:55
Mac 9600 MRJ(4), PowerPC 604e 233 МГц, 64 МБ ОЗУ 0:13 0:24 0:38 0:02 0:03 1:20
Mac 8100, Netscape Navigator 4.0, 24 МБ ОЗУ x(3) x(3) x(3) x(3) x(3) x(3)
Mac 9600, Netscape Navigator 4.0, 64 МБ ОЗУ x(3) x(3) x(3) x(3) x(3) x(3)
Mac 8100, Microsoft JVM, 24 МБ ОЗУ x(3) x(3) x(3) x(3) x(3) x(3)
Mac 9600, Microsoft JVM, 64 МБ ОЗУ x(3) x(3) x(3) x(3) x(3) x(3)
OpenLinux, Netscape Navigator 3.02, Pentium 166 МГц, 48 МБ ОЗУ 0:08 0:05 x(3) x(3) x(3) x(3)
(1) При тестировании открывался файл данного размера.
(2) Время в формате минуты:секунды.
(3) Приложение не работало на данной платформе.
(4) Mac OS Run-time for Java.

Производительность Java на разных платформах

Тестирование Java-платформ проводилось с помощью Anyware и Epic. В программе Anyware мы открывали 50-страничный текстовый документ и электронную таблицу, которые были импортированы из Microsoft Office. Полученные показатели производительности Anyware определялись по времени входа в систему, запуска приложений и открытия файлов. Кроме получения данных по производительности, в результате наших тестов мы выявили, что Anyware обладает хорошей переносимостью на широкий диапазон платформ. Из проверенных нами платформ Windows 95, Windows NT и Sun Solaris 2.51 оказались наиболее стабильными. Несколько виртуальных машин показали очень хорошие результаты по производительности при выполнении наших Java-приложений. Две виртуальные машины, работающие на Windows NT, оказались самыми быстрыми по загрузке программ, а JVM на OpenLinux показала лучшие результаты по времени реакции на действия пользователей.

Были однако и такие виртуальные машины, производительность которых мы не смогли измерить. Мы были разочарованы тем, что приложение Anyware, имеющее сертификат "100% Pure Java", совсем не работает на Macintosh. Однако нас приятно удивила производительность виртуальных машин Microsoft и Netscape, работающих на Windows 3.1, хотя понятно, что Java не предназначена для работы на маломощных компьютерах. Во всех случаях, когда производительность была низкой, это было вызвано либо недостаточным объемом ОЗУ, либо использованием маломощного процессора. Оказалось также, что на производительность Java-программ оказывает влияние и используемая ОС. Операционные системы, которые наиболее полно используют возможности процессора и памяти (Win95, NT, OS/2, OpenLinux и Solaris) показали более высокую производительность, чем другие (Mac OS и Windows 3.1).

Контрольные замеры производительности Applix Anyware Office 4.3

Платформа Запуск Office Запуск текстового процессора Запуск табличного процессора Запуск менеджера файлов Открытие документа Открытие электронной таблицы Всего
Sun Solaris, Netscape Navigator 3.0, Sparc 1000, 256 МБ ОЗУ 0:17(1) 0:16 0:18 0:03 0:09 0:11 1:14
Sun Solaris, Netscape Navigator 4.0, Sparc 20, 128 МБ ОЗУ 0:12 0:14 0:19 0:04 0:06 0:13 1:08
OS/2, Netscape Navigator 2.0, Pentium 133 МГц, 16 МБ ОЗУ 1:48 0:44 0:46 0:15 0:25 0:28 4:26
OS/2, Netscape Navigator 2.0, Pentium 133 МГц, 32 МБ ОЗУ 1:07 0:16 0:07 0:03 0:04 0:10 1:47
Windows NT, Netscape Navigator 4.0, Pentium Pro 180, 64 МБ ОЗУ 0:08 0:06 0:04 0:15 0:03 0:05 0:41
Windows NT, Microsoft Internet Explorer 3.02, Pentium Pro 180, 64 МБ ОЗУ 0:08 0:08 0:06 0:03 0:04 0:08 0:37
Windows 95, Microsoft Internet Explorer 3.0, Pentium 120 МГц, 32 МБ ОЗУ 0:12 0:11 0:11 0:03 0:05 0:09 0:51
Windows 95, Netscape Navigator 4.0, Pentium 120 МГц, 32 МБ ОЗУ 0:28 0:16 0:09 0:01 0:04 0:06 1:04
Windows 3.1, Microsoft Internet Explorer 3.0, Intel 486 66 МГц, 16 МБ ОЗУ 2:04 2:59 3:38 0:32 1:50 2:25 13:28
Windows 3.1, Microsoft Internet Explorer 3.0, Pentium 133 МГц, 32 МБ ОЗУ 0:38 0:35 0:32 0:08 0:09 0:14 2:16
Windows 3.1, Netscape Navigator 4.0, Pentium 133 МГц, 32 МБ ОЗУ 0:47 0:23 0:20 0:03 0:08 0:28 36:43
Windows 3.1, Netscape Navigator 4.0, Intel 486 66 МГц, 16 МБ ОЗУ 2:40 1:25 1.18 0:10 1:24 1:57 8:54
Mac 8100 MRJ(2), PowerPC 60 100 МГц, 24 МБ ОЗУ 0:30 x(3) x(3) x(3) x(3) x(3) x(3)
Mac 9600 MRJ(2), PowerPC 604e 233 МГц, 64 МБ ОЗУ 0:17 x(3) x(3) x(3) x(3) x(3) x(3)
Mac 8100, Netscape Navigator 4.0, 24 МБ ОЗУ 2:30 x(3) x(3) x(3) x(3) x(3) x(3)
Mac 9600, Netscape Navigator 4.0, 64 МБ ОЗУ 0:37 x(3) x(3) x(3) x(3) x(3) x(3)
Mac 8100, Microsoft JVM, 24 МБ ОЗУ 0:32 x(3) x(3) x(3) x(3) x(3) x(3)
Mac 9600 Microsoft JVM, 64 МБ ОЗУ 0:18 x(3) x(3) x(3) x(3) x(3) x(3)
OpenLinux, Netscape Navigator 3.02, Pentium 166 МГц, 48 МБ ОЗУ 0:11 0:07 0:08 0:02 0:05 0:06 0:39
(1) Время в формате минуты:секунды.
(2) Mac OS Run-time for Java.
(3) На данной платформе приложения не работали.

Пройдет ли ваше Java-приложение тест на 100% чистоту?

Заострите свои клинки: компьютерная индустрия встала на путь Священной войны. Поводом для сражений на этот раз послужила инициатива Sun "100% Pure Java" (100% чистая Java). Приверженцы этой инициативы видят в Java святого Георгия, способного поразить дракона-Microsoft. Клеветники называют Java Крестовым походом детей. Как и во многих других сражениях основные вопросы сводятся к борьбе стандартов и желанию производителей выделиться на рынке.

Инициатива "100% Pure Java" компании Sun Microsystems, с одной стороны, является руководством по программированию, а с другой - маркетинговой кампанией. Чтобы получить сертификат Pure Java, приложение должно быть написано на "чистом" языке Java. Кроме того "чистое" Java-приложение должно обладать по крайней мере некоторой переносимостью.

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

Тест на чистоту

Чтобы пройти тест на чистоту в компании Sun, приложение должно быть написано исключительно на языке Java. Приложение не может осуществлять вызовы функций конкретной операционной системы. Все функции должны быть сосредоточены в Java и написаны с помощью Java API. Кроме того, интерфейс Java API не может быть изменен, и приложение должно соответствовать спецификации Java API. И наконец, все библиотеки классов, связанные с конкретным приложением, также должны быть созданы на чистом языке Java. Если разработчик использует в приложении свои собственные библиотеки, то сначала сертификат Pure Java должны получить эти библиотеки, и лишь после этого на него сможет претендовать само приложение.

Для участия в сертификации разработчик платит более 1150 дол., после чего приложение проходит серию тестов в компании KeyLabs, являющейся партнером Sun по сертификации Pure Java. Сначала приложение проходит разработанный Sun тест JavaPureCheck, в котором проверяется его чистота. Разработчик также должен предоставить отдельную копию Java-приложения для автоматизированного тестирования на переносимость. KeyLabs не проверяет качество приложения; суть теста состоит в том, что в работе приложения не должно быть сбоев во время выполнения на разных платформах. Однако приложение, получившее сертификат Pure Java, не обязательно должно быть полностью переносимым - достаточно, чтобы оно соответствовало положениям руководства Pure Java и могло успешно выполняться хотя бы на двух платформах.

Вся хитрость здесь заключается в том, что приложение может быть совершенно "чистым", не являясь при этом переносимым. Многие вещи на разных платформах устроены очень по-разному, и для того чтобы создать действительно кросс-платформенное приложение, необходимо исключать из программы значительную часть кода. Например, системы имен файлов в Unix, Macintosh и Windows 3.1 сильно отличаются друг от друга, и имя файла, допустимое в одной ОС, для другой может выглядеть абракадаброй. По этой причине Java-приложение никогда не должно напрямую обращаться к файлам, поскольку при работе на определенных платформах эти обращения могут передаваться неправильно.

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

Эти соображения возвращают нас к вопросу о причинах, побудивших Sun выступить с инициативой 100% Pure Java. Сертификат Pure Java указывает, что приложение было разработано с учетом потенциальных "ловушек", связанных с совместимостью.

Тормозящий фактор

Инициатива Pure Java превратилась в настоящее яблоко раздора между Sun и Microsoft. Каждая из этих компаний пытается приспособить Java для достижения собственных целей. В своей борьбе против Sun Microsoft делает такие вещи, которые многие считают откровенной "ересью" по отношению к Java. Например JVM, поставляемая с 4-ой версией браузера Internet Explorer имеет функцию J/Direct, которая обеспечивает прямой доступ из Java-приложения к 32-битным API-интерфейсам Windows. Эта функция по определению является зависимой от платформы и не позволяет работать на платформах, отличных от Windows.

Кроме ограничения переносимости Java-приложений, это нарушает принятую в Java модель безопасности. Если "чистые" Java-приложения полностью основываются на модели "песочницы" (sandbox), то программа, которая напрямую обращается к Windows, может выполнять любой код. Чтобы защититься от "зловредных" программ, разработчики подписывают свои приложения с помощью Authenticode, т.е. используют модель защиты, которая была разработана Microsoft для управляющих элементов ActiveX. И хотя эту модель в общем-то нельзя назвать ни плохой, ни хорошей, она весьма сильно отличается от модели "песочницы", и с ней связано много своих проблем.

Многие, и особенно Sun, усматривают в J/Direct прямое нападение на Java, считая, что Microsoft пытается использовать Java для решения своих собственных задач. Масла в огонь подлила и разработка Microsoft библиотек классов Application Foundation Classes (AFC). Java-приложение основывается на классах - предопределенных программных объектах, выполняющих конкретные функции. Выпущенный Sun комплект JDK имеет стандартный набор Java-классов. Однако существуют и другие библиотеки классов. Например, компания Netscape разработала библиотеку Internet Application Classes, которая была включена в библиотеку Java Foundation Classes (JFC) компании Sun в качестве отдельной группы. Библиотека AFC является конкурирующим продуктом, в котором Microsoft расширяет возможности пользовательского интерфейса и использует специфические функции Windows NT.

Как бы то ни было, многие вопросы, по которым в последнее время развернулась горячая полемика, явно чрезмерно раздуты. Очевидно, что J/Direct не сможет уничтожить Java. Более того, эту функцию можно представить и как весьма полезную для Java. Несмотря на все свои преимущества переносимости, Java по определению имеет более низкую производительность, связанную с ее интерпретируемой природой. Прямой доступ к API-интерфейсам ОС может повысить производительность приложения, что является весьма желанным для многих разработчиков. А те, кто разрабатывает кросс-платформенные приложения, должны иметь в своем арсенале одно специальное средство: приложение может быть структурировано таким образом, чтобы проверять, может ли оно напрямую обращаться к функциям ОС. Если нет, то оно будет выполняться в виде байт-кода Java. Иными словами, практически все разработчики могут только выиграть от применения J/Direct.

Развернувшаяся война межу Sun и Microsoft является большим тормозящим фактором для Java. Microsoft отказалась включать JFC в новую версию Internet Explorer и вместо этого включила туда AFC. Sun пытается отозвать у Microsoft лицензию на Java и предъявила ей судебный иск. При худшем варианте развития событий пользователю придется вместе с Java-приложением загружать еще и совместимые с ним библиотеки классов. И хотя это, конечно, представляет определенное неудобство, но отнюдь не означает конец света. Послушав же споры Sun и Microsoft, можно подумать, что идет война не на жизнь, а на смерть.

Инициатива 100% Pure Java компании Sun направлена на лишь то, чтобы программисты избегали использования ресурсов, которые отсутствуют в стандартных средствах Java и API, разработанных SunSoft.


Глоссарий

HotJava - Web-браузер компании Sun Microsystems, написанный на Java. HotJava позволяет импортировать и выполнять апплеты через Internet.

HotSpot - Разработанный Sun компилятор just-in-time следующего поколения. Он даст возможность выполнять Java-программы так же быстро, как скомпилированные приложения на C++.

JavaBeans - Независимые программные модули Java-приложения, взаимодействующие друг с другом во время его выполнения. В среде DCE (Distributed Computing Environment) компоненты JavaBeans могут выполняться дистанционно; для этого используется либо разработанный Sun протокол Remote Method Invocation, либо спецификация CORBA, предложенная Object Management Group.

Java chip - Разработанный Sun микропроцессор, который выполняет байт-код Java "естественным" образом. При наличие этого процессора байт-код не проходит через виртуальную машину Java или компилятор JIT, а сразу обрабатывается процессором.

Java Database Connectivity (JDBC) - Разработанная Sun спецификация и API-интерфейс, который позволяет любому Java-совместимому браузеру извлекать информацию из JDBC-совместимой базы данных. Спецификация JDBC также совместима с ODBC и интерфейсом SQL-92 Call Level Interface.

Java Foundation Classes (JFC) - Стандартные блоки для создания настольных приложений, способных работать в Internet и в интрасетях. С их помощью разработчики могут создавать приложения, "отражающие" ту ОС, на которой они работают, включая Windows, Sun Solaris и Macintosh. Библиотеки классов JFC составлены из набора базовых сервисов и компонентов графического пользовательского интерфейса. Пользователи также могут приспосабливать интерфейс приложения к своим задачам и "на лету" менять его внешний вид.

Java Developer's Kit (JDK) - Разработанный Sun комплект средств разработки, содержащий базовый набор средств, необходимых для написания, тестирования и отладки Java-приложений и апплетов. В этот комплект входит компилятор, отладчик и интерпретатор времени выполнения (виртуальная машина) для каждой поддерживаемой платформы. JDK также содержит базовый набор классов, поставляемых компанией Sun, например таких как Abstract Windowing Toolkit (AWT).

Java Virtual Machine (JVM) - Java-интерпретатор, осуществляющий построчное преобразование байт-кода Java в машинный язык и его выполнение. JVM выполняет скомпилированные Java-программы независимо от операционной системы, на которой она работает, что позволяет выполнять одно Java-приложение на нескольких платформах.

Just-in-time (JIT) compiler - Компилятор, который преобразует байт-код в естественный машинный код непосредственно во время работы Java-программы. Это обеспечивает более высокую производительность, чем при интерпретации кода с помощью виртуальной машины Java.