Monkey, Squirrel Fish и прочие диковинки

Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
 

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

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

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

События начали стремительно развиваться с того момента, как Adobe передала свой движок оперативной (Just-in-time, JIT) компиляции и виртуальную машину JavaScript (кодовое название Tamarin) проекту Mozilla в 2006 году. Хотя в самых последних версиях Mozilla сохранились лишь отдельные составляющие технологии Tamarin, передача этой технологии способствовала тому, что браузеры всех моделей теперь могут похвастаться новыми сценарными движками, имена которых интригуют не меньше, чем заявляемая производительность.

Таблица 1.5. Движки JavaScript различных браузеров

Браузер Имя движка Примечание
Apple Safari 5 Nitro (также известен как SquirrelFish Extreme) Впервые появившийся в Safari 4 и доработанный в версии 5, вводит оптимизацию байт-кода и контекстно-потоковую компиляцию в собственный код
Google Chrome 5 V8 Начиная с Chrome 2, сбор мусора осуществляется с учетом предыстории (generational garbage collection), что обеспечивает высокую масштабируемость памяти без образования пауз в работе системы
Microsoft Internet Explorer 9 Chakra Основное внимание уделено эффективной системе типов; демонстрирует десятикратное превосходство над IE8
Mozilla Firefox 4 JagerMonkey Улучшенный по сравнению с версией 3.5 движок сочетает в себе высокую скорость интерпретации с компиляцией в собственный код в "горячих точках" деревьев трассировки (trace trees)
Opera 10.60 Carakan Используется регистровый байт-код и выборочная компиляция в собственный код; заявленные характеристики браузера улучшены по сравнению с версией 10.50 на 75%

В целом, благодаря этой здоровой конкуренции между производителями браузеров, производительность JavaScript-еценариев как никогда ранее приблизилась к производительности собственного кода настольных приложений.

И снова об HTML:

Говорит Питер: "Коль скоро речь зашла о конкуренции и скорости, хочу подключиться и я к этому разговору. Представлюсь — меня зовут Питер, и бег (особенно супермарафон) — мое страстное увлечение.

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

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

Несколько лет назад я случайно забрел на сайт одного европейского забега, в котором все было сделано так, как надо. Организаторы снабжали лидеров забега GPS-передатчиками и отображали их местоположение на карте (аналогичные примеры будут построены в этой книге с помощью программных интерфейсов Geolocation и WebSocket). И хотя сама реализация идеи была довольно примитивной, я почувствовал, что за всем этим скрывается огромный потенциал.

Сегодня, спустя всего лишь несколько лет, HTML5 предоставляет возможность создания подобных веб-сайтов с использованием таких программных интерфейсов, как Geolocation, с помощью которого приложение может получать информацию о текущем местонахождении объекта, или WebSocket, который обеспечивает обновление геолокационной информации в режиме реального времени. Лично я не сомневаюсь - HTML5 первым пересек финишную черту и выиграл забег!"