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



Понимание мотивов нашего последнего продвижения платформы требует некоторого контекста. В прошлом мы исследовали множество различных подходов. В 2009 году мы внедрили приложение на базе Flash Lite. Вскоре после этого, в 2010 году, мы перешли на приложение на основе WebKit, используя преимущественно порт QtWebKit. Каждое приложение в конечном итоге достигло критической точки, когда наши инновационные цели требовали от нас адаптации нашего стека технологий.

Эволюция платформы приложений

Мы видели, как WebKit превратился в полноценную платформу для разработки приложений. Достижения в HTML5 и CSS3 привели к столь необходимым улучшениям семантики и стиля. JavaScript может использовать холсты на основе WebGL, перетаскивание, геолокацию и многое другое. WebKit все чаще будет подключаться к службам устройств, позволяя интегрироваться с оборудованием и данными за пределами изолированной программной среды браузера. Усовершенствования в возможностях мобильных устройств сделали многие из этих и будущих достижений желательными.

Мы выпустили наше первое приложение QtWebKit в 2010 году. В течение следующих 3 лет наши инженеры делились нашими инновациями и подходами с сообществом WebKit. Наши разработчики платформы внесли свой вклад в реализацию ускоренного композитинга. Тем временем наши инженеры пользовательского интерфейса поделились лучшими практиками и выявленными оптимизациями рендеринга глубоко внутри WebCore. Кроме того, мы продолжаем усилия по стандартизации Премиальных видеорасширений HTML5 и адаптировали их для настольных компьютеров.

Устройства, на которых запущено наше основное приложение на телевизорах и устройствах, подключенных к телевизору, используют WebKit для уникальных вариантов использования. Мы предоставляем долговечный одностраничный пользовательский интерфейс с большим объемом изображений и видео на оборудовании с различными скоростями ЦП и адресуемой оперативной памятью, а также различными конвейерами рендеринга и сети. Гамма устройств значительна со значительными различиями в функциональности и производительности.

Наш технологический стек инноваций

Мы стремимся предоставить клиентам богатый, инновационный опыт поиска и воспроизведения контента. Все устройства, на которых запущено новое приложение Netflix TV, теперь используют нашу собственную графическую среду JS+native. Эта структура позволяет нам достичь наших целей в отношении качества обслуживания клиентов на самом широком наборе телевизоров и устройств, подключенных к телевизору. У нас есть дорожная карта функций и инструменты, и мы можем внедрять инновации с минимальными ограничениями. Наш фреймворк оптимизирован для быстрого 2D-рендеринга изображений, текста и цветовых заливок. Рендерим из дерева графических объектов. Этот подход предлагает простоту использования в контекстах рендеринга непосредственного режима, таких как холст HTML. Изменения свойств отображения в этих объектах объединяются, а затем применяются в массовом порядке после взаимодействия с пользователем.

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

По мере того, как платформа развивалась, она получила подключаемый конвейер кинематографических эффектов с размытием, обесцвечиванием, маскированием и оттенком. Эти эффекты могут быть реализованы очень близко к металлу, сохраняя их быстро на большем количестве устройств. Хотя мы не используем полный WebKit, мы активно используем JavaScriptCore. Мы экспериментировали с V8 и SpiderMonkey (с JIT), но оба они были непрактичны без стабильных портов для различных архитектур чипсетов, используемых производителями устройств.

Мы также полагаемся на веб-инспектор WebKit для отладки. Наш фреймворк интегрируется напрямую с автономным сервером Node (и, в конечном счете, с Web Inspector) с использованием общедоступного протокола удаленной отладки. На вкладке Элементы отображается дерево графических объектов. Вкладки Источники, Сеть и Временная шкала работают в основном так, как вы ожидаете. Знакомые инструменты помогают при отладке приложения, работающего на эталонной реализации платформы или устройствах разработки.

A/B-тестирование нашего приложения, написанного в этой новой среде, показало лучшие результаты, чем наше существующее приложение. Наше будущее зависит от нас, и мы еще не закончили веселиться.

Присоединиться к нашей команде

Мы работаем над новыми интересными функциями, постоянно совершенствуем нашу платформу и ищем помощи. Наша растущая команда ищет специалистов, готовых присоединиться к нам. Если вы хотите подать заявку, посмотрите здесь.

Смотрите также:









Первоначально опубликовано на techblog.netflix.com 16 декабря 2013 г.