Sun и Java-технологии
АрхивНесмотря на то, что Россия только вступает на рельсы Internet/intranet, интерес к ним, подогреваемый лидерами компьютерной индустрии, постоянно растет. Это связано, конечно, не только с усилиями китов технологии, но и с тем, что темпы, с которыми россияне взялись за освоение сетевых технологий в общем и технологий Internet/Intranet в частности, несравнимы с теми, что мы наблюдали в процессе их становления на Западе. Россия вступает на дорогу Internet семимильными шагами. Может показаться, что на самом деле это не так, что, наоборот, вечно стесняемая денежными средствами, наша страна плетется далеко позади, и что не видно даже перспективы широкого внедрения технологий Internet в России. Мне бы хотелось, однако, привести довольно серьезный довод против таких суждений.
По сравнению с достаточно консервативным Западом, где сети, отличные от Internet, существуют очень давно, и их количество в настоящее время даже превышает общий объем всех IP-сетей (в 1996 году в США количество сетей, использующих протокол IP, только незначительно превысило количество сетей, работающих по протоколу SNA фирмы IBM, а ведь это отнюдь не единственный из используемых сетевых протоколов), Россия не имеет сложившейся сетевой инфраструктуры. Наиболее широко распространенные в России сети, основанные на NetWare фирмы Novell, реально еще не стали доминирующим выбором для компаний, так как большинство из них еще не выработало собственной стратегии использования сетей, а многие вообще не имеют установленных сетей. Таким образом, путь для продвижения в Россию наиболее перспективных сетевых технологий открыт, и количество факторов, удерживающих компании от их внедрения в своих корпоративных сетях, пренебрежительно мало (если, конечно, можно пренебречь фактором недостатка финансов).
За какие-нибудь два года внедрения Internet-технологий в корпоративные сети (сформировавшие новое название для них - intranet), привычные подходы значительно изменились. Все большее внимание корпорации уделяют концепции распределения нагрузки между компьютерами - участниками межсетевого обмена. Классическая ныне парадигма "клиент-сервер" родилась именно из таких попыток балансировки нагрузки и на сегодняшний день представляет собой один из наиболее совершенных вариантов работы. Однако, одновременно с внедрением технологий "клиент-сервер" как пользователи, так и разработчики ПО столкнулись с серьезными проблемами, связанными с разнообразием используемых клиентских компьютеров и установленных на них ОС. При этом, проблемы уходят далеко за грань простой необходимости для разработчика в написании разнообразных версий клиентского ПО для каждого из вариантов программно-аппаратной платформы - ведь в результате таких разработок появляется не один, а несколько продуктов, часто похожих друг на друга только названием. Это создает для разработчика огромные проблемы при поддержке продукта, для пользователя - в обучении и применении, а в итоге приводит к его высокой стоимости, ошибкам и редкому обновлению.
Решить эту и другие, стоящие перед компьютерным миром проблемы призвана Java-технология - новинка в мире Internet, разработанная компанией Sun Microsystems. В данной публикации я постараюсь подробнее рассказать об идеях и принципах, заложенных в Java, показать перспективы и преимущества применения этой платформы.
Основы Java-технологии
1. Язык Java
Основание Java-технологии составляет несколько базовых компонентов и комплекс подходов (формирующих так называемую парадигму). К первому и основному компоненту, несомненно, относится сам язык Java. Мне не хотелось бы в очередной раз вспоминать набившую оскомину большинству читателей историю создания языка Джеймсом Гослигом (James Goslig) или описанные уже много раз и не всем интересные отличия его от прародителя - языка C++, повторяя старую шутку Скотта Макнили (Scott McNealy) о том, что Java - это минус-минус-Си-плюс-плюс. Впрочем, все эти сведения не более полезны для понимания Java-технологии, чем вопрос о том, как произносить Java - "Ява" или "Джава".
Главными отличиями языка Java от практически всех создававшихся до сей поры языков программирования являются строгая типизация в смысле точной спецификации представления данных на нижнем уровне и компиляция программ (классов) в аппаратно-независимый, а также строго специфицированный двоичный код. Такие особенности были введены исключительно потому, что язык, создаваемый для работы в крайне разнообразном мире Internet, должен быть абсолютно независимым от платформы исполнения. Причем, не только с точки зрения исходного кода (как, например, язык Ада), но и на уровне откомпилированных модулей - любой Java-компилятор генерирует программы в единый платформо-независимый код (байт-код). Благодаря таким особенностям, единожды созданная и откомпилированная программа будет одинаково выполняться и на рабочей станции с RISC-процессором и на простом PC с процессором от Intel.
Разработчик избавляется от необходимости создания бесчисленного множества версий своего ПО для каждой из платформ и получает возможность сконцентрировать свое внимание на качестве продукта, а группа поддержки пользователей также избавляется от необходимости бесконечных "апгрейдов", "патчей" и поддержания в живом состоянии всего программного "зоопарка" в компании. Также легко видеть, что Java-программы уже не обязательно держать на локальных дисках, в отличие от многих "нормальных" программ, настраиваемых и запускаемых только на конкретном рабочем месте. Программа, написанная на языке Java, может быть записана на сервер один раз и затем подгружаться для выполнения с любого клиентского места.
Для достижения еще большего единообразия и удобства разработчика вместе с языком вы получаете богатейшую библиотеку стандартных классов, охватывающую практически все области возможного применения языка и облегчающую создание любых приложений. Не менее важна концепция "написал один раз, использовал многократно" (write once - use multiple), практикуемая в рамках языка. Единожды написанные на Java коды могут быть легко использованы впоследствии в других приложениях, сокращая время на разработку.
Язык и стандартные библиотеки классов (API) находятся в постоянном развитии. Первая официальная версия - 1.0 сейчас постепенно заменяется новой версией 1.1, которая содержит значительное количество изменений и дополнений, связанных с улучшением возможностей оконного интерфейса, полной интернационализацией, введением новых механизмов защиты, а также с появлением нововведений в языке, таких как вложенные классы и др.
2. Виртуальная Java-машина
Другим основополагающим компонентом Java-технологии является виртуальная Java-машина (JVM, Java Virtual Machine). Главной задачей JVM является исполнение на клиентском компьютере байт-кода, который появляется в результате компиляции исходного кода Java-программ. JVM виртуальна в том смысле, что для разработчика и компилятора безразлична конкретная реализация JVM, на которой в дальнейшем будет выполняться программа, так как все они одинаковы в смысле заложенной в них функциональности. Такое единство достигается благодаря точной спецификации на JVM, предоставляемой Sun Microsystems для всех разработчиков и содержащей подробнейшее описание всех аспектов ее работы.
В настоящее время, наверное, нет такой платформы, на которой не была бы реализована Java-машина - от мэйнфреймов до палмтопов. Все ведущие производители ОС встраивают ее в свои системы, чтобы дать пользователям возможность исполнения на них Java-программ. Для внесения спокойствия в мир пользователей многочисленных Java-платформ, компания JavaSoft (дочернее отделение компании Sun, владельца технологии) проводит сейчас дополнительную программу сертификации на JVM и Java-приложения под названием "100% Pure Java". Покупая продукт с данным логотипом, вы можете быть уверены, что он действительно будет работать на любой JVM соответствующей спецификации, либо, что встроенная в него машина также ей соответствует. Надо сказать, что одновременно с упомянутыми выше изменениями в языке, происшедшими при появлении версии 1.1, несколько изменилась и спецификация виртуальной машины, чтобы соответствовать новым возможностям языка. Так как программа "100% Pure Java" появилась на свет практически одновременно с новой спецификацией, то получить сертификат могут только продукты, соответствующие новой версии. Новая версия JVM является расширением версии 1.0, что обеспечивает возможность исполнения приложений для 1.0 на JVM 1.1.
Один из наиболее критикуемых недостатков JVM - низкая скорость работы, - связанный с ее интерпретационным характером, постепенно сходит на нет по мере появления JVM, использующих динамическую компиляцию байт-кода в "родной" код платформ исполнения (JIT-компиляция). Компания же Sun Microelectronics начинает выпуск "железного" варианта JVM, представленного семейством Java-процессоров различного назначения от picoJava, предназначенного для встраивания в автономные сетевые устройства, до microJava и UltraJava, основным назначением которого является работа в сетевых компьютерах (Network Computer, NC), что позволит еще более существенно увеличить скорость выполнения Java-приложений в сетевых устройствах.
3. Среда исполнения
Для работы Java-приложения, кроме JVM, исполняющей его двоичный код, необходимо позаботиться и о среде исполнения, которая взяла бы на себя управление такими функциями, как ввод/вывод, оконная система, файловая система, сетевые функции и т. д. Классическими примерами таких сред исполнения являются браузеры, такие как Netscape Navigator и HotJava. С точки зрения технологии Java, несомненно, больший интерес представляет JavaOS, операционная система для Java-ориентированных устройств, таких как NC. В отличие от браузеров, она предназначена не только для исполнения апплетов (Java-программ, включаемых в HTML документы для придания им динамичности и внесения расширенных возможностей), но и "классических" приложений, исполняемых локально (standalone Java applications), например, служебных утилит или серверных задач.
JavaOS предназначена для работы на Java-ориентированной аппаратуре, такой как сетевые компьютеры или интеллектуальные сетевые устройства. В связи с тем, что JavaOS полностью написана на Java, ее легко встраивать в любую аппаратуру, имеющую в своем составе JVM. Она достаточно компактна, чтобы работать в качестве ОС для управления исполнением встроенных приложений в сетевых устройствах, и в тоже время обладает всем набором необходимых для полноценного компьютера функций и поэтому может являться базовой ОС для NC.
Многие производители ОС сейчас уже встраивают собственные среды исполнения в свои системы для работы с приложениями, написанными на Java, так же как и с приложениями, написанными специально для ОС. Для примера можно указать OS/2 Warp 4 корпорации IBM, имеющую в своем составе средства исполнения Java-программ. Новая версия ОС компании Sun, Solaris 2.6, также будет поставляться со средствами для выполнения программ на Java.
В случае, когда необходимо исполнение Java-приложений на системе, управляемой ОС, не имеющей в своем составе среды исполнения, такую задачу на себя обычно берет браузер. К сожалению, в отличие от вышеописанных сред, браузер не приспособлен для выполнения самостоятельных системных программ, давая возможность запуска только апплетов (по ряду причин, связанных с безопасностью, доступ апплетов к локальным данным и полноценная работа с сетевыми средствами невозможны), а значит, не привносит в систему полной функциональности Java.
Интересным с точки зрения реализации является браузер HotJava. Достаточно небольшой, чтобы быть исполненным на NC, он в то же время имеет весь набор функций, присущих другим браузерам, и имеет возможность исполнения Java-апплетов. Сам написанный на Java, он создан на основе небольших модульных библиотек классов, которые могут быть использованы разработчиками в дальнейшем для создания собственных сетевых приложений. Например, в случае, если вам необходима быстрая разработка браузера, удовлетворяющего вашим специфическим требованиям, или если вы желаете внести в него некоторые дополнительные функции, которые отсутствуют у браузеров, имеющихся на рынке, - то разработка на основе классов, предоставляемых HotJava, позволит значительно сократить время и затраты на проект.
4. Сетевой компьютер
Еще одним из непременных атрибутов сегодняшней Java-технологии является сетевой компьютер. Пионерами в этой области являются компании Oracle, Sun Microsystems и IBM (компания Oracle сама не выпускает NC, занимаясь лицензированием своей технологии и разработкой соответствующего ПО). А на сегодняшний день уже десятки крупнейших производителей компьютерной техники также представили свои варианты NC. Так как эта статья посвящена видению обсуждаемой технологии компанией Sun, я расскажу о JavaStation - продукте, полностью удовлетворяющем спецификациям на NC и при этом обладающем многими уникальными свойствами.
Как и всякий NC, JavaStation является клиентом с "нулевым администрированием", приспособленным к работе в сети и целиком полагающимся на нее. "Нулевое администрирование" подразумевает не отсутствие необходимости в администрировании вообще, а отсутствие необходимости администрирования на конкретном рабочем месте. Вся такая работа концентрируется на управляющем сервере. Согласно методологии Sun, JavaStation не имеет устройств долговременного хранения данных и все данные и программы получает из сети. Единственными данными и программой, которые запускаются локально, и только в момент загрузки JavaStation является OpenBoot - аналог BIOS для PC. В его задачи входит инициализация устройств ввода/вывода и последующая загрузка ядра JavaOS с сервера. Все дальнейшие действия производятся загруженным ядром, а впоследствии основным кодом JavaOS. Для определения параметров станции и начальной загрузки используются протоколы DHCP и TFTP (см. врезку "Загрузка JavaOS"), работа с которыми, как и основы TCP/IP, "прошиты" в OpenBoot.
Несмотря на кажущуюся простоту и небольшие размеры JavaStation имеет в своем составе достаточно мощные средства для работы. Это высоко-
производительный RISC-процессор microSPARC II с частотой 110 МГц, оперативная память объемом до 64 Мбайт, графический ускоритель с разрешением 1024x768 на 256 цветов (1 Мбайт VRAM, 8 бит), сетевой адаптер Ethernet на 10 Мбит, порты для подсоединения клавиатуры, мыши и последовательный порт. Следуя идее о "компьютере за 500 долларов", Sun использует в своей JavaStation стандартные и недорогие PC-совместимые компоненты, такие как память, мышь и клавиатура. Так же с целью удешевления станции в качестве устройства отображения используется стандартный SVGA-монитор. Текущая модель не ориентирована на использование в секторе SOHO, поэтому единственным интерфейсом для связи с сервером, имеющимся в наличии, является встроенный Ethernet.
В качестве пользовательского интерфейса могут использоваться, по выбору, либо описанный ранее браузер HotJava, либо пользовательская среда JavaViews (продукт, также известный под названиями JavaDesk и Krakatoa), являющаяся хорошим примером к описанным выше возможностям создания приложений на основе библиотек классов HotJava. Кроме чисто браузерных способностей, унаследованных от HotJava, данный продукт имеет в своем составе базовые средства для организации рабочего места пользователя (productivity tools) - электронную почту, календарь, адресную книгу и т. д. Интересной особенностью JavaDesk является репродуктивность состояния, заключающаяся в том, что состояние пользовательского интерфейса и промежуточные результаты работы постоянно записываются на сервер, что позволяет в любой момент завершить работу и продолжить ее позже, причем с любого рабочего места в корпоративной сети. Даже если в процессе работы произойдет авария (случайное отключение питания или сбой сети), то после следующей загрузки или реинициализации работы с другого рабочего места пользователь будет иметь то же состояние рабочего пространства, что и в момент аварии, с сохранением практически всех данных.
Существующее на сегодняшний день разнообразие NC, конечно, не ограничивается JavaStation, которая была приведена только как пример удачной реализации концепции. Конечно, среди многих моделей NC иногда попадаются изделия, которые можно назвать NC только с очень большой натяжкой, а некоторые и вообще таковыми по сути не являются (см. врезку "Отклонения от нормы").
Еще один интересный проект от Sun под названием Rescue PC (дословно - "спасение PC") предназначен для компаний, имеющих в распоряжении персональные компьютеры с устаревшими процессорами 486 и младшими моделями Pentium, которые заинтересованы в защите своих вложений и одновременно желают внедрить новейшие технологии. Rescue PC представляет собой программное обеспечение для DOS, превращающее такие компьютеры в чуть более медленные аналоги JavaStation. Единственным отличием их от оригинальной JavaStation является процедура старта, предусматривающая запуск JVM и последующую загрузку JavaOS с локального DOS-диска компьютера. В дальнейшем система работает с тем же ПО и серверами, что и обычные JavaStation, и по интерфейсу неотличима от последних. Имея в своем распоряжении ПО RescuePC, клиент получает возможность постепенного перехода в мир сетевых вычислений, сохраняя при этом возможность работы со своим старым ПО для DOS/Windows.
5. Java-сервер
Существование сетевых компьютеров, получающих все данные для своей работы через сеть, невозможно без обслуживающих серверов. Сервер, предназначенный для работы с такими клиентами, должен, как минимум, обслужить загрузку ОС на эти клиенты, то есть "уметь работать" с протоколом TCP/IP и исполнять серверные функции для обслуживания запросов ARP/RARP, BOOTP/DHCP, TFTP/FTP/HTTP и NFS. В зависимости от типа клиента данный список может быть пополнен или усечен. Так, например, в случае, когда сервер должен обслуживать JavaStation, необходима поддержка протоколов RARP, DHCP, TFTP и NFS для обеспечения успешной загрузки на клиента JavaOS, а также NIS, HTTP и SMTP/POP для обеспечения ее дальнейшего функционирования.
В принципе, с такими задачами может справиться любой Unix-сервер, поскольку поддержка большинства из описанных протоколов включена в Unix в качестве обязательного набора служб. Однако администрирование большого числа клиентов предполагает серьезный "ручной" труд по внесению изменений одновременно в большое количество конфигурационных файлов. Для облегчения этой задачи поставщики NC вместе с клиентским предлагают и свое административное, а часто, и серверное решение, имеющее в своем составе средства, облегчающие такую работу посредством удобного графического интерфейса. Решение может быть чисто программным, либо программно-аппаратным. Среди поставщиков NC Sun имеет сильные позиции, так как одновременно является и традиционным поставщиком серверных Unix-решений как в "железе", так и в ПО. В комплекте со своими JavaStation Sun поставляет Java-серверы Netra j, базирующиеся на ОС Solaris для платформы SPARC. Кроме собственно ОС, сервер содержит сервисное ПО для поддержки работы и администрирования клиентов, а также пакет Netscape SuiteSpot, содержащий набор серверов для традиционных приложений Internet, таких как Web, News и Mail. Таким образом, клиенты компании вместе с JavaStation получают не только полноценное, законченное решение в области администрирования и обслуживания клиентов, но и развитый Internet/Intranet сервер, равно как и мощный сервер приложений. В дополнение ко всему, Netra j может быть использована как платформа для разработки Java-приложений и апплетов.
Итоги и рекомендации
В данной статье я попытался рассказать вам об основных компонентах Java-технологии, которыми являются язык Java, виртуальная Java-машина (JVM), среда исполнения (JavaOS), сетевой компьютер и Java-сервер. Подводя итоги вышесказанного, можно указать на основные аспекты Java-технологии и основные причины экономии при переходе на них.
|
- Создавайте структуру корпоративной сети с использованием технологий Internet.
- Внедрите функциональность Java-клиента на всех настольных компьютерах компании - сначала через браузеры с поддержкой Java типа Netscape Navigator.
- Переведите электронную почту в Internet. Это обеспечит универсальный доступ к электронной почте для всех клиентов с использованием протоколов Internet (IMAP4, POPЗ) и приобщит пользователей к общему доступу к приложениям через свои браузеры и к последующей работе с NC.
- Разверните систематизированную программу обучения для повышения уровня компетентности сотрудников (и, прежде всего, занятых в области компьютеризации) в Java. Многие программы обучения предлагают Sun и другие компании.
- Создайте подразделения, чья уставная задача - создавать Java-программы. Помощь в переходе на "Java-вычисления" вы можете получить от ряда компаний-интеграторов.
- Отложите массовое обновление клиентских операционных систем, пока не сможете провести оценку их возможностей и функциональности с точки зрения невозможности реализации таковых средствами NC и Java. Вполне естественно, что для каких-то приложений и пользователей NC окажется неприемлемым, и потребуются селективные решения.
- Внимательно следите за объявлением новых продуктов, поскольку на рынке появляются многочисленные разработанные Java-приложения. Уже сегодня на рынке есть Java-программы практически во всех основных областях приложений.
- Следите за объявлениями о выпуске многими отраслевыми производителями Java-устройств. Выборочно приобретайте и испытывайте Java-устройства в вашем диапазоне приложений и пользовательских областей с целью выявить наиболее подходящие для вас варианты.
- Не торопитесь с закупкой новой аппаратуры и ПО для "традиционных клиентов" (за исключением случаев, когда они используются для интенсивной обработки данных), пока не определились с выбором в области NC и задач, решением которых он будет заниматься.
- Ускоряйте переход приложений на Java в тех областях, где можно быстро достигнуть эффекта. Внедряйте NC на настольных системах со специализированными функциями. Вот области с быстрой потенциальной отдачей от внедрения Java-технологий:
- настольные системы со специализированными функциями (системы резервирования, ввод заказов и т. д.);
- специализированные программы поддержки принятия решений;
- связь/транзакции с клиентами или поставщиками;
- связь/транзакции с сотрудниками.
Если следовать вышеперечисленным рекомендациям, в компании быстро начнет нарастать критическая масса Java-приложений. Когда это произойдет, можно начинать заменять настольные станции с "традиционными клиентами" на Java-устройства. Будьте уверены, Java-технология вас не подведет.
Россия еще не "обросла" компьютерами настолько, чтобы иметь проблемы с внедрением новейших технологий, поэтому необходимо использовать этот шанс. Надо вырваться из объятий производителей, предлагающих делать ставку только на их собственные решения, и вступить на путь развития вместе с открытыми системами и открытыми технологиями.
С автором можно связаться по адресу: Alexander.Lunev@Russia.Sun.Com
|
|
|