Главная > Open Source, Uncategorized, веб-обзоры, Разное > Хромированный веб — новый браузер от Google: изнутри и снаружи. Статья для журнала Хакер

Хромированный веб — новый браузер от Google: изнутри и снаружи. Статья для журнала Хакер

24 февраля 2009

118Статья написана для журнала Хакер и опубликована в 118 номере (октябрь, 2008). Журнальная версия доступна он-лайн на сайте журнала. Ниже представлена авторская версия, без сокращений (вызванных ограничением объема материала в печатной версии).

Введение

Ты ищешь информацию через поисковик, читаешь новости по RSS, пишешь письма (ага, тоже электронные), следишь за соседями через карты и восхищаешся видом на большой каньон с высоты птичьего полета. И имя всему этому - Google. Да, именно эта компания является разработчиком и владельцем всех этих сервисов, которыми каждый день полузуются, кроме тебя, еще и миллионы человек. И все эти люди используют какой-то браузер - кто стандартный Internet Explorer, кто, поддавшись новой моде, Mozilla Firefox (самые упёртые еще и 2.0 версию, более продвинутые - 3.0, а самые помешенные, и вовсе альфы 3.1), а отличники сидят в Opera и радуются жизни. Однако на днях произошло то, что заставит всех этих людей, включая тебя, изменить свое отношение к такому привычному инструменту, как браузер.

Подмечу еще одну деталь. Если смотреть на афиши кинотеатров, последние годы лидерами по сборам были блокбастеры на основе комиксов. Кто-то свяжет это с тем, что корти западной культуры лежат в плоскости комиксов и супергероев, кто-то скажет, что человечество устало от рутины и хочет чуда. И, по всем правилам жанра, чудо тут как тут. Какя связь? Прямая! Компания Google, как истинный приверженец традиций, решила устроить из своего нового продукта (ты уже догадался, что это браузер?) целое шоу, и началось оно с презентации рекламы в виде комикса. Это был самый краткий путь к сердцам миллионов людей и страницам блогов - армия поклонников сразу принялась изучать комиксы и искать там супергероя, рассматривать его, представлять его характеристики и стравливать с другими героями рынка. Честно сказать, многим эти игры с комиксами были даже важнее самого анонса. Но что же за ним скрывалось?

Google давно вынашивает мысли о создании собственной операционной системы. И как истинный игрок интернета, он решил начать с браузера - ведь для веба именно браузер является операционной системой. Долгое время компания была главным спонсором Mozilla Fundation, дотируя популярный браузер Mozilla, однако этого было мало. Поэтому втайне от всех была начала разработка собственного браузера, который бы стал для обычного пользователя дверью в мир интерента и сервисов Google, конечно же. Инженеры компании посмотрели-посмотрели и решили не отходить от линии партии, создавая даже браузер с архитектурой современных операционных систем. И назвали его соответственно - Chrome (в большинстве фильмов по комиксах герой в хромированой маске или доспехах).  И, что ты думаешь, у них получилось сделать продукт, анонса которого ожидали миллионы людей, который при всей своей минималистичности и в чем-то даже убогости, с текущей версией всего лишь 0.2.х, и который в первые же дни после выхода сумел занять достаточно существенную долю рынка (около 1 % глобального рынка, а на некоторых ресурсах администраторы засекали долю Chrome до 20%).

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


Первый взгляд пользователя

Рассматривая браузер Google Chrome как обычный пользователь, сразу же отметишь нетипичную процедуру инсталляции. Для загрузки предлагается небольшой установщик, который докачает из интернета уже основной дистрибутив браузера в запакованном виде (здесь Google нетипично для все использует один из лучших открытых архиваторов - 7-Zip, и даже с ним размер пакета около 25 Мб). Само окно браузера очень простое и даже минималистическое -особенно после других браузеров вас будет преследовать чувство что что-то где-то подевалось. Как и все современные браузеры, Chrome применяет интерфейс в виде вкладок, когда каждая страница открывается в собственной вкладке. При этом, в отличие от Firefox и других браузеров, адресная строка и элементы управления размещаются внутри каждой вкладки, что, по мнению многих пользователей, достаточно спорное решение, однако я бы не сказал, что неудобно, скорее непривычно. Учитывайте еще одну особенность вкладок - закрытие последнего таба в окне приведет к его полному закрытию, что может поначалу смутить нового пользователя.
02_1_adress_bar
Особое внимание уделено именно этой самой адресной строке. Теперь она раскрашивается разными цветами, каждый елемент адреса по другому, так что вы точно увидите по какому адресу вы переходите. Снова таки, по аналогии с Firefox, поиск работает просто с адресной строки, при этом использует и результаты поиска в Google, и данные из истории посещений. Если вы введете адрес одного из сервисов самого Google, то одним из вариантов будет предложение поискать на этом ресурсе, конечно же сразу с адресной строки без перехода на сайт.

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

Конечно, использование интернета немыслимо без желания что-то себе сохранить - загрузить новые дистрибутивы ПО или видеофайлы, ну хоть бы то же самое порно 🙂 В Chrome встроен достаточно простой загрузчик, который может сразу начать загружать данные, без каких-либо окон запроса на сохранение, а сам процесс загрузки будет отображаться на специальной панели внизу страницы, при этом панель привязана к той странице, откуда начата загрузка, то есть - переключившись в другую вкладку вы не увидите, что что-то загружается, а это часто неудобно. После загрузки на файл можно нажать, вызвав контекстное меню операций, однако здесь еще есть недоработки, например не всегда срабатывает опция автоматического открытия определенных типов файлов. Так что для тех, кто часто и много загружает, лучшим выбором пока будет именно Firefox + какой-либо плагин для загрузки, например, FlashGot. Зато очень удобная страница истории загрузок, где выводятся в хронологическом порядке все ваши загрузки и здесь можно искать, если вы не помните, загружали ли вы нужный файл. Кстати, все такие служебные функции, вроде истории просмотров страниц, закладки, загрузки - всё это оформлено в виде отдельных страниц во вкладках, и, честно говоря, очень сложно понять, это локальная страница программы или же окно очередного веб-сервиса. Вот она, подлинная интеграция с вебом...
04_most_visited_site_panel1
И, для любителей нового, расскажу еще об одной встроенной функции Chrome, а именно - создание из любой вкладки веб-приложения. Всего лишь достаточно выбрать из меню страницы "Создать ярлыки веб-приложения" и на вашем рабочем столе, в быстром запуске и в меню Пуск  появяться.. обычные ярлыки новой программы, для примера - Gmail. Кликнув по нему, вы запустите новое окно приложения, где будет открыта страница Gmail-а или любая другая, при этом ничего не выдаст, что это все же окно браузера - в нем не будет ни табов, ни адрестной строки ни других элементов меню. Хотя это очень удобно, но только в тех сервисах, которые изначально проектировались как "одностраничные". Если вся работа с приложением или сайтом может происходить в пределах одного окна, а новая информация загружается в фоновом режиме по технологии AJAX, то все отлично, но все внешние ссылки будут открывать в новых окнах браузера, а это разрушает концепцию веб-приложения. Вот с гугловыми сервисами такое превращение происходит на пятерку - и GMail, и Google Reader превращаются в действительно полноценные приложения, а вот с Google Docs это уже не пройдет - ведь там каждый документ открывается в новом окне, что заставляет переходить в привычный нам браузер. Мои попытки сделать из любимого торрент-трекера веб-приложение также не увенчались успехом - на таких сайтах основа работы, это одновременное открытие множества вкладок, а для этого веб-приложения не приспособлены. Однако тенденция налицо - у всех конкурентов на рынке есть подобные механизмы, например, у Mozilla есть дочерний проект, Prism, который также может интегрироваться с браузером, а другой игрок, Adobe, так вообще подошла основательно, выпустив целую платформу для веб-приложений, Adobe AIR, правда, своего браузера у них еще нет.
04_1_create_webapp_pane
А теперь несколько слов о недостатках браузера. Да, они есть, несмотря на то, что за ним стоит могучий и идеальный Google. Первое, с чем может столкнуться активный веб-серфер - иногда бывают сложности с отображением Flash элементов, баннеров или же частей сайтов. От этой беды не спасает даже близость к разработчикам - многие пользователи жаловались на падения браузера при заходе на YouTube, который, как известно, принадлежит Google. Так как для Flash-а используется плагин от Adobe, с которым работают и другие браузеры, то можно предположить, что это проблема именно в части интеграции, а не самого Flash-плеера. Очень обидно, что браузер совершенно не воспринимает такое обычное для современного веба средство достаки контента, как RSS, что странно на фоне того, что у Google есть очень даже неплохой веб-ридер для RSS, который вполне можно было интегрировать в браузер. Точно такие же претензии и к e-mail ссылкам, они, к сожалению, также не работают. Существуют проблемы и в работе с SSL - пока браузер не умеет работать с клиентскими сертификатами, тебе будет закрыта дорога на ресурсы, требующие для работы авторизацию через сертификат, а это и WebMoney Lite и другие подобные сервисы.

Из менее важных недостатоков можно отметить, что, несмотря на всю современность архитектуры браузера и мощь инженерного отдела Google, браузер иногда некорректно отображает страницы, а иногда и вообще зависает, при чем, не только текущая вкладка, но и весь браузер вообще. Даже более, буквально утром, перед началом подготовки статьи автор сам стал свидетелем, когда на соседнем компьютере с MS Vista SP1 Chrome при заходе на один ресурс вызвал не просто падение, а мгновенную перезагрузку всего компьютера. Но такое случается достаточно редко, так что можно сделать скидку на бета-версию, а вот с Flash-контентом сложности возникают намного чаще. Также стоит отметить слабую поддержку проверки орфографии - пусть это достаточно новая функциональность, но все уже привыкли к мощи встроенной проверки правописания в Firefox, которой, увы, у Chrome не наблюдается.

Взгляд веб-разработчика

Вот с точки зрения веб-разработчика новый браузер оставляет двоякие впечатления. И местами даже странные. Смотрите сами. Из хорошего - основной проекта является движок WebKit, который используется во многих проектах, в частности, в Adobe AIR и Apple Safari, а значит, если вы оптимизировали свой сайт под эти браузеры, то особых проблем с новым не будет. Хотя некоторые пользователи отмечают нарушение верстки, видимо, патчи к движку служат не только для интеграции, но и меняют способ отображения страниц. Радует, что выбран современный и быстрый движок WebKit, а значит большиснтво современных веб-стандартов поддерживаются в полной мере, например, Google Chrome достаточно неплохо проходит все тесты - ACID 2 на 100 баллов, ACID 3 на 76 из 100. Да и по скорсоти работы WebKit достаточно быстрый. Хотя ввиду тесной поддержки Mozilla, странно, почему они не выбрали их движок (Gecko), который также поддерживает все стандарты.
05_js_debugger
А вот для работы с JavaScript используют совсем другой движок, V8, который, по ряду тестов, обещает прирост производительности в несколько раз, хотя параллельные тесты показывают, что будущий Firefox 3.1 з движком TraceMonkey покажет сравнимую или даже более высокую производительнсоть. Для веб-разработчика важны такие ньюансы нового движка, как оптимизация доступа к полям обьектов, компиляция кода сразу в нативный код платформы, что существенно повышает быстродействие, а также сборка мусора, которая не дает памяти так быстро "уплывать", особенно в сложных AJAX-приложениях. Пока же для работы с веб-приложениями, которые интенсивно используют JavaScript и AJAX, Google Chrome действительно самый быстрый браузер на текущий момент.

Разработчики явно нацелили браузер на самую продвинутую часть аудитории - ведь наряду с существенными ограничениями как для конечного пользователя, описанные выше, в браузере реализованы достаточно мощные средства разработки, которые в других проектах реализованы только сторонними плагинами.
06_console_js_elements_pane
Первым бросается в глаза редактор для просмотра исходного кода страниц  - в нем реализована подсветка синтаксиса HTML, что делает код страницы гораздо более читабельным, однако на этом дело и закончилось, ожидаемой подсветки для JavaScript в этом редакторе нету, что очень даже странно, учитывая, что редко какая страница обходится без скриптов.

Отладчик JavaScript вообще очень специфический. С одной стороны, в нем реализованы все функции дебаггера - работа с точками останова, просмотр кода, трассировка и исполнение кода, с другой - все это реализовано в виде интерфейса коммандной строки и будет радовать взгляд разве что любителей работать в консоли. Так  что хоть этот инструмент и имеет гордое название отладчика, для полноценной работы с веб-приложениями его рекомендовать очено сложно. Это, скорее всего, заявка на будущий инструментарий, пока же серьезной работе скорее помогут Firefox + Firebug плагин, а Chrome придется использовать для серфинга и проверки совместимости вёрстки.

Консоль JavaScript наоборот, гораздо шире своего названия. Это уже намного ближе к функциональности Firebug-а, хотя в реальной работе всеравно не то. Консоль разделена на две функциональные части. Elements показывает всю DOM-модель текущей страницы, все стили и позволяет редактировать все элементы страницы, сразу же просматривая результат. Вкладка Resources показывает в графическом виде диаграмму загрузки всех элементов страницы, либо просто список всех составных частей - рисунков, подключаемые стили, скрипты и другие данные. Это позволит определить, на что тратится больше всего времени при загрузке страницы и где что нужно оптимизировать.
07_console_js_resources_pan
Честно говоря, присутствие этих инструментов в браузере на текущий момент совершенно не оправдано, и реальной пользы они не принесут, хотя потенциал в них заложен весьба богатый. Для серьезного применения в веб-разработке следует подождать реализации полноценной поддержки плагинов и переноса в новый браузер уже зарекомендовавших себя инструментов - FIrebug + YSlow + Jiffy.


Взгляд хакера: внутреняя архитектура браузера

Браузер имеет полностью открытый и доступный для скачивая исходный код, который вам пригодится для сборки под другие платформы или же для экспериментов. Проект називается Chromium и размещен на отдельном веб-сайте. Он интересен и с точки зрения исследования - внутреняя архитектура браузера скорее похож на операционную систему, чем обычную прикладную программу. Сами инженеры Google признаются, что постоянно пользуясь браузерами они подметили множество недостатков и подумали, что если в ОС есть возможность наконец сделать такую защиту, что падения отдельных программ не мешают всему компьютеру, то что мешает сделать это самое в браузере. Поэтому все внутри Chrome поддерживает многопоточность и многопроцессность. Каждая вкладка это отдельный процесс, который использует собственные экземпляры всех компонент, и отдельные вкладки никак не зависят одна от другой. То же самое и отдельные окна браузера - все полностью независимо, включая даже движок рендеринга страниц. Однако здесь есть ньюанс - страницы с одного и того же домена открываются внутри одного процесса, пусть даже и в разных вкладках, поэтому падение вкладки приведет в закрытию всех открытых страниц одного сайта.
08_arcthitect_docs
И так, из чего же состоит браузер Chrome? Рассмотрим детальнее.

WebKit - это известный движок для рендеринга html-страниц, который используется как основа для браузера, дополненный некоторыми собственными компонентами. Так как архитектура браузера отличается от типичной, разработчикам пришлось написать собственный многопоточный компонент для загрузки отдельных частей страницы. Также добавлены изменения, отвечающие за интеграцию с JavaScript-движком и обеспечивающие работу в многопоточном режиме так, чтобы каждый процесс, отображающий свою страницу, использовал свою версию движка рендеринга. Каждай процесс использует несколько потоков и для обмена между ними данными, применяется специальный механизм коммуникации, который вступает своеобразным клеем (glue, так и названа директория в дереве исходных кодов) между компонентами. Сейчас стало известно, что разработчики WebKit решили включить некоторые элементы из Chrome в проект, в частости, работают над интеграцией движка V8.

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 не стали изобретать велосипед и использовали проверенные открытые решения, всего лишь дополняя собственными разработками.


Первым делом, что сделали энтузиасты - создали переносимую версию Portable Chrome, работающую прямо с флешки и обеспечивающую быстрый и безопасный веб-серфинг. Кроме этого, она основана на последней версии кода, более новой, чем та, что использована в публичном релизе. Кроме этого, она в два раза меньше по размеру, так что поместится на любую флешку.

Пока что проблема плагинов не решена, но разработчики обещают добаить их поддержку в скором будущем, ведь в проекте использован тот же самый API для системы плагинов, что и в других браузерах. А пока начинают выходить первые программы, облегчающие жизнь тем, кто решил постоянно использовать Chrome. ПО Google Chrome Profile Backup позволяет одним кликом мыши создавать и управлять профилями пользователей, создавать резервные копии данных и синхронизировать их, если вы пользуетесь браузером на нескольких машинах. Размером всего 400 Кб, она отлично дополняет браузер, в дальнейшем такой функционал может быть встроен в базовый дистрибутив.

Для самых нетерпеливых уже есть инструкции по созданию собственных тем оформления, хотя пока это несколько сложнее, чем для Firefox.



Выводы или взгляд с высоты птичьего полета

Выводы будут совершенно неоднозначные. Конечно,  у Google получился отличный браузер, реально очено быстрый и простой в использовании - это понравится конечным пользователям. Инновационная архитектура и новый движок JavaScript понравяться разработчикам. Однако пока еще рано говорить о завоевании мира и конце войны браузеров. Появление Chrome активизировало работы у всех конкурентов, скоро выйдет Firefox 3.1 и, возможно, Сhrome уже не будет самым быстрым браузером планеты, ведь движок JS TraceMonkey, говорят, имеет гораздо больше потенциал роста в плане производительности. Неясно и назначение некоторых встроенных инструментов - вроде как веб-разработчику они нужны и полезны, но в реальности пользоваться ими совершенно невозможно. Отсутствие системы плагинов не позволяет раскрыть потенциал сообщества, как это было с Mozillа, однако, думаю, это в будущем исправиться. А так - да, браузер действительно отличный, быстрый и функциональный, если вы каждый день используете веб-приложения от Google, этот браузер станет вашим другом и помощником в сети. И все же, война браузеров не остановилась. Она просто пошла на новый виток. От ее последствий выиграем, в конечном счете, именно мы, обычные пользователи, поэтому ждем ответа от остальных игроков.
  • I

    Тыкать читателю — это стиль такой? Коробит, если честно.

    • Это не тыкать, а просто вести на равных. Да, для этого журнала такой стиль есть и это у них стандарт. Не равняйте же аудитории 🙂 Хотя там есть очень даже хорошие материалы, которым не важен стиль, важна суть.

  • Хорошая статья, в очередной раз решил не пробовать очередную вечную бету, но всё же как вектор развития браузерной индустрии интересно.Кстати насчёт выкания, меня как раз это коробит, типо как «Ваше величество».

  • Iam

    Хакер уже не тот 🙁

  • <<Хакер уже не тот
    Не тот 🙁 Такое ощущение что там уже оченнь тщательно следят за темами и многое не дают писать.Но все равно из того что есть,то отработано на 100%

  • Был приятно удивлен, когда купив журнал Хакер (не тот, что в статье а новый) увидел знакомую аватарку и знакомую фамилию автора статьи о Твитере. Статья очень понравилась 🙂

  • Спасибо! да, это последняя моя статья, пока новой темы не придумал, но я считаю, что одна из лучших. Хотя из-за специфики там ее порезали так что я буду выкладывать, как придет время обе версии, наверное — авторская более глубокая в части раскрытия феномена твиттера и его роли в современном обществе и индустрии СМИ

  • Раньше как помню хакер на много лучше был.

  • Полностью согласен с Ефимом

Developers.org.ua