Розробка додатків для chrome огляд
На Хабре публікувалося чимало статей про створення розширень для Chrome, але тема розробки Chrome додатків (вони ж Chrome apps) зачіпалася помітно рідше. Останнім часом вона стала більш актуальною через поширення пристроїв на ChromeOS. До того ж інфраструктура для створення додатків для Chrome стала більш стабільною і зручною для використання. У цій статті я постараюся відповісти на основні питання: навіщо взагалі писати програми для Chrome, чим вони відрізняються від розширень, веб-сервісів, десктопних додатків і т.п. а також як вони розробляються, і які на них накладаються обмеження. Якщо ця тема викличе інтерес, у статті будуть продовження, що зачіпають більш спеціальні питання.
- Робота на ChromeOS. На даний момент Chrome app - основний спосіб донести вашу програму до користувачів Chromebook'ов. Чи варто воно того? Chromebook'ов поки менше, ніж, скажімо, комп'ютерів під Windows, але тенденція змінюється. У минулому році в США було продано в 5 разів більше Chromebook'ов ніж MacBook'ов
- Додатки Chrome без будь-яких додаткових зусиль працюють на Windows, Linux і OS X. Звичайно, є безліч інших способів зробити додаток стерпним, але більшість з них виявляються помітно більш витратними.
- З недавніх пір з'явилася можливість перенести Chrome apps на Android і iOS.
- На більшості систем додатки Chrome виглядають для користувача як звичайні програми. Вони запускаються з меню «Пуск», відкривають звичайні вікна без браузерних контролів, можуть використовуватися в якості програм за замовчуванням для відкриття файлів, і в іншому поводяться
як повноправні програми.
Packaged apps і hosted apps
Всі бачили в списку встановлених за замовчуванням в Chrome додатків іконки Пошуку, Gmail, Google Диску. Якщо натиснути на одну з них, нічого схожого на додаток не відкривається. Замість цього, користувач просто перекладається на сторінку відповідного сервісу.
Справа в тому, що існує два принципово різних типи додатків: hosted app і packaged app. На жаль, усталених українських термінів для них немає. Пошук, Gmail і т. Д. - відносяться до hosted. Таке додаток складається з файлу manifest.json з URL і настройками безпеки, і іконки. Фактично, hosted app - це спеціальна закладка на онлайн-сервіс.
На відміну від hosted, в разі packaged app, всі файли, необхідні для роботи програми зберігаються на комп'ютері користувача. Такі програми, як правило, можуть краще працювати offline, можуть управляти своїми вікнами, і взагалі мають доступ до більшої кількості програмних інтерфейсів Chrome.
Надалі мова піде про packaged apps.
Додатки та розширення
При цьому, розширення і додатки зсередини влаштовані дуже схоже. І ті, і інші встановлюються з Інтернет-магазину Chrome. являють собою .crx файли, які є zip-архівами. Властивості розширення / додатки описуються в файлі manifest.json. а UI в них написаний на HTML5. Багато програмні інтерфейси Chrome доступні як розширенням, так і додатків.
У той же час, є і значні відмінності. Додатки можуть користуватися функціями, недоступними для розширень:
- управляти своїми вікнами,
- безпосередньо працювати з файлами на комп'ютері користувача,
- призначатися програмами для відкриття операційною системою тих чи інших типів файлів,
- відкривати TCP і UDP з'єднання (цим, наприклад користується SSH-клієнт для Chrome),
- працювати з USB.
особливості розробки
Я вже згадував, що з точки зору користувача додатки Chrome мало відрізняються від звичайних програм. У той же час з точки зору програміста вони влаштовані зовсім по-різному. Якісь операції виявляються простіше, якісь - складніше.
Багато інтерфейси, що використовуються додатками, є загальноприйнятими стандартами і добре відомі всім веб-розробникам. Для UI використовуються HTML і CSS, для роботи з HTTP - XMLHTTPRequest і т.д.
У Chrome додатку практично без додаткових зусиль реалізується синхронізація між екземплярами додатки на різних комп'ютерах. Робота з файлами, як і всі інші інтерфейси, залежні від зовнішніх ресурсів, влаштована асинхронно. З одного боку, це дещо ускладнює код для відповідних операцій, з іншого - гарантує чуйність інтерфейсу і запобігає блокування.
Ще одна особливість Chrome - управління безпекою. У Chrome воно влаштовано інакше, ніж в класичних операційних системах і більше нагадує систему безпеки в Android. До додаванню програмних інтерфейсів розробники Chrome завжди підходили консервативно. При розробці системи легше згодом послабити обмеження безпеки, ніж зробити їх більш строгими. В результаті, наприклад, у додатків відсутній необмежений доступ до файлової системи. Головним чином, вони працюють з файлами, або належать додатком, або явно відкритими користувачем.