Веб-дизайн


Модульные технологии


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

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

К сожалению, существует сразу несколько препятствий к реализации этой простой схемы.

• Исполняемый файл программы, скомпилированной для одной компьютерной платформы (например, для Windows 95), не будет работать на другом типе ком­пьютеров (например, на Макинтоше) или в другой операционной системе (например, в DOS). Веб-страницащ

68

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

• Давать любому желающему возможность выполнять на вашем компьютере свои программы — более чем риско­ванная затея. В отличие от JavaScript-сценария, в котором соответствующих средств нет и не может быть в прин­ципе, программа на обычном языке программирования способна заразить вас вирусом, попортить данные на вашем диске или уворовать конфиденциальную инфор­мацию.

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

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

• Технология подключаемых модулей (plug-in modules) под­разумевает наличие двух компонентов: общего для всех объектов данного типа модуля, который достаточно пе­рекачать из сети один раз и установить на компьютере пользователя как обычную программу, и подключаемых к HTML-странице объектов. Последние интерпретиру­ются и выводятся на отведенное им место в пределах страницы соответствующим модулем, запуск которого (как правило, в фоновом режиме, т. е. без создания соб­ственного окна) берет на себя броузер.

69



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


Это позволяет добиться небольших объемов пе­ресылаемых по сети данных (разумеется, «небольшими» они будут только после того, как пользователь перекачает себе сам модуль, объем которого редко опускается ниже мегабайта).

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

• Апплеты на языке Java, при всех своих особенностях, имеют немало пунктов сходства с подключаемыми мо­дулями. Основную часть выполняемой апплетом работы берет на себя не передаваемый по сети объект ми­нимального объема, а большая программная система, называемая «виртуальной машиной Java» и устанавлива­емая на компьютер пользователя только раз (в отличие от подключаемого модуля, пользователю не приходится перекачивать ее из сети, так как оба визуальных броузера поставляются уже со встроенными виртуальными маши­нами). Подключаемый к веб-странице объект содержит так называемые «байтовые коды» — нечто среднее между исходным текстом и скомпилированным двоич­ным файлом программы, компромисс между идеалами быстродействия и переносимости.

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

70

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


Конечно, везде, где есть защита, можно постараться ее обойти, и поиск «дыр» в виртуальных машинах доставляет и долго еще будет до­ставлять приятные минуты компьютерным взломщикам. И все же в целом Java-апплеты можно считать достаточно безопасной технологией.

К сожалению, виртуальная машина у каждого из броузе­ров своя, и, несмотря на декларируемую совместимость между ними, апплет, который работает на одной из этих машин, иногда может отказаться работать на другой. Кроме того, как и любая многоуровневая система, Java-апплеты в сравнении с обычными программами сильно проигрывают в быстродействии. Наконец, необходи­мость «настоящего» программирования для изготовления апплетов обуславливает трудоемкость этого процесса. С другой стороны, наличие готовой виртуальной маши­ны почти на каждом компьютере и, опять-таки, богатые возможности полнофункционального языка программи­рования открывают перед этой технологией определен­ные перспективы. Так, уже упоминавшаяся технология Macromedia Flash (стр. 58) позволяет сохранять Flash-«мультики» в виде Java-апплетов, для работы которых не нужен установленный на компьютере Flash-модуль.

• Одно время Java-апплетам пытались составить кон­куренцию так называемые «компоненты ActiveX» — технология фирмы Microsoft, ограниченная только бро­узером Internet Explorer и только платформой Windows. Это наделавшее поначалу много шума, но быстро за­бытое нововведение интересно отсутствием какой бы то ни было «прокладки» между программным модулем (по сути, обычным исполняемым файлом в форма­те Windows) и операционной системой. Для решения проблемы безопасности была разработана система «элек­тронных подписей» с регистрацией законопослушных авторов ActiveX-апплетов у спонсируемых Microsoft «ци­фровых нотариусов». Неудивительно, что эта громоздкая система оказалась нежизнеспособной. В настоящее вре­мя изредка используются лишь ActiveX-объекты самой фирмы Microsoft, поставляемые вместе с ее броузе­рами.

71

В Windows-версии броузера Internet Explorer (начиная с версии 4) тех­нология ActiveX является не одним из усовершенствований, а букваль­но фундаментом всей программы. При запуске броузера управление получает контейнер, сразу же вызывающий ActiveX-модуль, в котором, собственно, и заключены все функции броузера. Любой программист может, таким образом, без труда встроить в свою программу самый настоящий броузер, написав всего лишь небольшую функцию для вы­зова этого модуля и обмена данными с ним. Отдельные функциональ­ные блоки броузера — виртуальная машина Java, интерпретатор HTML и даже сам блок взаимодействия с органами управления ActiveX — ре­ализованы в виде ActiveX-модулей.


Содержание раздела