Статьи

ECMAScript Harmony: новая жизнь для JavaScript

Один за другим основные стандарты, определяющие сеть, получают новую жизнь. Во-первых, W3C возобновил разработку HTML, отказавшись от целенаправленного внимания к XHTML и восприняв работу проекта WHAT-WG HTML 5 как новое начало. Теперь, на встрече в Осло в конце июля, орган по стандартизации, отвечающий за язык JavaScript, давно разделился, и ему удалось найти новое единство путем компромисса.

Стандарт, описывающий JavaScript, называется ECMAScript (поскольку «JavaScript» является товарным знаком, принадлежащим Sun Microsystems). Последнее полное обновление ECMAScript, ECMA-262 3rd Edition, было опубликовано в 1999 году. За восемь лет, прошедших с момента его публикации, прогресс JavaScript как веб-стандарта практически не изменился.

Отсутствие изменений в ECMAScript в то время не было связано со зрелостью языка. ECMA-262 3-го издания имеет широко признанные проблемы, с которыми браузеры реального времени приходилось обходиться годами, поэтому в 4-м издании было много необходимости. В отсутствие такового производителям браузеров пришлось перепроектировать реализации друг друга, чтобы решить, как бороться с дырами в спецификации — в значительной степени худший сценарий для всех заинтересованных сторон.

Раскол в TC39

Технический комитет ECMA 39 (TC39, комитет, отвечающий за разработку стандартов ECMAScript) определенно не сидел без дела в это время. Обсуждение функций, которые должны войти в 4-е издание ECMA-262, продолжается в основном безостановочно, но консенсус неуловим.

В рамках TC39 представители Mozilla, Adobe, Opera и Google хотели внести существенные улучшения в язык и начали собирать список новых функций вскоре после выпуска 3-го издания. Многие из этих функций (например, пространства имен, генераторы, необязательная статическая типизация и методы получения / установки) были добавлены в реальные реализации ECMAScript на протяжении многих лет (например, ActionScript 3 во Flash / Flex, JavaScript 1.7 и 1.8 в Firefox).

Но не все в TC39 одобрили подобные изменения. Более года назад представители Microsoft и Yahoo! В комитете заявили, что они почувствовали относительно незначительное обновление языка, чтобы исправить проблемы, которые стали очевидными в 3-м издании, было бы более уместно. Например, они указали, что такие функции, как пакеты, пространства имен и раннее связывание, которые были реализованы в ActionScript 3, будут представлять проблемы с производительностью, если кто-либо попытается реализовать их в браузерах.

Это разделение внутри комитета привело к формированию двух групп, каждая из которых имела свой собственный проект: те, кто стремился добавить основные функции, назвали свой проект «ECMAScript 4.0», в то время как более консервативная группа назвала свой проект «ECMAScript 3.1». быть одним изданием ECMA-262 4-го издания, поэтому, пока две группы работают параллельно, будущее ECMAScript останется неизвестным.

Все это изменилось в прошлом месяце в Осло. Читайте ниже, чтобы узнать, что случилось.

Гармония на встрече в Осло

То, что было запланировано на регулярную встречу разделенного TC39 в Осло в конце июля, оказалось огромным поворотным моментом для комитета, и — у нас есть все основания надеяться — на сам язык JavaScript.

Члены ТК39 согласились с тем, что разделенный комитет никому не подходит, и заключили соглашение, которое позволит продолжить работу над единым унифицированным проектом для 4-го издания ECMA-262 под названием «ECMAScript 3.1». историческое урегулирование разногласий, которое это представляло, усилие было названо ECMAScript Harmony .

Под Гармонией каждая сторона дебатов сделала ключевую уступку:

  • Группа «ECMAScript 4.0» признала, что пакеты, пространства имен и раннее связывание — это все функции, которые не подходят для Интернета. Они были навсегда исключены из включения в любую будущую версию стандарта ECMA-262.
  • Группа «ECMAScript 3.1» признала, что некоторые функции, которые были предложены для ECMAScript 4.0, имеют свои достоинства , и они будут переработаны для включения в выпуск, следующий за ECMAScript 3.1. Этот последующий релиз называется «ES-гармония».

В будущем комитет ожидает выпустить 4-е издание ECMA-262 в первой половине 2009 года , по крайней мере, с двумя реальными реализациями (то есть двумя из четырех основных браузеров). К этому выпуску не будут добавлены новые функции, которых еще нет по крайней мере в трех из четырех основных браузеров (например, получатели и установщики сделают это).

Официальное объявление Брендана Эйха из Mozilla можно прочитать на Ajaxian , а реакции других знаменитых JavaScript, таких как Джон Резиг , Дуглас Крокфорд , Майк Чемберс и Алекс Рассел, заслуживают прочтения (с различными уровнями технической детализации). Кроме того, Эпизод 2 недавно запущенного подкаста Open Web объединяет многих из этих людей, чтобы обсудить изменение направления.

Что все это значит?

Не обращая внимания на упущенные функции, фундаментальный момент здесь заключается в том, что TC39 осознал то же самое, что W3C был вынужден осознать в HTML в прошлом году: написание стандартов и надежда на то, что браузеры будут следовать, не работает. Независимо от того, насколько хорошо рекомендация W3C для XHTML2 выглядела на бумаге, она не собиралась заставлять Microsoft поддерживать ее в Internet Explorer. С HTML 5 W3C позволяет браузерам опробовать новые идеи и разрабатывает стандарты из хороших вещей.

Точно так же члены TC39 могут добавить все функции в мире к ECMAScript 4.0, но единственный способ выяснить, работает ли функция в Интернете, — это сначала встроить ее в реальный браузер. Затем вы можете решить, следует ли сделать это в стандарте.

А теперь очевидный вопрос: следующий CSS? Я, например, буду внимательно следить за рабочей группой W3C по CSS в предстоящие недели.