Хромированный веб - новый браузер от Google: изнутри и снаружиАлександр Лозовюк (aleks.raiden@gmail.com) Слухи о разработке Google’ом собственного браузера ходят давно. Первого сентября на официальном блоге появилось сообщение: да, разрабатывают. А уже на следующий день вышла бета-версия. И это, мы тебе скажем, вещь! Браузер – это обычно всерьез и надолго. Выбрав один, нескоро соберешься что-либо менять. Но только не в случае с Google Chrome. Анонса такого браузера ожидали миллионы людей. При всей своей простоте и в чем-то даже убогости, в первые дни после выхода он сумел занять достаточно существенную долю рынка (около 1 % глобального рынка, а на некоторых ресурсах – и до 20%). Предлагаю изучить новинку с трех точек зрения – пользователя, веб-разработчика и хакера. Технические детали
Впечатления пользователяПроцедура инсталляции довольно нетипична. Для загрузки с офсайта предлагается небольшой установщик, который скачивает из интернета основной дистрибутив (размер пакета – около 25 Мб). Забавно, что установщик не предлагает выбрать директорию для установки и размещает файлы строго в C:\Users\\AppData\Local\Google\Chrome\Application. Окно браузера простое, но приятное. Каждая страница открывается в собственной вкладке табе. В отличие от Firefox и других, адресная строка и элементы управления размещаются внутри каждой вкладки. Это достаточно спорное решение, однако я бы не сказал, что оно неудобно, скорее, непривычно. Учитывай еще одну особенность – закрытие последней вкладки в окне приведет к его полному закрытию. С непривычки это может смутить. Адресной строке уделено особое внимание. Она раскрашивает каждый элемент адреса разными цветами, так что теперь точно видно, по какому адресу переходишь. По аналогии с Firefox, поиск работает прямо из адресной строки: при этом использует и результаты поиска в Гугл, и данные из истории посещений. А если ты введешь адрес одного из сервисов самого Google, то в числе прочих вариантов будет предложение поискать на этом ресурсе. Конечно же, прямо с браузера, без перехода на сайт! Любую страницу сразу можно занести в закладки, однако для них браузеру очень недостает развитых инструментов управления. Максимум, что возможно – импортировать закладки из других установленных браузеров, расположить их на специальной панели или вынести в дополнительные папки. Здесь очень пригодилась бы интеграция с сервисами закладок, тем более, что у Google он есть (Bookmarks). Радует, что в браузер изначально встроен предпросмотр часто посещаемых страниц (в виде картинок-превью, отображаемых при открытии новой вкладки). В Opera есть аналогичный функционал, а в Firefox это решается плагином Fast Dial. Интернет немыслим без желания сохранить себе что-нибудь на комп – загрузить новые дистрибутивы ПО, аудио-файлы или хотя бы то же самое порно. В Chrome встроен достаточно простой загрузчик, который может сразу начать загружать данные, без каких-либо окон запроса. Сам процесс загрузки будет отображаться на специальной панели внизу страницы (привязана к той страничке, откуда начата загрузка – переключившись в другую вкладку, ты не увидишь, что что-то загружается, а это неудобно). Здесь еще есть недоработки, например, не всегда срабатывает опция автоматического открытия определенных типов файлов. Так что для тех, кто часто и много загружает, лучшим выбором пока будет именно Firefox + какой-либо плагин для загрузки, например, FlashGot. Зато – очень удобная страница истории загрузок, где выводятся в хронологическом порядке все твои загрузки, и присутствует поиск. Кстати, все служебные функции, вроде истории просмотров, закладки, загрузки оформлены в виде отдельных страниц во вкладках. Честно говоря, сложно понять – это локальная страница программы или же окно очередного веб-сервиса. Вот она, подлинная интеграция с вебом... И, для любителей нового, расскажу еще об одной встроенной функции Chrome, а именно – создание из любой вкладки веб-приложения. Достаточно всего лишь выбрать в меню страницы «Создать ярлыки веб-приложения» и на рабочем столе, в быстром запуске и в меню «Пуск» появятся обычные ярлыки новой программы. Для примера, пусть это будет Gmail. Кликнув по любому из них, ты запустишь новое окно приложения, где будет открыта страница Gmail-а. Ничего не будет выдавать, что это все то же окно браузера – нет ни табов, ни адресной строки, ни других элементов меню. Это очень удобно, но только в тех сервисах, которые изначально проектировались как «одностраничные». Если вся работа с приложением или сайтом может происходить в пределах одного окна, а новая информация загружается в фоновом режиме AJAX-ом, то все отлично. Но внешние ссылки будут открываться в новых окнах браузера, а это разрушает концепцию веб-приложения. GMail и Google Reader превращаются в действительно полноценные приложения, а вот с Google Docs номер не пройдет – ведь там каждый документ открывается в новом окне, что заставляет переходить в привычный нам браузер. Однако тенденция налицо: у всех конкурентов на рынке есть подобные механизмы. Например, у Mozilla есть дочерний проект, Prism, который также может интегрироваться с браузером, а другой игрок, Adobe, так, вообще, подошла основательно, выпустив целую платформу для веб-приложений, Adobe AIR (правда, своего браузера у них еще нет). Обидные недостаткиМинусы есть, несмотря на то, что за браузером стоит могучий и идеальный Google. Первое, с чем может столкнуться активный веб-серфер – иногда бывают сложности с отображением Flash-элементов. От этой беды не спасает даже близость к разработчикам – многие пользователи жаловались на падения браузера при заходе на YouTube, который, как известно, принадлежит Google. Так как для Flash-а используется плагин от Adobe, с которым работают все браузеры, то можно предположить, что проблема именно в части интеграции, а не в самом плеере. Очень обидно, что браузер совершенно не воспринимает формат RSS. Странно – и это на фоне того, что у Google есть очень даже неплохой веб RSS-ридер, который вполне можно было интегрировать в браузер! Точно такие же претензии и к e-mail ссылкам: они, к сожалению, не работают. Существуют проблемы и в работе с SSL – пока браузер не научат работать с клиентскими сертификатами, тебе будет закрыта дорога на ресурсы, требующие для работы такую авторизацию (например, WebMoney Lite). Из других недостатков можно отметить, что, несмотря на всю современность архитектуры браузера и мощь инженерного отдела Google, браузер иногда некорректно отображает страницы, а бывает, вообще зависает – причем, не только текущая вкладка, но весь. Буквально в день написания статьи на соседнем компьютере, с MS Vista SP1, при заходе на один ресурс Chrome вызвал не просто падение, а мгновенную перезагрузку. Но такое случается редко, так что можно сделать скидку на бета-версию. С Flash-контентом сложности возникают намного чаще. Также стоит отметить слабую поддержку проверки орфографии – пусть это новая функциональность, но все уже привыкли к мощи встроенной проверки правописания в Firefox. У Chrome подобного, увы, не наблюдается. Взгляд веб-разработчикаС точки зрения веб-разработчика, новый браузер оставляет двоякие впечатления. Судите сами. Из хорошего – основой проекта является движок WebKit, который используется во многих проектах, в частности, в Adobe AIR и Apple Safari. Если ты оптимизировал свой сайт под эти браузеры, то особых проблем не будет и с новым. Хотя некоторые пользователи отмечают нарушение верстки. Видимо, патчи к движку служат не только для интеграции, но и меняют способ отображения страниц. Радует, что выбран современный и быстрый движок, а значит, большинство современных веб-стандартов поддерживаются в полной мере, например – ACID 2 на 100 баллов, ACID 3 на 76 из 100. Да и по скорости работы WebKit – достаточно быстрый, хотя, ввиду тесной поддержки Mozilla, странно, почему не выбрали их движок (Gecko), который также поддерживает все стандарты. А вот для работы с JavaScript используется совсем другой движок: V8, который, по ряду тестов, обещает прирост производительности в несколько раз (хотя параллельные тесты показывают не столь однозначную картину). Для нас важны те нюансы нового движка, что обещают прирост скорости работы сложных веб-приложений, интенсивно использующих AJAX. Пока не вышел Firefox 3.1 с его движком TraceMonkey, для работы с веб-приложениями Chrome – действительно самый быстрый браузер. Разработчики явно нацелили браузер на продвинутую часть аудитории – ведь наряду с существенными ограничениями для конечного пользователя, описанными выше, в браузере реализованы весьма мощные средства разработки. Первым в глаза бросается редактор для просмотра исходного кода страниц – в нем есть подсветка синтаксиса HTML, что делает код страницы гораздо читабельнее. Однако, этим дело и закончилось, ожидаемой подсветки для JavaScript в редакторе нет. Удивительно, учитывая, что редко какая страница обходится без скриптов. Отладчик JavaScript, вообще, очень специфический. С одной стороны, в нем реализованы все функции дебаггера – работа с точками останова, просмотр кода, трассировка и исполнение кода. С другой, – все это реализовано в виде интерфейса командной строки и будет радовать взгляд разве что любителей работать в консоли. Так что, хоть этот инструмент и носит гордое название отладчика, для полноценной работы с веб-приложениями его рекомендовать сложно. Скорее, перед нами заявка на будущий инструментарий; пока же для серьезной работы более успешно подойдут Firefox + Firebug-плагин, а Chrome придется использовать для серфинга и проверки совместимости верстки. Консоль JavaScript напротив, – гораздо шире своего названия. Она уже намного ближе к функциональности Firebug-а, хотя в реальной работе все равно не то. Консоль разделена на две функциональные части. Elements показывает всю DOM-модель текущей страницы, все стили и позволяет редактировать любой элемент страницы, сразу просматривая результат. Вкладка Resources показывает в графическом виде диаграмму загрузки всех элементов страницы (либо просто список всех составных частей – рисунки, подключаемые стили и скрипты). Это позволит определить, на что тратится больше всего времени при загрузке страницы и что нужно оптимизировать. Если честно, присутствие этих инструментов в браузере на текущий момент совершенно не оправдано, и реальной пользы они не принесут, хотя потенциал в них заложен богатый. Для серьезного применения в веб-разработке следует подождать реализации полноценной поддержки плагинов и переноса в новый браузер уже зарекомендовавших себя инструментов – Firebug, YSlow или Jiffy. Взгляд хакера: внутренняя архитектураБраузер имеет полностью открытый и доступный исходный код, который пригодится тебе для сборки под другие платформы или же для экспериментов. Проект называется Chromium и размещен на отдельном веб-сайте. Он интересен и с точки зрения исследователя – внутренняя архитектура браузера больше похожа на операционную систему, чем на обычную прикладную программу. Инженеры Google признаются, что, постоянно пользуясь браузерами, подметили множество недостатков и подумали, что, если в ОС есть возможность сделать защиту от падения отдельных программ, что мешает сделать то же самое в браузере? Поэтому внутри Chrome все поддерживает многопоточность и многопроцессность. Каждая вкладка – это отдельный процесс, который использует собственные экземпляры всех компонент. Отдельные вкладки никак не зависят друг от друга. То же самое и отдельные окна браузера – они полностью независимы, включая даже движок рендеринга страниц. Правда, есть нюанс. Страницы с одного и того же домена открываются внутри одного процесса, пусть и в разных вкладках, поэтому падение вкладки приведет к закрытию всех открытых страниц с этого сайта. Из чего же состоит браузер Chrome? Рассмотрим в деталях. WebKit – известный движок для рендеринга html-страниц. Он используется, как основа, и дополнен некоторыми собственными компонентами. Так как архитектура браузера отличается от типичной, разработчикам пришлось написать собственный многопоточный компонент для загрузки отдельных частей страницы. Также добавлены изменения, отвечающие за интеграцию с JavaScript-движком и обеспечивающие работу в многопоточном режиме – чтобы каждый процесс, отображающий свою страницу, использовал свою версию движка. Процесс использует несколько потоков. Для обмена между ними данными применяется специальный механизм коммуникации, который выступает своеобразным клеем (glue – так и названа директория в дереве исходных кодов) между компонентами. V8 – новая виртуальная машина для исполнения JavaScript. Во многих тестах она показывает самую высокую производительность. ВМ V8 создана с нуля и разрабатывается уже на протяжении нескольких лет. Мы наблюдаем первый выход движка на большую сцену. Его отличие от других в том, что он сразу преобразует код JavaScript в код платформы, на которой исполняется (видимо, в ассемблер), а потом кеширует его. Получается гораздо быстрее обычного процесса. Кроме того, оптимизированы самые частые конструкции языка, например, обращение к членам класса, особенно в длинной цепочке объектов. Это характерно для некоторых библиотек; так, jQuery теперь может производиться намного быстрее, буквально одной инструкцией. Разработчики решили и извечную проблему с памятью, которую очень «любили» сложные AJAX-приложения – встроенный механизм сборки мусора не дает скрипту использовать больше памяти, чем ему необходимо. Сам движок распространяется как отдельный проект (http://code.google.com/p/v8) и ты можешь собрать его для использования в сторонних приложениях. Scia – малоизвестная графическая библиотека, которая используется для рисования интерфейса и отображения графики. Также работает на платформе Android. Означает, что браузер вполне может стать штатным для будущей мобильной платформы. Google Gears – плагин для браузеров, обеспечивающий дополнительные API и расширяющий функциональность веб-приложений. К примеру, – встроенную базу данных с полнотекстовым поиском, модуль для реализации оффлайн режима и расширение JavaScript. Модуль встроен прямо в браузер. Не надо ничего дополнительно загружать, как было раньше. Кстати, веб-приложения с иконками на рабочем столе и в меню «Пуск» реализованы именно через Gears. Каждый, кто пользуется браузером, теперь сможет испытать преимущества этого плагина (поддержка Gears есть в блог-движке Wordpress, а самое известное его использование – социальная сеть MySpace). Специально для исследователей, Peteris Krumin в своем блоге описал 25 используемых в проекте открытых библиотек и компонентов, что может послужить хорошим аргументом для сторонников открытого ПО – в Google не стали изобретать велосипед и использовали проверенные открытые решения, дополняя их собственными разработками. Неоднозначные выводыПростой в использовании и очень быстрый Chrome понравится конечным пользователям. Если ты каждый день используешь веб-приложения от Google, этот браузер станет верным другом и помощником в Cети. Инновационная архитектура и новый движок JavaScript придутся по душе разработчикам. Но неясно назначение некоторых встроенных инструментов – вроде бы веб-разработчику они нужны и полезны, но в реальности пользоваться ими просто невозможно. Отсутствие системы плагинов не позволяет раскрыть потенциал сообщества. Но думаю, в будущем это исправят. Говорить, что мир завоеван, и война браузеров окончена, еще рано. Появление Chrome активизировало конкурентов. Скоро выйдет Firefox 3.1 и, возможно, детище Гугл уже не будет самым быстрым браузером планеты. Движок в Mozilla, говорят, имеет гораздо больше потенциала роста в плане производительности. Служебные страничкиРазработчиками предусмотрено несколько служебных страниц. На них отображается информация о памяти, используемая каждой вкладкой, сетевой активности, кэше, записях DNS и т.п.: about:memory ПроизводительностьКомпания Google разработала специальные тесты (http://code.google.com/p/v8/downloads/list), позволяющие оценить производительность JavaScript в различных браузерах. Самостоятельно сравнить свой браузер с Chrome можно по адресу: http://code.google.com/apis/v8/run.html. В таблице приведены результаты пяти тестов, в каждом из которых проверялся специализированный набор скриптов. Хотя тесты написаны, в основном, специалистами самой Google, – доступны исходники. Похоже, нам показывают реальную картину. Судя по результатам, ни один из существующих браузеров не может и близко сравниться с Google Chrome по скорости обработки JavaScript. Известные хаки
DVDНа диске выложена Portable-версия Google Chrome, которую ты можешь запускать с любого носителя. WWWИнструкцию по сборке Google Chrome под Linux и Mac ты найдешь на сайте: http://dev.chromium.org/Home WARNINGGoogle Chrome пока находится в стадии бета-тестирования – пусть открытого, но багов не избежать. Уже сейчас из-за уязвимости в движке WebKit реально заставить браузер закачивать файл без спроса пользователя. Проверить уязвимость можно по адресу: http://raffon.net/research/google/chrome/carpet.html. При проверке тебе будет закачан безобидный блокнот. |