Представляю лучшую десятку Web технологий, появившихся в 2016 году,
которые оказали самое существенное влияние на развитие World Wide Web.
10 место - Media Stream API
Web браузер обычно представляют себе, как приложение, умеющее только отображать гипертекст в своём окне. Однако, на самом деле возможности современных браузеров уходят гораздо дальше. Например, Media Router, встроенный в браузер Google Chrome с помощью реализации Web стандарта Media Stream API может превратить любой гаджет в медиа центр, транслируя изображения своих вкладок, подключенных видеокамер, а также видео потоки с других удалённых компьютеров, через TCP/IP, USB, HDMI, DP, DVI, на неограниченное число мониторов, проекторов, телевизоров и управляемых дисплеев.
9 место - Rich Communication Services (RCS)
Google вложил огромные усилия в разработку и стандартизацию глобального протокола WebRTC, который позволяет объединить в себе все существующие типы телекоммуникаций, от факса и проводного телефона с тоновым набором, до много поточных видеоконференций и трансляций реального масштаба времени. По этой причине, такие WebRTC клиенты, как Google Hangouts, могут звонить на обычные телефоны и подключаться к видеоконференции через стандартный шлюз на телефонной станции.
Операторы связи по всему миру пока воздерживаются от повсеместной установки шлюзов WebRTC и перехода на единый протокол. Тем не менее, большинством голосов всемирный союз операторов связи (GSMA) выбрал Google единым оператором протокола RCS для обмена текстовыми и мультимедийными сообщениями всех видов, включая SMS и MMS.
Пусть RCS позволяет унифицировать лишь десятую часть того, на что способен WebRTC, однако даже полная унификация протокола обмена всех мессенджеров на смартфонах - это большой шаг вперёд.
Операторы связи по всему миру пока воздерживаются от повсеместной установки шлюзов WebRTC и перехода на единый протокол. Тем не менее, большинством голосов всемирный союз операторов связи (GSMA) выбрал Google единым оператором протокола RCS для обмена текстовыми и мультимедийными сообщениями всех видов, включая SMS и MMS.
Пусть RCS позволяет унифицировать лишь десятую часть того, на что способен WebRTC, однако даже полная унификация протокола обмена всех мессенджеров на смартфонах - это большой шаг вперёд.
Благодаря этому, теперь любое Web приложение для чата, поддерживающее RCS, например Google Allo, сможет бесплатно посылать текстовые сообщения и картинки на большинство сотовых телефонов по всему миру.
8 место - FIDO U2F
Встроенный в Google Chrome ещё три года назад Web протокол двух факторной аутентификации FIDO U2F позволяет защищать с помощью надёжного USB ключа неограниченное число аккаунтов пользователя, в т.ч. Gmail, Dropbox, GitHub и пр. Даже если злоумышленник узнает все ваши логины и пароли, он не сможет войти в ваши аккаунты, защищённые аппаратным ключом FIDO U2F со своего компьютера, как бы не старался.
Однако, до 2016 года, поддержка FIDO U2F ограничивалась со стороны браузера только Google Chrome, а со стороны производителей ключей только компанией Yubico. Теперь же стандарт FIDO U2F стал поддерживаться полностью браузером Opera и через расширение браузером Firefox. Полку производителей ключей авторизации также прибыло и Web стандарт FIDO U2F теперь можно считать состоявшимся не только де-юре, но и де-факто.
Однако, до 2016 года, поддержка FIDO U2F ограничивалась со стороны браузера только Google Chrome, а со стороны производителей ключей только компанией Yubico. Теперь же стандарт FIDO U2F стал поддерживаться полностью браузером Opera и через расширение браузером Firefox. Полку производителей ключей авторизации также прибыло и Web стандарт FIDO U2F теперь можно считать состоявшимся не только де-юре, но и де-факто.
7 место - Google Chrome Standard Edition
В области Web технологий браузер Chrome бежит впереди всех остальных, включая в себя множество революционных протоколов, иногда за несколько лет до их стандартизации всеми остальными производителями. К сожалению, не все, даже самые продвинутые технологии Chrome, находят понимание у других участников рынка, поэтому некоторые из них никогда не появляются в других браузерах вовсе, а стандартизация и повсеместное внедрение других растягивается на годы.
До последнего времени браузер Chrome поддерживал все Web технологии, которые когда-либо были им внедрены, однако с 2016 года Google решил изменить эту политику. Теперь на всех платформах, кроме Chrome OS, браузер Google Chrome будет поддерживать только стандартные Web протоколы и расширения, а полный набор протоколов, включая как старые так и не вошедшие в стандарты, так и новые перспективные, будут поддерживаться только в версии для Chrome OS. По этой причине, самые функционально продвинутые версии Web приложений будут доступны сразу только тем, кто купит себе Chromebook, а на другие платформы они будут переходить только по мере стандартизации их другими производителями (т.е. иногда пользователям Windows придётся подождать Web приложений на новых стандартах несколько лет).
6 место - Android apps on Chrome OS
Появление в 2016 году возможности запускать приложения Android на Chrome OS само по себе не относиться к развитию Web технологий, однако, является фактическим финалом развития большого множества различных Web технологий, которые были внедрены ранее, чтобы обеспечить паритет функциональных возможностей Web приложений с обычными приложениями. Среди них возможность работы Web приложений с USB, Bluetooth, GPS, магнитометром, акселерометром, стилусом, телефонными вызовами и т.д.
Теперь, если очень захотеть, можно заменить все приложения на Android смартфоне на Web приложения и этот процесс взаимной конвергенции уже начался. Некоторые стандартные Google приложения для смартфонов Android уже являются Web приложениями, например Google Maps. Напомню, что ранее, Mozilla, используя значительный прогресс в современных Web стандартах, вообще выпустила смартфон исключительно на Web технологиях. Возможно следующим производителем Web смартфонов может стать Google, если конечно сочтёт это экономически целесообразным.
5 место - SVG 2.0
Стандарт SVG имеет, наверное, самых верных поклонников, среди всех стандартов для 2D графики. Тот факт, что с помощью SVG даже школьник может научиться рисовать простейшие фигуры на Web странице всего за день, делает его вторым по популярности среди начинающих программистов после HTML.
Тем не менее, с момента появления версии SVG 1.0 до выхода в 2016 году версии кандидата SVG 2.0 прошла по меркам Web целая вечность. Поскольку изначально SVG является фактически самым старым Web стандартом для графики, он настолько же прост (если не сказать примитивен), насколько и губителен для стройного кода движка рендеринга браузеров. По этой причине, все эти годы между пламенными любителями SVG с одной стороны и производителями браузеров с другой стороны шла борьба за и против его развития. В итоге, новая версия стандарта SVG 2.0 получилась почти полностью выхолощенной, оставив реализацию многих сложных вещей другим стандартам. Более того, весь раздел анимации SMIL полностью исключён из версии SVG 2.0 и перешёл в стандарт CSS Animations.
Тем не менее, с момента появления версии SVG 1.0 до выхода в 2016 году версии кандидата SVG 2.0 прошла по меркам Web целая вечность. Поскольку изначально SVG является фактически самым старым Web стандартом для графики, он настолько же прост (если не сказать примитивен), насколько и губителен для стройного кода движка рендеринга браузеров. По этой причине, все эти годы между пламенными любителями SVG с одной стороны и производителями браузеров с другой стороны шла борьба за и против его развития. В итоге, новая версия стандарта SVG 2.0 получилась почти полностью выхолощенной, оставив реализацию многих сложных вещей другим стандартам. Более того, весь раздел анимации SMIL полностью исключён из версии SVG 2.0 и перешёл в стандарт CSS Animations.
Таким образом, принятие стандарта SVG 2.0 с одной стороны дало его поклонникам наконец небольшой шаг вперёд, но с другой стороны является полной победой производителей браузеров и основного дерева графических Web стандартов CSS и WebGL.
4 место - Polymer 2.0
Стандарт CSS, при всей его выразительности, имеет один существенный недостаток, а именно, изменение стилей в одной части страницы, может привести к непреднамеренному сбою стилей в любой другой её части. Для того, чтобы исправить этот недостаток, Google предложил технологию Polymer, суть которой заключается в том, чтобы разделить Web страницу на отдельные независимые компоненты "кирпичики", из которых затем можно будет строить множество Web приложений не подвергая опасности стили основного приложения и других компонентов. С учётом изменений в базовых стандартах Shadow DOM и Custom Elements в 2016 году вышла обновлённая версия Polymer 2.0, которая поддерживается всеми основными браузерами.
С помощью Polymer 2.0 Web приложение могут разрабатывать параллельно не только сплочённая группа программистов, но и совершенно независимые участники. Повторное использование компонент Polymer 2.0 приводит не только к общему повышению качества, за счёт их глубокой проработки, но также приводит к драматическому увеличению производительности труда Web программистов. В совокупности это неминуемо должно привести к появлению множества качественных Web приложений в ближайшие годы.
С помощью Polymer 2.0 Web приложение могут разрабатывать параллельно не только сплочённая группа программистов, но и совершенно независимые участники. Повторное использование компонент Polymer 2.0 приводит не только к общему повышению качества, за счёт их глубокой проработки, но также приводит к драматическому увеличению производительности труда Web программистов. В совокупности это неминуемо должно привести к появлению множества качественных Web приложений в ближайшие годы.
3 место - Service Workers
Вероятно вам доводилось бывать в ситуации, когда нет связи и при этом нужно запустить в браузере Web приложение? С помощью технологий стандарта Service Workers теперь вы можете смотреть фильмы, читать новости, редактировать документы и даже играть в 3D игры в браузере при полном отсутствии связи.
Более того, в совокупности с другими Web технологиями, вы можете создавать такие Web приложения, которые устанавливаются на ваши устройства после первого обращения и работают полностью автономно, как и стандартные приложения "без окна браузера".
Суть технологии Service Workers очень проста. При первом запуске Web приложения Service Worker регистрируется локально на устройстве и загружает в кэш браузера минимально необходимый набор данных для работы Web приложения в оффлайн режиме. При втором и последующих запусках Service Worker работает, как шлюз между Web приложением и Интернет, снабжая приложение свежими данными, при наличии связи, и данными из кэша, при её отсутствии.
При этом, в оффлайн режиме Service Worker способен обновлять данные кэша, согласно действиям пользователя, а потом синхронизировать кэш онлайн, что позволяет редактировать документы и таблицы данных, даже когда у вас нет связи.
Суть технологии Service Workers очень проста. При первом запуске Web приложения Service Worker регистрируется локально на устройстве и загружает в кэш браузера минимально необходимый набор данных для работы Web приложения в оффлайн режиме. При втором и последующих запусках Service Worker работает, как шлюз между Web приложением и Интернет, снабжая приложение свежими данными, при наличии связи, и данными из кэша, при её отсутствии.
При этом, в оффлайн режиме Service Worker способен обновлять данные кэша, согласно действиям пользователя, а потом синхронизировать кэш онлайн, что позволяет редактировать документы и таблицы данных, даже когда у вас нет связи.
2 место - Web Assembly
Web приложения в настоящий момент по функциональности не только ни в чём не уступают стандартным приложениям, но иногда даже превосходят их. Тем не менее, в Web пока ещё немного высококачественных 3D игр, а тяжёлых систем проектирования САПР вообще можно пересчитать по пальцам.
Основная проблема здесь вовсе не в том, что браузер что-то не может отобразить (здесь как раз всё замечательно), а в самой сути языка JavaScript, который изначально был сделан сверх гибким, чтобы развиваться полностью свободно во всех направлениях, как HTML и CSS. И эта гибкость JavaScript далась дорогой ценой. Когда вы можете переопределить на лету во время асинхронного исполнения кода, практически любую конструкцию языка до неузнаваемости, вы обязаны проверять тип всех операндов выражения фактически при каждой операции.
В результате JavaScript, который благодаря своей гибкости стал вторым базовым языком для всех остальных языков после C++, проигрывает по чистой производительности вычислений с целыми числами первому более, чем на порядок.
Технология Web Assembly предлагает для тех приложений, которым не хватает производительности чистого JavaScript, предварительно откомпилировать часть особенно критичного кода в машинный код и использовать эти модули для вызова сверх производительных функций через интерфейс JavaScript.
В результате, там где обычное Web приложение может отрисовывать картинку не более 5 кадров в секунду, Web приложение с модулями Web Assembly может легко отобразить и 100 кадров в секунду, что даёт зелёный свет для производителей игр и не только.
Основная проблема здесь вовсе не в том, что браузер что-то не может отобразить (здесь как раз всё замечательно), а в самой сути языка JavaScript, который изначально был сделан сверх гибким, чтобы развиваться полностью свободно во всех направлениях, как HTML и CSS. И эта гибкость JavaScript далась дорогой ценой. Когда вы можете переопределить на лету во время асинхронного исполнения кода, практически любую конструкцию языка до неузнаваемости, вы обязаны проверять тип всех операндов выражения фактически при каждой операции.
В результате JavaScript, который благодаря своей гибкости стал вторым базовым языком для всех остальных языков после C++, проигрывает по чистой производительности вычислений с целыми числами первому более, чем на порядок.
Технология Web Assembly предлагает для тех приложений, которым не хватает производительности чистого JavaScript, предварительно откомпилировать часть особенно критичного кода в машинный код и использовать эти модули для вызова сверх производительных функций через интерфейс JavaScript.
В результате, там где обычное Web приложение может отрисовывать картинку не более 5 кадров в секунду, Web приложение с модулями Web Assembly может легко отобразить и 100 кадров в секунду, что даёт зелёный свет для производителей игр и не только.
1 место - WebGL 2.0
Разработка стандарта WebGL 2.0 велась много лет, хотя сам по себе, он является лишь верхней частью общего стека из трёх графических протоколов (на подобие сетевой модели OSI).
WebGL 2.0 предназначен для выполнения всех графических задач Web приложением, используя любое доступное аппаратное обеспечение. При этом, различия в архитектуре процессоров и графических чипов нивелирует протокол промежуточного уровня SPIR-V.
Команды WebGL 2.0 выполняются с использованием всех доступных потоков процессора, а также буферов GPU, независимо от их типа. В результате, Web приложение, написанное согласно стандарта WebGL 2.0, может работать на любом типе устройств от смартфона и планшета, до ПК и графического сервера, с множеством разных GPU. Более того, оно способно функционировать в полностью виртуальной среде, перелетая с узла на узел с разными типами процессоров и графических чипов без остановки, и даже использовать разные типы вычислительных и графических устройств параллельно в разных потоках.
Вместе с тем, приложение соответствующее стандарту WebGL 2.0, в отличие от предыдущей версии, может тонко программировать шейдеры GPU, что позволяет получить картинку самого высокого качества, которая включает объёмные текстуры, физически корректное преломление света и динамические тени.
WebGL 2.0 предназначен для выполнения всех графических задач Web приложением, используя любое доступное аппаратное обеспечение. При этом, различия в архитектуре процессоров и графических чипов нивелирует протокол промежуточного уровня SPIR-V.
Команды WebGL 2.0 выполняются с использованием всех доступных потоков процессора, а также буферов GPU, независимо от их типа. В результате, Web приложение, написанное согласно стандарта WebGL 2.0, может работать на любом типе устройств от смартфона и планшета, до ПК и графического сервера, с множеством разных GPU. Более того, оно способно функционировать в полностью виртуальной среде, перелетая с узла на узел с разными типами процессоров и графических чипов без остановки, и даже использовать разные типы вычислительных и графических устройств параллельно в разных потоках.
Вместе с тем, приложение соответствующее стандарту WebGL 2.0, в отличие от предыдущей версии, может тонко программировать шейдеры GPU, что позволяет получить картинку самого высокого качества, которая включает объёмные текстуры, физически корректное преломление света и динамические тени.
В результате, стандарт WebGL 2.0, совместно с технологией Web Assembly, позволяет отображать в окне браузера графику самого высокого качества в реальном масштабе времени.
Новые графические возможности WebGL 2.0 не могли остаться незамеченными индустрией 3D игр, поэтому уже сейчас графические движки Unity и Unreal позволяют начать разработку игр для Web с использованием этой передовой технологии.
Новые графические возможности WebGL 2.0 не могли остаться незамеченными индустрией 3D игр, поэтому уже сейчас графические движки Unity и Unreal позволяют начать разработку игр для Web с использованием этой передовой технологии.