1. Что такое JavaScript?
JavaScript это созданный фирмой Netscape межплатформенный объектно-ориентированный язык скриптинга (сценариев). JavaScript это небольшой компактный язык; он не используется для создания самостоятельных приложений, а разработан специально для упрощенного внедрения в другие приложения и продукты, такие как web-браузеры. Находясь внутри рабочей среды-хозяина, JavaScript может подключаться к объектам этой среды для предоставления программного управления ими.
Ядро JavaScript содержит набор основных объектов, таких как Array, Date и Math, и основной набор элементов языка, таких как операции, управляющие структуры и операторы. JavaScript может быть расширено для различных целей путём дополнения его новыми объектами; например:
- Клиентский J JavaScript расширяет ядро языка, добавляя объекты управления браузером (Navigator или другой аналогичный web-браузер) и Document Object Model/Объектную Модель Документа (DOM). Например, клиентские расширения позволяют приложению размещать элементы на HTML-форме и реагировать на пользовательские события, такие как щелчок мышью, ввод данных в форму или навигация по страницам.
- Серверный JavaScript расширяет ядро языка, добавляя объекты, относящиеся к запуску JavaScript на сервере. Например, серверные расширения позволяют приложению взаимодействовать с реляционной базой данных, сохраняя информацию между вызовами приложения, или выполнять манипуляции с файлами на сервере.
Посредством функциональности LiveConnect, Вы можете осуществлять взаимодействие кодов Java и JavaScript Из JavaScript Вы можете инстанциировать Java-объекты и получать доступ к их public-методам и полям. Из Java Вы можете иметь доступ к объектам, свойствам и методам JavaScript
Netscape изобрела JavaScript и JavaScript был впервые использован в браузерах Netscape.
2. JavaScript и Java
JavaScript и Java похожи друг на друга, но имеют и фундаментальные отличия. Язык JavaScript похож на Java, не не имеет статической типизации Java и строгой проверки типов. JavaScript поддерживает большую часть расширений синтаксиса Java и базовых конструкций управления потоком.
В отличие от системы времени компиляции классов Java, построенной на объявлениях, JavaScript поддерживает систему времени выполнения на базе небольшого количества типов данных: числовых, Булевых и строковых значений. JavaScript имеет объектную модель на базе прототипов, а не на более привычной базе классов. Модель на базе прототипов предоставляет динамическое наследование; то есть то, что наследуется, может отличаться для каждого конкретного объекта. JavaScript также поддерживает функции без каких-либо требований к их объявлению. Функции могут быть свойствами объекта, выполняя свободно типизированные методы.
JavaScript является очень свободным языком по сравнению с Java. Вы не должны объявлять все переменные, классы и методы. Вы не должны заботиться о том, какие методы являются public, privateили protected, и не должны реализовывать интерфейсы. Значения, возвращаемые переменными, параметрами и функциями, не типизированные явно.
Java является языком программирования на базе классов, разработанным для быстрого выполнения и безопасности типов. Безопасность типов означает, к примеру, что Вы не можете привести Java integer к ссылке на объект или получить доступ к private-памяти, нарушив байтовый код Java. Модель Java на базе классов означает, что программы состоят исключительно из классов и их методов. Наследование классов Java и строгая типизация в целом требуют тесно связанной иерархии объектов. Эти требования делают язык Java более сложным, чем JavaScript
В противоположность этому, JavaScript по духу и сути ведёт своё происхождение от линии компактных, динамически типизируемых языков, таких как HyperTalk и dBASE. Эти языки скриптинга предоставляют утилиты программирования для более широкой аудитории, поскольку имеют упрощённый синтаксис, специализированную встроенную функциональность и минимальные требования при создании объектов.
Таблица 1.1 JavaScript в сравнении с Java
JavaScript | Java |
Объектно-ориентированный. Нет различий между типами объектов. Наследование осуществляется через механизм прототипов, и свойства и методы могут добавляться к объекту динамически | На базе классов. Объекты поделены на классы и экземпляры с наследованием по всей иерархии классов. Классы и экземпляры не могут иметь динамически добавляемые свойства и методы |
Типы данных переменных не объявляются (динамическая типизация) | Типы данных переменных обязаны быть объявлены (статическая типизация) |
Не может автоматически записывать на жёсткий диск | Не может автоматически записывать на жёсткий диск |
Дополнительную информацию об различиях между JavaScript и Java см. в Главе 8, Объектная Модель. Детали.
3. JavaScript и спецификация ECMA
Netscape изобрела JavaScript , и JavaScript был впервые использован в браузерах фирмы Netscape. Но Netscape работает совместно с ECMA (European Computer Manufacturers Association/Европейская Ассоциация Производителей Компьютеров) для создания стандартизованного международного языка программирования на базе ядра JavaScript . ECMA является ассоциацией международных стандартов в области информации и систем коммуникации. Стандартизованная версия JavaScript , называемая **ECMAScript**, ведёт себя совершенно одинаково во всех приложениях, поддерживающих этот стандарт. Компании могут использовать этот открытый стандартный язык для разработки своих реализаций JavaScript . Первая версия стандарта ECMA задокументирована в спецификации ECMA-262.
Стандарт ECMA-262 также одобрен ISO (International Organization for Standards) как ISO-16262. Вы можете найти PDF-версию ECMA-262 на web-сайте Mozilla. Вы можете также найти эту спецификацию на web-сайте ECMA. Спецификация ECMA не описывает Document Object Model (DOM), которая стандартизована консорциумом World Wide Web Consortium (W3C). DOM определяет способ, которым объекты HTML-документа экспонируются в Вашем скрипте.
3.1. Соотношение между версиями JavaScript и ECMA
Netscape тесно сотрудничает с ECMA для создания спецификации ECMA. В следующей таблице описаны соотношения между версиями JavaScript и ECMA.
Таблица 1.2 Версии JavaScript и ECMA
Примечание:
ECMA-262, Edition 2 содержал незначительные редакторские поправки и исправления спецификации Edition 1. Рабочая группа TC39 ECMA работает в настоящее время над ECMAScript Edition 4, которая соответствует будущей версии JavaScript – JavaScript 2.0.
Книга Ядро JavaScript. Справочник. указывает, какие возможности языка совместимы с ECMA.
JavaScript всегда будет содержать возможности, не вошедшие в спецификацию ECMA; JavaScript совместим с ECMA, предоставляя, в то же время, дополнительные возможности.
3.2. Документация JavaScript и спецификация ECMA
Спецификация ECMA это набор требований по реализации ECMAScript; она необходима, если Вы хотите убедиться, что данная возможность JavaScript поддерживается ECMA. Если Вы планируете писать код JavaScript, использующий только поддерживаемые ECMA возможности, то Вам, возможно, понадобится просмотреть и спецификацию ECMA.
Документ ECMA не предназначен для помощи программистам – создателям скриптов; для получения информации о написании скриптов используйте документацию JavaScript.
3.3. JavaScript и терминология ECMA
В спецификации ECMA используется терминология и синтаксис, которые могут быть незнакомы JavaScript-программисту. Хотя описание языка в ECMA может отличаться, сам язык остаётся тем же самым. JavaScriptподдерживает всю функциональность спецификации ECMA.
В документации JavaScript описаны аспекты языка, которые нужны программисту на JavaScript. Например:
- Объект global не обсуждается в документации по JavaScript, поскольку Вы не используете его явно. Методы и свойства объекта global обсуждаются в документации по JavaScript, но называются функциями и свойствами верхнего уровня.
- Конструктор без параметров (нулевой аргумент) с объектами Number и String не обсуждается в документации JavaScript, поскольку то, что генерируется, используется мало. Конструктор объекта Number без аргумента возвращает +0, а конструктор объекта String без аргумента возвращает "" (пустую строку).