Программа-дополнение ко всем основным браузерам Google Gears это своеобразный мост между оффлайновым режимом работы и онлайном, так как одна из основных функций, предоставляемой пользователю (в данном случае — разработчикам различных веб-сервисов) — это способность приложения работать без соединения с интернетом, сохраняя всю функциональность и возможности, а после подключения — синхронизировать состояние с сервером. Но это, конечно, не все — встроенная база данных и локальный веб-сервер могут намного больше, особенно в умелых руках разработчиков. Раньше я уже писал о разных API, которые могут быть реализованы в Gears, а теперь посмотрим, что же есть в новой версии.
Основные изменения:
- HttpRequest — это полная реализация объектаW3C XmlHTTPRequest, которая теперь доступна как для основной страницы (то есть, как один из объектов, создаваемых через API Gears-a), так и внутри worker-ов. Вот именно из-за этого этот модуль, собственно говоря, и был задуман. Gears предоставляет возможность имитировать многопоточное выполнение разных JavaScript вычислений путём распределения их по так называемым Worker-ам, отдельным процессам (объединённые в Worker Pool), которые берут на себя фоновое выполнение указанного кода. Внутри такого процесса код изолирован и раньше не мог общаться с внешним миром каким-либо способом, кроме как через интерфейс воркера. Теперь из такого кода можно вызывать и работать с удалёнными узлами, а это открывает большие перспективы перед веб-разработчиками.
- Timer — недостатки встроенного в JS таймера давно известны (в общем случае он один — негарантированная точности отсчёта временных промежутков, при чем, чем они меньше, тем больший может быть разброс). Теперь в Gears есть собственная реализация таймера, основанная на спецификации из HTML 5, которая имеет уже привычный интерфейс, так что если ваш код ориентирован на стандартный таймер, переделывать почти ничего не нужно. Да, конечно, таймер доступен как в глобальном приложении (на странице), так и в коде внутри worker-ов.
- Улучшенная обработка ошибок внутри кода, который исполняется worker-ом. Раньше такой код было сложно, если не невозможно отлаживать в реальных условиях (то есть, когда он исполняется Gears), теперь эти ошибки передаются выше, на основную страницу и там могут быть перехвачены средствами отладки JavaScript кода, например Firebug-ом. Также появился обработчик ошибок в API WorkerPoll, что позволяет самостоятельно отлавливать и реагировать на ошибки.
- Создание воркера путём задания URL скрипта. Это новая и, как говорят разработчики, давно ожидаемая возможность — теперь нет необходимости вручную загружать и передавать воркерам нужный код — вы выделяете код, который должен выполняется обособлено, в отдельный JS файл, а потом просто создаёте Worker и указываете URL этого скрипта, перекладывая всю работу по загрузке и выполнению кода на Gears.
Вот такие новшества. Конечно, это не столь революционно, как многим бы хотелось, и ещё много какая функциональность осталась не реализованной, только в проектах. Сейчас разработчики Gears-а эволюционно совершенствуют свою разработку, постепенно улучшая и добавляя новые возможности к уже существующим компонентам, не спеша добавлять полностью новый функционал. Новые возможности, хоть и простые, но позволяют реализовывать гораздо более продвинутые и функционально насыщенные решения, чем раньше. Сама концепция WorkerPoll очень полезная и позволяет переложить часть сложных расчётов, выполняемых на клиенте, на плечи приложения, разгружая таким образом браузер и обеспечивая лучшее быстродействие насыщенных интерфейсов современных веб-приложений. Кстати, таким образом можно значительно ускорить (это пока просто предположения) приложения, обойдя ограничения на количество одновременных коннектов к одному домену. А таймер наконец позволит реализовать точные отсчёты малых интервалов времени, не завися от системного таймера (особенно, если нужно одновременно использовать множество таймеров или сложные расчёты).
Загрузить Google Gears вы можете здесь, там же ссылки на портал для разработчиков и другие материалы.
P.S. Это кросс-пост из моего личного блога, подумал, что будет интересно хабралюдям.