Даты выпуска новых программных продуктов всегда были естественными вехами в компьютерной истории. Поэтому начало последнего этапа войны между Netscape и Microsoft правильнее всего датировать концом декабря 1996 года, когда корпорация Netscape явила миру первую "предварительную" версию "Коммуникатора". Начиная с этого момента, над полем битвы стоит неумолчная канонада: каждый месяц конкуренты выстреливают друг в друга очередной preview-версией, маневрируя в попытках нащупать слабые места противника и спешно подтягивая обозы с технической документацией.
Как вcегда, важное преимущество в этой конкурентной борьбе дает реализация новейших web-технологий. На сей раз обе стороны весьма увлеченно размахивают знаменами "динамического HTML" ("Dynamic HTML"). Простому обывателю это новое имя в истории Интернета неизвестно. Попробуем выяснить, так что же это все-таки такое?
Страницы истории
Стремлению сделать web-страницу динамичной и интерактивной столько же лет, сколько и самому WWW. Первая версия языка HTML не могла даже создавать формы с заполняемыми полями и кнопками. Версия HTML 2.0, имевшая значительное преимущество перед предыдущими версиями, приобрела тем самым известную долю интерактивности, но все же осталась статичной.
Первые же попытки преодолеть эту проблему web-страниц заставили разработчиков выйти за пределы языка HTML. Java-апплеты и компоненты ActiveX - это "почти настоящие" программы, которые способны на отведенном им прямоугольнике web-страницы реализовать любой нтерфейс, мультимедийные эффекты, обработку данных и многое другое. Однако тут встает другая проблема. Вся беда в том, что эти "островки динамичности" почти ничем не связаны с прочим содержимым страницы и потому вынуждены в большинстве случаев ограничиваться лишь декоративными функциями. У "апплетного" подхода есть и другие минусы - необходимость передачи по сети достаточно крупных по размерам файлов, сравнительно высокие требования к быстродействию компьютера, а также проблемы безопасности.
Именно поэтому одновременно с поддержкой языка Java разработчики Netscape встроили в свой браузер еще один язык, более простой и гораздо теснее связанный с HTML, - язык сценариев JavaScript. Этот язык по своей роли близок к макроязыкам, которые с давних пор встраиваются в любую достаточно сложную программу. JavaScript-сценарий не замыкается в изолированном "апплете", а свободно переплетается и взаимодействует с HTML-разметкой страницы. Первая версия JavaScript уже позволяла, среди прочего, открывать и закрывать окна браузера, загружать в них документы, управлять фреймами и взаимодействовать с полями бланков.
Развиваясь, JavaScript открывал сценариям доступ ко все большему количеству элементов страницы. С его помощью стали возможны такие трюки, как, например, плавное изменение цвета фона при загрузке страницы или "живые" меню (он-маус эффекты), каждый пункт которых изменяется при подведении к ним мыши. Пожалуй, именно эти примеры ближе всего к тому, что сейчас называется "динамическим HTML". Microsoft же, противопоставив языку Java свою технологию ActiveX, не оставила без ответа и JavaScript; браузер Internet Explorer на данный момент поддерживает целых два языка сценариев - JScript (аналог JavaScript) и VBScript (родственный языку Visual Basic).
С противоположного фланга на HTML наступал, принимая на себя часть его функций и снимая тем самым часть его ограничений, язык иерархических стилевых спецификаций (Cascading Style Sheets, CSS), главная цель которого - отделить структуру документа от его оформления и позволить web-мастеру самостоятельно решать, как должен выглядеть тот или иной элемент содержания.
Именно на стыке этих двух расширений HTML - языка стилей и языка сценариев - и возник тот набор технологий, который ныне в "высших слоях Internet-общества" принято называть "Dynamic HTML".
В чем суть DHTML?
Основную идею динамического HTML можно сформулировать довольно просто: полный контроль языка сценариев над всеми без исключения элементами документа, параметрами их оформления и размещения (как подразумеваемыми в HTML, так и задаваемыми с помощью CSS) и даже над самим текстом страницы. Благодаря этому любой элемент HTML-документа сможет двигаться в произвольном направлении, как угодно изменять свое форматирование и буквально переписываться - как в ответ на действия пользователя, так и по собственной инициативе.
Основная особенность "динамического HTML" заключается в том, что его составляют подсистема абсолютного позиционирования элементов. Это расширение языка CSS позволяет располагать любой объект в произвольной точке плоскости страницы, в том числе с наложением объектов друг на друга. Само позиционирование не содержит в себе ничего особенно динамического, но без него было бы невозможно реализовать многие из самых впечатляющих визуальных эффектов динамического HTML.
Эта составляющая новой технологии - единственная, реализованная более или менее совместимым образом в обоих браузерах. И хотя качество и полнота реализации этого стандарта оставляют желать лучшего (особенно у браузера Netscape, который в версии 3.0 вообще не имел поддержки CSS), эту технологию уже можно применять, не боясь ограничить свою аудиторию пользователями лишь одного из браузеров-конкурентов.
Другая группа нововведений, составляющая ядро DHTML, расширяет язык сценариев, открывая ему доступ ко всем элементам документа и наделяя способностью отслеживать любые действия пользователя (перемещение мыши, нажатие клавиш и т.п.). Здесь, к сожалению, совместимостью между конкурирующими реализациями уже и не пахнет.
Разница в подходах двух гигантов Internet-рынка, как всегда, отражается в терминологии. Netscape расширила JavaScript новыми объектами и сравнительно развитыми средствами работы с событиями, а средства доступа из JavaScript к стилевым спецификациям вынесла в отдельный модуль, называемый "JavaScript Accessible Style Sheets" (JASS). Microsoft же, не замыкаясь ни на каком-то конкретном языке сценариев, ни на стилевых спецификациях (без которых динамический HTML, строго говоря, может и обойтись), называет ядро своей технологии "объектной моделью документа".
Пожалуй, впервые за всю историю конкурентной борьбы двух фирм объективный наблюдатель может без натяжек и оговорок признать, что одна из них далеко превзошла другую в полноте, элегантности и даже законности реализации одной и той же идеи. Объектная модель Microsoft обеспечивает значительно более богатые и гибкие средства контроля над элементами документа и их атрибутами.
Наконец, еще одна группа объединяет несколько разнородных нововведений, имеющих лишь косвенное отношение к собственно динамическому HTML. Netscape к этой группе относит поддержку "динамических шрифтов". Это новшество позволяет ссылаться из HTML-документа на файл шрифта в формате TrueDoc (с расширением.prf). Указав URL-адрес файла шрифта, автор может пользоваться этим шрифтом для оформления текста на странице; браузер же, встретив ссылку на шрифт, поступит с ним так же, как и с любой графической информацией, просто загрузив ее из Сети и положив в свой кэш для использования на этой и последующих страницах.
Со стороны Microsoft основным дополнением к динамическому HTML служит система "связи с данными". Встроив в свой документ особый управляющий элемент ActiveX, называемый "источником данных", вы сможете генерировать и изменять текст HTML-таблиц на вашей странице на основе информации из какой-либо базы данных, доступной через Сеть. Взаимодействие с базой данных берет на себя компонент ActiveX, а HTML-код вашей страницы (в сотрудничестве с языком сценариев) позволяет реализовать, к примеру, сортировку и фильтрацию таблиц без обращения к базе данных, их динамическое обновление, а также перенос информации из таблицы в текст или поля бланков.
А что делать простому обывателю?
Появление двух столь резко различающихся реализаций DHTML ставит web-дизайнеров и программистов перед нелегким выбором. Преимущества технологии Microsoft вряд ли окажут заметное влияние на предпочтения пользователей, так что "битва титанов" пока лишь начинается и двоевластие браузеров еще долго будет оставаться реальностью. В области динамического HTML, как мы видели, это двоевластие оборачивается резким ограничением тех возможностей, которыми можно пользоваться без серьезного уклона в сторону одного из конкурентов.
В то же время многие различия между этими версиями не поддаются никакому рациональному объяснению - дело в том, что попросту "по-другому оно не работает", хотя по всем правилам и должно бы. Как уже не раз случалось, желание быть первым с новой технологией заставляет конкурентов выдавать как можно скорее удивительно сырые, практически не тестировавшиеся программные продукты.
Что ж, простому обывателю совсем нелегко сделать свой выбор и перейти на сторону одного из гигантов компьютерной индустрии... Впрочем, как хорошо известно, широкая конкуренция всегда выгодна потребителю, а значит - будем ждать продолжения битвы!
Виталий ФРИДМАН,
Vit_Friedman@softhome.net,
www.kv.minsk.by/belhome
Автор выражает признательность за информационную поддержку Дмитрию Кирсанову.
Горячие темы