Наш ассоциированный член www.Bikinika.com.ua

Новий браузер Google Chrome - один, ворог або конкурент?

  1. Архітектура Google Chrome
  2. А як в реальній роботі?

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

Оригінальним вийшов і передстартовий PR нового браузера - за кілька днів до цієї події замість технічних документів і анонсів був викладений талановито намальований комікс в двох частинах, який в ненав'язливій і ігровій формі докладно описав, чого ж чекати від продукту. Ентузіасти швидко перевели комікси на російську , І почали обговорювати продукт ще до його виходу, періодично перевіряючи доступність адреси для завантаження. Безліч блогів і новинних стрічок писало про цей продукт, і всі були в очікуванні. Нарешті ввечері відбулася презентація (на відміну від інших компаній, все знали навіть точний час релізу, і було навіть трохи дивно, як же сервера витримали такий наплив), і тепер, після невеликого тестування можна реально поговорити про те, що ж такого цікавого, в першу чергу для розробника.

Про користувальницької стороні браузера вже написали дуже багато. Так, браузер 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 споживає в такій конфігурації 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, яка по функціональності досить схожа на в'язку Firebug + YSlow (Хоча, якщо правда, ці інструменти все ж набагато могутніше). У цій консолі відображається вся DOM-модель поточної сторінки з підсвічуванням синтаксису, зручний навігатор по всіх її елементах а також список всіх застосовуваних CSS-стилів з можливістю на льоту змінювати параметри і переглядати результат. Що приємно здивувало - в консолі можна вводити і виконувати JS код, при цьому відразу працює автодоповнення і підказки для тих бібліотек, які підключені на поточній сторінці.

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

Поки це все, що Google Chrome може надати в розпорядження веб-розробника, для професіоналів цього мало і вони не відмовляться від зв'язки Firefox + Firebug, а для звичайних користувачів і цього не треба. Ці інструменти будуть застосовуватися для тестування сайтів під новий браузер, але якщо заяви про сумісність архітектур плагінів будуть реалізовані, ми скоро побачимо Firebug в складі Chrome. Адже саме в розробці потрібна стійка платформа, так як несправність скрипти складних AJAX-додатків часто викликають падіння всього браузера, а розробнику потрібно паралельно тримати відкритими безліч вікон, і кожне падіння уповільнює роботу.

Адже саме в розробці потрібна стійка платформа, так як несправність скрипти складних 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 - це лише питання часу. І, схоже, це буде чергова революція, адже раніше мобільні термінали завжди були «ущёрбние» в плані веб-доступу, а тепер у нас в телефонах буде найшвидший браузер в світі (ех, ще б і гігабайт пам'яті в кожен смартфон).

PS Надійшли повідомлення, що частка нового браузера вже досягла 1%, що є просто фантастичним результатом, досягнутим менш, ніж за добу після анонса, а також про виявлення перших вразливостей ( Детальніше ). Схоже, війна браузерів пішла на черговий виток.

А як в реальній роботі?
А що ж веб-розробникам?

Новости