Добавить в цитаты Настройки чтения

Страница 17 из 18

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

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

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

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

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

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

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

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





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

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

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

ДИНАМИЧЕСКИЕ СТРАНИЦЫ

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

По некоторым оценкам, больше половины всех страниц в современном Интернете генерируются и обновляются динамически — на основе информации из баз данных, в ответ на действия пользователя или в зависимости от каких–то внешних обстоятельств (например, текущей даты или курса доллара). Простейшая технология такого рода, поддерживаемая почти всеми веб–серверами, называется SSI (Server Side Include, «Вставки на уровне сервера»). Возможности ее ограничены вставкой внутрь одного HTML-файла содержимого другого, автоматической установкой даты, подсчетом числа загрузок страницы и т. п. Из более сложных технологий создания динамических сайтов особенно популярны две: CGI и ASP.

Стандарт CGI (Common Gateway Interface, «Общий интерфейс шлюзов»), поддерживаемый большинством программ–серверов, не накладывает каких–либо ограничений на используемый язык программирования, а лишь перечисляет правила, которые должна выполнять программа, генерирующая веб–страницу, чтобы сервер мог запускать ее в ответ на запрос документа с определенным URL. Однако поскольку большинство таких программ пишутся на специализированном языке Perl, термины «CGI» и «Perl» часто употребляются как синонимы. Стандарт CGI достаточно прост и, в частности, ничего не говорит о взаимодействии с какими бы то ни было базами данных, оставляя этот аспект целиком на совести самой CGI-программы и того языка, на котором она написана. Язык Perl не является собственностью какой–либо фирмы, и существуют бесплатно распространяемые интерпретаторы этого языка для всех операционных систем.