Разработчики из компании Google продемонстрировали на конференции Dart Developer Summit проект по организации разработки приложений для платформы Android с использованием языка программирования Dart. Проект пока носит экспериментальный характер, но связанный с ним инструментарий уже опубликован на GitHub под именем Sky SDK.

 

Создаваемые при помощи Sky SDK приложения формируются только на языке Dart, без использования Java, и нацелены на обеспечение высокой производительности и плотной интеграции с Web. Перед проектом поставлены достаточно амбициозные цели по обеспечению отрисовки со скоростью 120 кадров в секунду, что в два раза превышает сегодняшние возможности экранов обычных мобильных устройств, которые могут обновляться с частой 60 Гц. С учетом того, что многие приложения могут лишь мечтать о выводе с частотой 60FPS, заявления о 120FPS выглядят фантастично. Отрисовка с частотой 60FPS подразумевает вывод кадра каждые 16 мс, если кадр не успеет сформироваться за этот промежуток, пользователь столкнётся с "заиканием" анимации.

Разработчики Sky подготовили демонстрационное приложение, в котором на отрисовку кадра тратится всего 1.2 мс, что даёт повод рассчитывать, что для реальных более сложных приложений вполне возможно обеспечить вывод гладкой анимации с гарантированным временем отрисовки кадра за 8 мс, что соответствует 120FPS. Для борьбы с "заиканием" графики и притормаживанием интерфейса, Sky изначально построен на исключающей блокировки архитектуре - нить для обработки интерфейса выполняется отдельно от нити приложения, что позволяет сохранить быстрый и отзывчивый интерфейс даже во время интенсивных вычислений.

В целевой пакет помещаются только связанные с запуском приложения компоненты, само приложение может быть загружено через Web, по аналогии с web-приложениями. Минусом такого подхода является привязка к наличию сетевого соединения, а плюсом - доступ к всегда актуальной версии программы. При этом создаваемые в Sky приложения не привязаны к Android и потенциально могут быть запущены в iOS и любых других системах для которых имеется Dart VM, достаточно подготовить для каждой платформы свой runtime.

Sky SDK состоит из двух частей. Первым компонентом является написанный на языке C++ движок Sky (Sky engine), предоставляющий ключевые примитивы, такие как графическая система и планировщик задач с поддержкой работы в режиме мягкого реального времени. Вторым компонентом выступает фреймворк Sky, в котором реализованы средства для создания приложений, такие как наборы виджетов и механизмы реализации анимации. Sky framework функционирует поверх Sky engine и построен с использованием языка Dart.

Приложения могут обращаться к службам операционной системы через Mojo IPC. Например, для доступа к сетевым возможностям предоставляется интерфейс network_service.mojom. Несмотря на то, что разработчики могут при помощи данного механизма обращаться к низкоуровневым интерфейсам напрямую, предпочтительным вариантом является использование специально подготовленных библиотечных обвязок.