Хромированный веб — новый браузер от Google: изнутри и снаружи

Хромированный веб — новый браузер от Google: изнутри и снаружи

Александр Лозовюк (aleks.raiden@gmail.com)

Слухи о разработке Google’ом собственного браузера ходят давно. Первого сентября на официальном блоге появилось сообщение: да, разрабатывают. А уже на следующий день вышла бета-версия. И это, мы тебе скажем, вещь!

Браузер – это обычно всерьез и надолго. Выбрав один, нескоро соберешься что-либо менять. Но только не в случае с Google Chrome. Анонса такого браузера ожидали миллионы людей. При всей своей простоте и в чем-то даже убогости, в первые дни после выхода он сумел занять достаточно существенную долю рынка (около 1 % глобального рынка, а на некоторых ресурсах – и до 20%). Предлагаю изучить новинку с трех точек зрения – пользователя, веб-разработчика и хакера.

Технические детали

Версия: 0.2.149.29 сборка 1798
Сайт: http://www.google.com/chrome
Размер: 450 Кб — 25 Мб
Операционная система: Win32 (XP и выше), Linux под Wine
Лицензия: BSD
Открытый код: да, http://code.google.com/chromium/
Поддержка: HTML 4/CSS 2 (частично CSS 3), Flash, JavaScript
Движок: WebKit + V8 (JS-engine)
Плагины: пока нет, встроенный Google Gears

Впечатления пользователя

Процедура инсталляции довольно нетипична. Для загрузки с офсайта предлагается небольшой установщик, который скачивает из интернета основной дистрибутив (размер пакета – около 25 Мб). Забавно, что установщик не предлагает выбрать директорию для установки и размещает файлы строго в C:\Users\\AppData\Local\Google\Chrome\Application. Окно браузера простое, но приятное. Каждая страница открывается в собственной вкладке табе. В отличие от Firefox и других, адресная строка и элементы управления размещаются внутри каждой вкладки. Это достаточно спорное решение, однако я бы не сказал, что оно неудобно, скорее, непривычно. Учитывай еще одну особенность – закрытие последней вкладки в окне приведет к его полному закрытию. С непривычки это может смутить.

Адресной строке уделено особое внимание. Она раскрашивает каждый элемент адреса разными цветами, так что теперь точно видно, по какому адресу переходишь. По аналогии с Firefox, поиск работает прямо из адресной строки: при этом использует и результаты поиска в Гугл, и данные из истории посещений. А если ты введешь адрес одного из сервисов самого Google, то в числе прочих вариантов будет предложение поискать на этом ресурсе. Конечно же, прямо с браузера, без перехода на сайт!

Любую страницу сразу можно занести в закладки, однако для них браузеру очень недостает развитых инструментов управления. Максимум, что возможно – импортировать закладки из других установленных браузеров, расположить их на специальной панели или вынести в дополнительные папки. Здесь очень пригодилась бы интеграция с сервисами закладок, тем более, что у Google он есть (Bookmarks). Радует, что в браузер изначально встроен предпросмотр часто посещаемых страниц (в виде картинок-превью, отображаемых при открытии новой вкладки). В Opera есть аналогичный функционал, а в Firefox это решается плагином Fast Dial.
Думаю, тебе будет интересен режим инкогнито – безопасный веб-серфинг, когда никакие данные о посещаемых страницах не сохраняются ни в истории, ни в кеше, ни где бы то ни было. Так что можно спокойно рассматривать страницы бывших подружек в социальных сетях на компьютере жены или шефа и быть уверенным, что никто ничего не заметит. По слухам, аналогичный функционал планируется и в следующих версиях браузера Internet Explorer.

Интернет немыслим без желания сохранить себе что-нибудь на комп – загрузить новые дистрибутивы ПО, аудио-файлы или хотя бы то же самое порно. В 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
about:stats
about:network
about:internets
about:histograms
about:dns
about:cache
about:plugins
about:version
about:crash

Производительность

Компания Google разработала специальные тесты (http://code.google.com/p/v8/downloads/list), позволяющие оценить производительность JavaScript в различных браузерах. Самостоятельно сравнить свой браузер с Chrome можно по адресу: http://code.google.com/apis/v8/run.html. В таблице приведены результаты пяти тестов, в каждом из которых проверялся специализированный набор скриптов.

Хотя тесты написаны, в основном, специалистами самой Google, – доступны исходники. Похоже, нам показывают реальную картину. Судя по результатам, ни один из существующих браузеров не может и близко сравниться с Google Chrome по скорости обработки JavaScript.

Известные хаки

Энтузиасты создали переносимую версию Portable Chrome, работающую прямо с носителя и обеспечивающую быстрый и безопасный веб-серфинг. Кроме этого, она основана на последней версии кода – более свежей, чем в публичном релизе и в два раза меньшей по размеру, так что поместится на любую флешку. Эту версию ты найдешь на нашем DVD-диске.
Проблема плагинов еще не решена, но разработчики обещают добавить их поддержку в скором будущем. Ведь в проекте использован тот же самый API для системы плагинов, что и в других браузерах. А пока начинают выходить первые программы, облегчающие жизнь тем, кто решил постоянно использовать Chrome. Google Chrome Profile Backup (http://www.parhelia-tools.com) позволяет одним кликом мыши создавать и управлять профилями пользователей, делать резервные копии данных и синхронизировать их, если ты пользуешься браузером на нескольких машинах. Размером всего 400 Кб, прога отлично дополняет браузер, и в дальнейшем такой функционал может быть встроен в базовый дистрибутив.
Для самых нетерпеливых уже есть инструкции (http://4chrome.ru/2008/09/handmade) по созданию собственных тем оформления. Но пока это будет несколько сложнее, чем для Firefox. Кстати, про огненную лису: если немного похачить плагин IEView, позволяющий использовать движок Internet Explorer для открытия страниц в отдельных вкладках, то к нему можно прикрутить и Google Chrome. Даже не надо ничего делать вручную – все уже реализовано в IE View Lite (https://addons.mozilla.org/en-US/firefox/addon/1429).
DVD

На диске выложена Portable-версия Google Chrome, которую ты можешь запускать с любого носителя.

WWW

Инструкцию по сборке Google Chrome под Linux и Mac ты найдешь на сайте: http://dev.chromium.org/Home

WARNING

Google Chrome пока находится в стадии бета-тестирования – пусть открытого, но багов не избежать. Уже сейчас из-за уязвимости в движке WebKit реально заставить браузер закачивать файл без спроса пользователя. Проверить уязвимость можно по адресу: http://raffon.net/research/google/chrome/carpet.html. При проверке тебе будет закачан безобидный блокнот.

http://www.xakep.ru//magazine/xa/118/024/1.asp

Хромированный веб — новый браузер от Google: изнутри и снаружи: 1 комментарий

  1. От себя добавлю — он не скачает без спроса. Выдается запрос на закачивание файла. Ваше право его качать или нет. Так что это не есть уязвимость.

Добавить комментарий

Ваш e-mail не будет опубликован.