Настройка и оптимизация операционных систем
Главная -> Интернет

Новый браузер Google Chrome – друг, враг или конкурент

Напечатать страницу

В приснопамятную войну браузеров вступил еще один игрок, однако игрок более мощный, чем все остальные вместе взятые – Google. Наконец-то не раз озвученные планы по выпуску браузера оправдались – вечером широкой публике была предоставлена возможность загрузить дистрибутив Google Chrome для Win32 и попробовать его в работе. Уже по состоянию на утро следующего дня по некоторым исследованиям, он занимал 0.72% мирового рынка, идя почти вровень с Opera (0,74%), у которой многолетняя история и армия преданных поклонников. Браузер доступен для платформы Win32, версии для других платформ пока в разработке, для самых нетерпеливых доступен исходный код и инструкции по сборке и тестированию.

Оригинальным получился и предстартовый PR нового браузера – за несколько дней до этого события вместо технических документов и анонсов был выложен талантливо нарисованный комикс в двух частях, который в ненавязчивой и игровой форме подробно описал, чего же ждать от продукта. Энтузиасты быстро перевели комиксы на русский, и начали обсуждать продукт еще до его выхода, периодически проверяя доступность адреса для загрузки. Множество блогов и новостных лент писало об этом продукте, и все были в ожидании. Наконец вечером состоялась презентация (в отличии от других компаний, все знали даже точное время релиза, и было даже немного странно, как же сервера выдержали такой наплыв), и теперь, после небольшого тестирования можно реально поговорить о том, что же такого интересного, в первую очередь для разработчика.

браузер от Google Chrome

О пользовательской стороне браузера уже написали очень многие. Да, браузер Chrome по дизайну интерфейса очень и очень прост, количество настроек сведено к минимуму – все это уже описали многие блоггеры и новостные сайты. Мы далее остановимся на некоторые технических деталях, которые интересны разработчикам. И так, начнем.

Оригинальная модель установки браузера – для скачивания доступен небольшой загрузчик, который при старте уже загружает и устанавливает основной дистрибутив браузера, объемом 23 Мб, который упакован нетрадиционным, но одним из лучших открытых архиваторов 7-Zip. Подобный подход использует только Microsoft, распространяя веб-инсталлятор для IE, однако, в отличие от Chrome, IE доступен и в виде полного дистрибутива, а Google пока такого не предусмотрел.

Как и ожидалось, браузер открытый, исходный код размещен на Google Code, проект называется Chromium и доступен под BSD-лицензией. Там же есть очень много подробнейшей документации по внутренней архитектуре браузера, советуем почитать и посмотреть, тем более, что в нем применяется достаточно новаторские подходы. Мы же расскажем про архитектуру очень кратко.

Архитектура Google Chrome

Основным отличием от всех остальных браузеров является использование многопоточности. Все элементы браузера, которые потенциально могут привести к падению, вынесены в отдельные потоки, так что теперь каждая вкладка и каждое окно – это новый процесс, независимый от всех остальных. Разработчики объясняют в документации, что подсмотрели такую организацию в архитектуре современных ОС и решили, что браузер также должен быть именно таким. Ведь самое неприятное, что может быть, это случай, когда одна вкладка из-за ошибки приводит к закрытию всего браузера, а у активных пользователей там могут быть десятки или даже сотни вкладок.

Компонентно можно выделить несколько основных систем, из которых состоит браузер. Ядро отображения веб-страниц основано на открытом движке WebKit, на основе которого работает всем известных браузер Safari, стандартный браузер для MacOS и Apple iPhone. Сетевая часть в текущем релизе для Win32 систем основана на библиотеке WinHTTP ввиду ее лучшей документированности и стабильности, она ориентирована на серверные приложения. Однако, в будущем Google планирует заменить этот компонент на собственный стек обработки HTTP-протокола. Над этой библиотекой Google написал собственный многопоточный загрузчик ресурсов, который заменяет штатный для движка WebKit. Обработкой JavaScript занимается новый движок V8, который также открытый и отличается большой скоростью и эффективным управлением памятью. V8 доступен в исходных кодах для всех платформ (написан на С++), и может быть собран как самостоятельное приложение, так и встраиваться в другие (подробнее смотрите в документации). Основным достоинством движка является более быстрый доступ к полям объектов (в принципе, может быть реализовано всего одной инструкцией), а также отказ от промежуточных преобразований кода, JavaScript транслируется при первом вызове сразу в машинный код (как я понимаю, в ассемблерный). Последним козырем является встроенный сборщик мусора, который позволяет экономить память, что особенно актуально для сложных и больших JS-приложений. Все это напоминает описание идеального движка, однако война на этом фронте только начинается, ведь Firefox 3.1 должен также лучше обрабатывать JS-код, а ведь, насколько мне известно, движок следующего поколения Tamarin ещё даже не используется.

В браузер изначально интегрирован Google Gears, который теперь составная часть браузера – некоторые "фичи" браузера вроде превращения любой вкладки в независимое веб-приложение, основаны именно на его функционале, а сайты, делающие ставку на его возможности, теперь будут работать быстрее, не требуя от пользователя установки дополнительных плагинов (этого и следовало ожидать, думаю, не ошибусь, если скажу, что именно на Gears Google обкатывала свои браузерные технологии).

Тот самый минималистичный и симпатичный интерфейс, что так понравился многим пользователям, отрисовывает библиотека Scia. Эту библиотеку вместе с компанией-разработчиком Google приобрел еще в 2004 году и использует в проекте Android. Scia - открытая графическая библиотека, которая оперирует 2D графикой и поддерживает работу с SVG, PDF и OpenVG, оптимизирована для работы в условиях ограниченных ресурсов на мобильных платформах, сама компания-разработчик демонстрировала работу на платформах PocketPC, Symbian и Brew, вместе с традиционными Win32 и MacOS.

Единственный сторонний плагин, работающий в новом браузере, это Flash-плеер от Adobe, без которого сейчас уже никак. Браузер поддерживает архитектуру плагинов NPAPI, ту же, что и в Firefox, поэтому ожидаем, что можно будет без особых сложностей и полного переписывания, переносить плагины, однако в текущем релизе дополнения не поддерживаются, что обещают исправить в следующих версиях. Конечно, многим пользователям это усложнит переселение в новый браузер, однако при обычной работе это почти не ощущается. Вот для веб-разработчика это принципиально – без плагина Firebug и сторонних дополнений к нему очень сложно представить полноценную разработку. Но не спешите грустить – об инструментах для разработчика речь пойдет ниже.

Все компоненты браузера соединяются в одну цельную систему при помощи межпроцессного протокола обмена данными (IPC) на основе name pipe. Это самостоятельная и большая тема, подробно описанная в документации Как уже говорилось, браузер построен с учетом многопоточности, и каждое окно и вкладка в нем представляет собой самостоятельный браузер (да-да, каждую вкладку рендерит собственный экземпляр движка и остальных компонент), который использует 8 стандартных потоков (подробнее про модель потоков). Именно такая архитектура позволяет демонстрировать браузеру потрясающую скорость работы даже когда параллельно открыто несколько десятков вкладок, в том числе с ресурсоемкими приложениями. Однако обратная сторона медали – достаточно большое потребление памяти, хотя в свете того, что даже бюджетные ноутбуки комплектуются 1 Гб памяти, это не так существенно.

А как в реальной работе?

Для примера, в процессе написания статьи открыто два окна браузера (8 и 11 вкладок), а также три отдельных окна в виде веб-приложений, в частности, Gmail. Параллельно открыт Firefox 3 с 7-ю вкладками. Здесь время вывести на сцену еще один компонент браузера от Google – собственный диспетчер процессов (из меню или через Shift-Esc), показывающий все запущенные процессы браузера (а также процесс флеша, из чего можно попробовать сделать вывод, что Flash один процесс для всех, и интересно посмотреть, что будет при его падении, когда открыто несколько окон с флеш-роликами). Исследуя менеджер, мы можем сделать еще один вывод – получается, что разные вкладки, в которых открыты страницы одного сайта (домена) будут отображаться в рамках одного родительского процесса, используя только новые потоки, а значит крах на одной странице привёдет только к закрытию вкладок со страницами этого домена. Если хотите все же разнести по независимым потокам открытые страницы, придется использовать новые окна. Впрочем, такое поведение достаточно логично и не вызовет особых сложностей.

потребление памяти   Google Chrome

Но вернемся к потреблению памяти – Google Chrome потребляет в такой конфигурации 185 Мб памяти против примерно 60 Мб у Firefox (в пересчёте: 8.5Мб/страницу у обоих), однако в три раза больше виртуальной памяти (около 350 Мб против 115). Оказывается, не все так плохо и накладные расходы при такой архитектуре не особенно большие, хотя на компьютерах где мало памяти вряд ли он будет так быстр, особенно, если параллельно много приложений – частое использование файла подкачки может существенно замедлить работу.

Несколько слов о стандартах

Несколько слов о стандартах. Тест ACID2 браузер проходит полностью, что, однако, не новость для браузеров на движке WebKit, который славится неплохой поддержкой новых стандартов. На момент тестирования сайт теста ACID 3 был недоступен, видимо все решили проверить, но те, кому удалось, заявляют о неполной поддержке – 76 баллов из 100. Заметим, что только в последних сборках движка есть полная поддержка CSS 3, однако эти сборки имеют проблемы с производительностью, и не рекомендованы для серьезного применения. Возможности HTML 5 также пока не поддерживаются, однако заявлено в будущем релизе, поэтому не принимайте это как вердикт. Тем более, часть из его самых востребованных новшеств (например, встроенное хранилище данных) поддерживается в Gears уже сейчас. Что касается обычного HTML/XHTML то здесь всё в порядке, и если сайт правильно работает под Safari, то и Chrome обработает его корректно. Существенный минус – это отсутствие поддержки XML, в частности, RSS никак не распознается и выводится как простой текст, кроме этого, не распознаются email-ссылки, PDF-файлы нельзя открывать просто в окне браузера, впрочем, это не самое страшное. Сейчас еще наблюдаются некоторые сложности с обработкой cookie и отсутствие автозаполнения форм, не всегда запоминаются авторизационные данные, отсутствует полноценная работа с клиентскими SSL-сертификатами (кто-то уже докладывал о неработоспособности WebMoney Lite), плохая встроенная проверка орфографии, однако нельзя же требовать всего и сразу о первой публичной версии.

Для загрузок файлов есть простейший встроенный менеджер загрузок, который открывается в новой вкладке. Конечно, везде можно искать встроенными средствами (не забывайте, что Google это все же поисковый сервис) – локальный поиск для файлов, истории посещения, и интегрированный поиск Google в адресной строке, что очень даже удобно.

А что же веб-разработчикам?

Если сперва, услышав, что основа браузера не ожидаемый Firefox/Gecko (ведь Google давний друг и спонсор Mozilla), а WebKit, многие разработчики поняли, что любимых плагинов для облегчения жизни AJAX-разработчикам (Firebug и компания) не будет, то внимательнее исследовав доступные инструменты, поняли, что не все так грустно. В распоряжении разработчика на JavaScript есть несколько инструментов, которые покрывают основные потребности.

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

Во-вторых, в составе браузера есть отдельный JS-дебаггер, который, правда, имеет интерфейс только командной строки, однако позволяет делать все основные операции с кодом – работа с точками остановки, трассировка и т.п. Работа с ним необычна, но если привыкнуть, то вполне. Список доступных команд можно получить, введя "help", список всех используемых JS-файлов и других ресурсов можно получить командой scripts, управление точками останова – break, break_info и clean. Это для истинных виртуозов консоли.

Консоль JavaScript

А для всех остальных – есть Консоль JavaScript, которая по функциональности достаточно похожа на связку Firebug + YSlow (хотя, если правда, эти инструменты все же гораздо мощнее). В этой консоли отображается вся DOM-модель текущей страницы с подсветкой синтаксиса, удобный навигатор по всех ее элементах а также список всех применяемых CSS-стилей с возможностью на лету менять параметры и просматривать результат. Что приятно удивило – в консоли можно вводить и исполнять JS код, при этом сразу работает автодополнение и подсказки для тех библиотек, которые подключены на текущей странице.

На вкладке Resources консоли мы можем исследовать процесс загрузки всех элементов страницы – время, размер и порядок загрузки, просматривать каждый элемент страницы – базовый функционал вкладки Net плагина Firebug или плагина YSlow реализован.

Пока это всё, что Google Chrome может предоставить в распоряжение веб-разработчика, для профессионалов этого мало и они не откажутся от связки Firefox + Firebug, а для обычных пользователей и этого не надо. Эти инструменты будут применяться для тестирования сайтов под новый браузер, но если заявления о совместимости архитектур плагинов будут реализованы, мы скоро увидим Firebug в составе Chrome. Ведь именно в разработке нужна устойчивая платформа, так как неотлаженные скрипты сложных AJAX-приложений часто вызывают падение всего браузера, а разработчику нужно параллельно держать открытыми множество окон, и каждое падение замедляет работу

действительно лучший и самый быстрый браузер

Протестировав его работу на сложных AJAX-приложениях, в частности, примерах на сайте ExtJS, могу заверить, что скорость действительно выше, чем у других браузерах, никакого торможения других вкладок не замечено, стабильно работают и сторонние проекты, в частности, например, наше приложение, где ExtJS работает в паре с Flash – для современных AJAX-приложений и RIA это действительно лучший и самый быстрый браузер.

Выводы

У Google получился… да, получился отличный продукт! Несмотря на раннюю версию (0.2.х) он достаточно стабильный, быстродействие просто фантастическое (конечно, если у вас 1 Гб, или больше, памяти), несмотря на простоту и минимализм интерфейса, функциональность на высоте (чего стоят только возможности любую вкладку превратить в веб-приложение, запускаемое по клику на иконке с рабочего стола). Хочется лишь немного поразмышлять над общей картиной.

Google явно делает из браузера свою операционную систему – и архитектурно и концептуально. Ранее протестировав на большой армии пользователей Gears, переведя на него частично свои сервисы и завладев умами многих веб-разработчиков (даже MySpace), они интегрировали в браузер и теперь не надо никаких модулей – все работает "с коробки", о чём так мечтали пользователи (даже не подозревая) и разработчики. Основным конкурентом я бы выделил совсем не Firefox, как все сравнивают, а Adobe AIR – по сути, каждая вкладка в Google Chrome это экземпляр того самого AIR. И там и там одинаковый движок, у обоих современные и быстрые JS-движки, интегрированный Flash и остальные требуемые плагины. Оба проекта выступают как идеальная платформа для AJAX веб-приложений, единственно, что у Google более короткий путь к пользователю, все таки Chrome не только платформа, но и конечный продукт (пусть, фактически, приданный в нагрузку к платформе).

Кроме этого, следует ожидать, что скоро Chrome станет полноценным мобильным браузером – все компоненты кроссплатформенные и по отдельности все уже работают на мобильных устройствах – и движок WebKit, и Gears и Scia и даже Flash. Вопрос появления браузера Chrome для платформы Android – это только вопрос времени. И, похоже, это будет очередная революция, ведь ранее мобильные терминалы всегда были "ущёрбные" в плане веб-доступа, а теперь у нас в телефонах будет самый быстрый браузер в мире (эх, ещё бы и гигабайт памяти в каждый смартфон).

P.S. Поступили сообщения, что доля нового браузера уже достигла 1%, что является просто фантастическим результатом, достигнутым менее, чем за сутки после анонса, а также о выявлении первых уязвимостей (подробнее). Похоже, война браузеров пошла на очередной виток.

Источник: developers.org.ua

Похожие публикации
Комментарии (0)

Комментариев нет.

Для того, чтобы оставить свой комментарий вам необходимо войти или зарегистрироваться на сайте.





Консультация специалиста

Консультант по Windows Если у вас есть вопрос по Windows или работе с ПК, вы можете задать его нашему консультанту.

Бесплатно и без регистрации!

Задать вопрос

Работа в нашей коменда
Опрос
Какая ОС вам больше нравится?





Результаты опросов
Разработка
  • Разработка сайта: Роман Чернышов