Введение

Сегодня Всемирная сеть - это среда информационного обмена для миллионов людей. Они размещают текст, видео, звук, и информацию, и все более и более, они усложняют свои страницы, делая их интерактивными в сети. JavaScript - это новый язык программирования, используемый в составе страниц HTML для увеличения функциональности и возможностей взаимодействия с пользователями. Он был разработан фирмой Netscape в сотруднечестве с Sun Microsystems на базе языка Sun's Java .С помощью JavaScript на Web-странице можно сделать то, что невозможно сделать стандартными тегами HTML. Скрипты выполняются в результате наступления каких-либо событий, инициированных действиями пользователя. Создание Web- документов, вклучающих программы на JavaScript, требует наличее текстового редактора и подходящего браузера. Некоторые просмоторщики включают в себе встроенные редакторы, поэтому необходимость во внешнем редакторе отпадает.

Несмотря на отсутствие прямой связи с языком Java, JavaScript может обращаться к внешним свойствам и методам Java- апплетов, встроенных в страницу HTML. Разница сводится к тому, что апплеты существуют вне браузера, в то время как программы JavaScript могут работать только внутри браузера. На первой взгляд кажется, что найти информацию по JavaScript несложно. Сначала создается впечатление, что ее можно увидеть везде: на сервере Natscape, в виде электронных руководств и примеров, во многих других местах. Тем не менее разыскать информацию об объектах, операторах, цветах и всем прочем в одном источнике, чтобы она была всегда под рукой, трудно.

Язык гипертекстовой разметки HTML (HyperText Markup Language) был предложен Тимом Бернерсом-Ли в 1989 году в качестве одного из компонентов технологии разработки распределенной гипертекстовой системы World Wide Web.

Когда Т. Бернерс-Ли предложил свою систему, в мире информационных технологий наблюдался повышенный интерес к новому и модному в то время направлению-гипертекстовым системам. Сама идея, но не термин, была введена В. Бушем в 1945 году в предложениях по созданию электромеханической информационной системы Меmех. Несмотря на то, что Буш был советником по науке президента Рузвельта, идея не была реализована. В 1965 году Т. Нельсон ввел в обращение сам термин "гипертекст", развил и даже реализовал некоторые идеи, связанные с работой с "нелинейными" текстами. В 1968 году изобретатель манипулятора "мышь" Д.Енжильбард продемонстрировал работу с системой, имеющей типичный гипертекстовый интерфейс, и, что интересно, проведена эта демонстрация была с использованием системы телекоммуникаций. Однако внятно описать свою систему он не смог. В 1975 году идея гипертекста нашла воплощение в информационной системе внутреннего распорядка атомного авианосца "Карл Винстон". Работы в этом направлении продолжались, и время от времени появлялись реализации типа НуреrСаrd фирмы Аррlе или НуреrNоdе фирмы Хеrох. В 1987 была проведена первая специализированная конференция Нуреrtехt'87, материалам которой был посвящен специальный выпуск журнала "Соmmunication АСМ".

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

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

Разработчики HTML должны были решить две задачи:

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

Первая задача была решена за счет выбора таговой модели описания документа. Такая модель широко применяется в системах подготовки документов для печати. Примером такой системы является хорошо известный язык разметки научных документов TeX, предложенный Американским Математическим Обществом, и программы его интерпретации.

К моменту создания HTML существовал стандарт языка разметки печатных документов - Standard Generalised Markup Language, который и был взят в качестве основы HTML. Предполагалось, что такое решение поможет использовать существующее программное обеспечение для интерпретации нового языка. Однако, будучи доступным широкому кругу пользователей Internet, HTML зажил своей собственной жизнью. Вероятно, многие администраторы баз данных WWW и разработчики программного обеспечения для этой системы имеют довольно смутное представление о стандартном языке разметки SGML.

Язык НТМL позволяет определять структуру электронного документа с полиграфическим уровнем оформления; результирующий документ может содержать самые разнообразные таги: иллюстрации, аудио- и видео- фрагменты и так далее. Язык включает в свой состав развитые средства для специфицирования нескольких уровней заголовков, шрифтовых выделений, различных групп объектов, например, словари, каталоги или меню для размещения иллюстраций и других фрагментов, а также множество других возможностей.

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

 - такой файл можно создать в любом текстовом редакторе на любой аппаратной платформе в среде любой операционной системы. 
 - к моменту разработки HTML существовал американский стандарт для разработки сетевых информационных систем - Z39.50, в котором в качестве единицы хранения указывался простой текстовый файл в кодировке LATIN1, что соответствует US ASCII.

Таким образом, гипертекстовая база данных в концепции WWW - это набор текстовых файлов, размеченных на языке HTML, который определяет форму представления информации (разметка) и структуру связей этих файлов (гипертекстовые ссылки).

Такой подход предполагает наличие еще одной компоненты технологии - интерпретатора языка. В World Wide Web функции интерпретатора разделены между сервером гипертекстовой базы данных и интерфейсом пользователя.

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

Если первая версия языка (HTML 1.0) была направлена на представление языка как такового, где описание его возможностей носило скорее рекомендательный характер, вторая версия языка (HTML 2.0) фиксировала практику использования конструкций языка, версия ++ (HTML++) представляла новые возможности, расширяя набор тагов HTML в сторону отображения научной информации и таблиц, а также улучшения стиля компоновки изображений и текста, то версия 3.2 призвана упорядочить все нововведения и согласовать их с существующей практикой. Кроме этого, в версии 3.2 снова делается попытка формализации интерфейса пользователя гипертекстовой распределенной системы.

По сравнению с версией 2.0, HTML 3.2 позволяет реализовать отображение таблиц (контейнер <TABLE>...</TABLE>), выполнение мобильных кодов (<APPLET...>...</APPLET>), обтекание графики текстом, а также отображение верхних и нижних индексов (<SUP>...</SUP>; <SUB>...</SUB>).

Кроме этих возможностей, которые фиксируют текущую практику использования HTML, современные программы просмотра HTML - документов позволяют реализовать и ряд других возможностей разметки текста, которые описаны в стандарте HTML 3.0 и расширениях HTML фирм-разработчиков программного обеспечения:

  1. разметка математических формул (HTML 3.0);дополнительные контейнеры заголовка (HTML 3.0; Netscape Extensions; Microsoft Extensions);
  2. дополнительные атрибуты стандартных контейнеров тела документа (ALIGN; BGCOLOR; TARGET и т.п.);
  3. разбиение страницы на фреймы;
  4. открытие дополнительных окон и др.

Сейчас World Wide Web Consortium (W3C) уже опубликовал рабочие материалы спецификации HTML 4.0.. Кроме возможностей разметки текста, включения мультимедиа и формирования гипертекстовых связей уже существовавших в предыдущих версиях HTML, в версию 4.0 включены дополнительные средства работы с мультимедиа, языки программирования, таблицы стилей, упрощенные средства печати изображений и документов, которые становятся более доступными для всех пользователей HTML 4.0. Эти дополнения служат интернационализации WWW и распространению ее по всему миру. Кроме этого, для управления сценариями просмотра страниц Website (гипертекстовой базы данных, выполненной в технологии World Wide Web) можно использовать языки программирования этих сценариев типа JavaScript, Java и VBScript.

В заключении следует отметить, что JavaScript - это не единственный язык управления сценариями просмотра документов. Microsoft подготовила свою версию аналогичного языка - VBScript на основе Visual Basic. Кроме того, управлять сценарием просмотра можно и из Java-applet'ов, что конечно сложнее, но зато более надежно и безопасно. При этом программист получает все преимущества наследования и прочие атрибуты объектно-ориентированного программирования. В конце концов для создания фреймов и окон можно использовать атрибуты соответствующих контейнеров HTML, которые позволяют делить рабочую область экрана на фрагменты, перекрывать объекты и восстанавливать первоначальный вид страницы. Таким образом, к настоящему времени существует по меньшей мере три способа управления сценариями просмотра гипертекстовых баз данных Web, каждый из которых по своему хорош. Какой из них выбрать - это дело автора Website.

Следуя логике авторов JavaScript и направлениям развития World Wide Web следует ожидать появления новых типов объектов и изменения свойств существующих. Кроме этого, видимо, появятся глобальные переменные и функции. Порождение абстрактных типов тоже не за горами, хотя от такой новации не очень понятно, кто выиграет. Постепенно совершенствуется и поддержка встроенных функций на разных платформах, так, например, функция random() реализована в настоящее время везде, что не исключает использование и своих собственных датчиков случайных чисел. И еще, скорее всего, следует ожидать компилятора JavaScript для клиента. Будет ли эта возможность встроена в Navigator или это будет отдельный модуль - пока не ясно, но появление библиотек функций - движение в этом направлении, хорошо согласующееся с принципами кэширования гипертекстовых страниц.

JavaScript и Java


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

Напротив, JavaScript, размещаются внутри HTML страницы и не могут существовать, как отдельные программы и функционируют, будучи запущенными в браузерах типа Netscape Navigator или Internet Explorer.

Следующая таблица сравнивает JavaScript и Java

.
JavaScript Java
Не компилируемый клиентом. Компилируемая клиентом перед запуском программы.
Объектный язык. Объектно-ориентированный.
Внедренный в HTML - страницу. Небольшие приложения, отделенные от HTML - страниц.
Переменные типы данных, не объявляются. Переменные типы данных должны быть объявленны (строгий контроль типов).
Динамическое закрепление. Ссылки объекта, поверяются во время выполнения. Статическое закрепление. Ссылки объекта, проверяются во время компиляции.

JavaScript и JScript

Спецификация языка JavaScript

В первоначальном варианте JavaScript назывался LiveScript. Однако не успело это название сделаться привычным, как Netscape поменяла его, а заодно и основные концепции языка. Сейчас выпущена уже третья версия, и с выходом каждой из них в JavaScript появлялись новые функции.

Но подобные непрерывные совершенствования могли сильно мешать разработчикам, которым бы хотелось, чтобы создаваемые Web-страницы воспринимались максимальным числом браузеров. Действительно, какая польза от "напичканной" JavaScript-сценариями страницы, если миллионы клиентов не смогут ее прочитать. Как будто специально чтобы еще осложнить жизнь программистов, Microsoft предложила собственную версию JavaScript>, назвав ее JScript; сейчас выпущена уже вторая основная редакция. По аналогии с языком JavaScript фирмы Netscape, который ориентирован на браузер Netscape Navigator, JScript создавался для работы с Internet Explorer. И хотя обе эти реализации похожи друг на друга, в каждой из них имеются свои уникальные функциональные возможности. Такой разнобой приводит к тому, что ваша прекрасно оформленная Web-страница, содержащая обращения к сценариям на JavaScript, может не воспроизводиться на "другом" браузере, что, возможно, лишит вас миллионов потенциальных клиентов. Как в таком случае быть? Следует ли придерживаться только одной спецификации? Или можно попытаться создавать сценарии, совместимые как с JavaScript, так и с JScript?

Для того чтобы ответить на эти вопросы, давайте внимательно рассмотрим оба языка, проведем их детальное сравнение и дадим рекомендации по подготовке сценариев, совместимых как с пакетом Netscape Navigator, так и Internet Explorer.

JavaScript компании Netscape

JavaScript - это несомненно превосходный инструмент для преобразования Web-страниц из безжизненных картинок в динамичные, полностью интерактивные страницы с незамедлительной реакцией на действия пользователя. Но что делать, если хочется большего, если тянет вырваться за традиционные рамки задач, возлагаемых на сценарии? Например, что, если организовать с помощью JavaScript одновременное решение задачи средствами сервера и клиента? Сможет ли удовлетворить JavaScript этим пожеланиям?

Без всякого сомнения - да. Созданный как несложный набор команд для подго-товки сценариев работы клиента, JavaScript превратился в развитую инфраструктуру для решения задач, связанных с деятельностью как клиента, так и сервера. Средства для обслуживания клиентской части вычислений, к которым вы обращаетесь из Web-страниц, предоставляются браузером Netscape Navigator. Когда же речь идет о фоновой обработке, в ход идут средства JavaScript, реализованные на сервере. Они выполнены как надстройка к серверам Netscape и объединены в продукте, называемом LiveWire. На серверах FastTrack или Enterprise фирмы Netscape средства LiveWire и JavaScript обеспечивают обработку сценариев работы шлюза и полное обслуживание серверных задач по операциям под файлами, управлению базами данных и т. д.

По первоначальному замыслу считалось, что JavaScript - это открытый стандарт, не требующий ориентации на разработки отдельной компании или на конкретный про-дукт, но жизнь внесла свои коррективы. В конечном счете оказывается, что при исполь-зовании JavaScript приходится ориентироваться на продукты и технологии, разработан-ные фирмой Netscape. Более того, наблюдается тесная интеграция JavaScript в общую технологическую модель, разрабатываемую Netscape, особенно когда речь заходит о среде Netscape ONE (Open Networked Environment - открытая среда для сетевых взаимодей-ствий).

Netscape ONE служит межплатформенной средой разработки, объединяющей множество различных технологий создания программных продуктов для Web. В ее основу положена инфраструктура LiveConnect, обеспечивающая взаимодействие между средствами Java, JavaScript и внешними модулями Netscape. Благодаря ей можно составлять сценарии для обновления Java-апплет, создавать внешние модули Netscape, взаимодействующие с Java-апплетами, и составлять Java-апплеты, которые вызывают функции, хранящиеся в сценариях. LiveConnect представляет собой мощное, новаторское решение. Но, фактически, это не какая-то отдельная технология, а скорее некоторая надстройка для уже существующих инструментов, таких, как JavaScript. Таким образом, при создании сценариев, предусматривающих взаимодействие с Java-апплетами и внешними модулями Netscape, вы используете LiveConnect-надстройку к JavaScript.

Jscript корпорации Microsoft

В Microsoft практически сразу осознали потенциал JavaScript и создали собственную версию этого языка сценариев - JScript, - изменив при этом отдельные его фундаментальные положения. Но JScript также и полномасштабная система для разработок в Web. Подобно тому как JavaScript тесно взаимосвязан с технологической моделью Netscape, язык JScript тесно интегрирован в модель Microsoft. В результате была достигнута всесторонняя реализация JavaScript с рядом специфических дополнений, ориентированных на браузер Internet Explorer. Инфраструктуры объектов в JScript и JavaScript аналогичны, а способ применения JScript для Web-страниц такой же, как у JavaScript.

Однако за внешним сходством этих объектных инфраструктур скрываются существенные различия в том, как создаются и работают объектные модели JScript и JavaScript. В спецификации JScript задаются базовые функциональные свойства языка и основная инфраструктура его объектов; спецификация дополняется средствами объектной модели Internet Explorer для обслуживания сценариев. Именно за cчет этой надстройки предоставляется львинная доля возможностей JScript. Видите разницу: раздельная схема из базовых функций и средств объектной модели браузера, с одной стороны, и интегрированная модель Netscape, где базовые функции тесно переплетены с предлагаемой инфраструктурой объектов, с другой. Ясно, что в Microsoft выбрали не просто иной путь для реализации JScript, а более прогрессивное направление.

Раздельное существование объектных моделей Internet Explorer и JScript позволяет корпорации Microsoft сделать ряд потрясающих вещей, одна из которых - открыть доступ к объектной модели Internet Explorer из предусмотренных в браузере языков сценариев других разновидностей (например, VBScript). Обновляя объектную модель Internet Explorer, Microsoft сразу же наращивает функциональные возможности как JScript, так и VBScript. Эта же объектная модель служит составной частью архитектуры ActiveX корпорации Microsoft.

ActiveX, как и LiveConnect, является инфраструктурой, обеспечивающей взаимодействие различных технологий. Но в отличие от LiveConnect в ней используется расширенный интерфейс OLE, позволяющий связывать элементы управления ActiveX, сценарии и Java-апплеты. Хотя технология OLE - вещь уже давно известная, ее внедрение в инструментарий для Internet стало знаменательным новаторским решением, которое в сочетании с JScript открывает перспективу создания Web-страниц, обладающих самыми широкими возможностями: средствами виртуальной реальности, исчерпывающим управлением видеоданными, синхронным звуковым сопровождением и даже реализацией видеоигр.

Если посмотреть глубже, то в JScript имеются интерфейсы и ссылки, позволяющие связать воедино все необходимые элементы. Широчайшая популярность ActiveX приносит дополнительные очки языку JScript в его конкурентной борьбе с JavaScript.Таким образом, если в своих сценариях вы собираетесь использовать в полном объеме возможности ActiveX, то необходим именно JScript. Это справедливо даже с учетом того, что в версии Navigator 4.0 предусмотрены средства, хотя и ограниченные, для работы с ActiveX.

Что касается серверов, объектная модель JScript присутствует в архитектуре платформы Active, реализуемой на любом соответствующем сервере корпорации Microsoft, в том числе Internet Information Server 3.0 и следующих версий.

JavaScript или Jscript

Многогранность и динамичность JavaScript и JScript объясняются их тесной взаимосвязью с соответствующими инфраструктурами. Так, выбор JavaScript идеален при работе с клиен-тами и серверами Netscape, а при использовании соответствующих систем корпорации Microsoft очевиден выбор языка JScript.

В условиях корпоративной интрасети можно заранее предусмотреть, с какими клиентами и серверами придется иметь дело. Однако при работе в Web вы не можете знать, кто обратится к вашему узлу. Поэтому стоит разобраться в достоинствах и недостатках обоих языков, что позволит сделать обоснованный выбор между ними.

При сравнении базовых функциональных средств JavaScript и JScript оказывается, что они почти идентичны, особенно с точки зрения синтаксиса и набора операторов. В таблице 1 приведен список операторов, предусмотренных в обоих языках. Если вы хоть немного работали с Java или Си/Си++, то большинство операторов в таблице будут вам хорошо знакомы.

Таблица 1

Арифметические операторы

+ Сложение
- Вычитание
* Умножение
/ Деление
++ Приращение на единицу
- Уменьшение на единицу
- Унарный минус
% Взятие модуля

Операторы присваивания

= Присваивание значения
+= Увеличение на заданную величину
-= Уменьшение на заданную величину
*= Умножение на заданную величину
/= Деление на заданную величину
%= Взятие модуля заданной величины
&= Поразрядное логическое И с заданной величиной
|= Поразрядное логическое ИЛИ с заданной величиной
Поразрядные логические операторы
& Поразрядное логическое И
| Поразрядное логическое ИЛИ
^ Поразрядное логическое сложение по модулю 2 (XOR)
~ Поразрядное отрицание (инверсия)
<< Поразрядный сдвиг влево
>> Поразрядный сдвиг вправо
>>> Поразрядный сдвиг вправо с заполнением нулями
Операторы сравнения
== Эквивалентность сравниваемых объектов
!= Не равно
> Больше
>= Больше или равно
< Меньше
<= Меньше или равно

Логические операторы

&& логическое И
|| логическое ИЛИ
! логическое отрицание
В таблице 2 перечислены встроенные функции и средства управления ходом выполнения, имеющиеся в JavaScript и JScript. Здесь JavaScript выглядит лучше - благодаря появлению в его новой версии для Navigator 4.0 таких конструкций и элементов, как select/switch case, циклы do-while и метки.

Таблица 2

+ ДА - НЕТ JSCRIPT JAVASCRIPT
ВСТРОЕННЫЕ ФУНКЦИИ
EVAL() + +
ESCAPE() / UNESCAPE() + +
ISNAN() + -
PARSEINT() / PARSEFLOAT() + +
TAINT() / UNTAINT() - +
УПРАВЛЕНИЕ ХОДОМ
ВЫПОЛНЕНИЯ ЦИКЛ FOR + +
ЦИКЛ FOR EACH / IN + +
IF ... THEN ... ELSE + +
SELECT / SWITCH CASE - +
ЦИКЛ WHILE + +
ЦИКЛ DO WHILE - +
ФУНКЦИЯ BREAK / EXIT + +
GOTO (МЕТКИ) - +
Hosted by uCoz