По непонятным мне на данный момент причинам, похоже, что многие разработчики, присутствовавшие на недавней конференции PDC-2010 (Крупнейшая конференция Microsoft для разработчиков — Прим. переводчика), были сильно удивлены тем, что Microsoft решила сместить акценты в разработке RIA с Silverlight на HTML5. Хотя это удивление разработчиков не менее удивительно — на недавних конференциях и анонсах (например, анонсы развития Internet Explorer 9 — Прим. переводчика) представители Microsoft дали понять, хотя и не совсем явно, что приоритеты меняются на более кросс-платформенное решение. В чём же секрет?
Когда Microsoft выпустила первую версию Silverlight в 2007 году, подключаемый модуль позиционировался прессой как аналог Adobe Flash (хотя существует ряд других подобных решений: Adobe AIR, JavaFX, Google Gears (разработка которого закрыта, часть кода стала основой для HTML5), OpenLaszlo и др. — Прим. переводчика). Хотя определённые различия всё же есть. Silverlight-таки нацелен в сторону разработчиков-программистов, тогда как Adobe Flash даёт крен в сторону веб-дизайнеров, хотя обе платформы охватывали один и тот же рынок сложных интерактивных приложений, поставляемых через веб-браузер.
Наивных разработчиков, пришедших послушать выступления, посвящённые MS Silverlight, постигло разочарование. Боб Маглиа (президент серверного подразделения Microsoft — Прим. переводчика) заявил, что стратегия развития Microsoft в плане разработки RIA сместилась на HTML5.
В заявлении на ZDNet, в котором CEO Стив Балмер и Боб Маглиа объявили, что Silverlight будет продолжать развиваться, но вот в Сети приоритет получит язык разметки HTML5.
Вполне можно понять разработчиков, которые польстились на многократные заверения Microsoft в недавнем прошлом, что Silverlight выбьет Flash со сцены и станет необычайно перспективным мощным средством для реализации проектов. А теперь разработчики, которые собрались создавать свои проекты на базе Silverlight, слышат от компании, что, де-мол, да Silverlight хорош, но мы на него забьём, ибо HTML5 хлёще и круче. Да, есть от чего скрипеть зубами, но, надо быть объективным — Microsoft об этом говорила и раньше (Во время разработки браузера Gazelle который ныне трансформировался в абсолютно иной проект) и первых превью IE9 некоторые разработчики в своих блогах и интервью указывали, что HTML5 будет основой — Прим. переводчика).
Разработка IE 9 должна была стать первым звоночком программистам, нацелившимся на Silverlight. Microsoft трубила на каждом шагу о том, что браузер соответствует просто всем веб-стандартам, что IE лучше всех поддерживает CSS3 и HTML5 (Тогда это было чистым враньем, в чём многие интернет-ресурсы уличали корпорацию, хотя сейчас это реальность. IE 9 PP6 ничуть не уступают в среднем Chromium 9. Тестирование Chromium 9 на W3C проводил я, так что не пинайте сильно — Прим. переводчика). Теперь же Microsoft почти создала высокопроизводительный, совместимый с веб-стандартами браузер, который не просто звоночек разработчикам RIA на Silverlight, а просто колокол.
При этом ладно бы команда разработчиков браузера об этом твердила, так ещё и разработчики Silverlight, во-первых, мягко намекают о том, что Silverlight станет лишь небольшой примочкой для HTML5, ибо новый язык разметки, например, пока не умеет передавать потоковое DRM-защищённое видео. То есть, в итоге, Silverlight даже не позиционируется конкурентом HTML5, а остаётся конкурентом Adobe Flash, который пока занимает господствующее положение.
Во-вторых, разработчики Silverlight говорят об автономном использовании модуля. Отдельно от браузера плагин можно использовать как платформу для настольных приложений (Пример Seesmic) или же, что куда важнее, написание приложений для Windows Phone 7. Игры, конечно, удобнее будет писать на XNA, но неигровые приложения для новой мобильной ОС проще писать на Silverlight (Об этом много говорилось на конференции День Студента в МГУ 1 ноября, и будет говориться завтра в Киеве — Прим. переводчика).
По сути, Боб Маглия не объявлял о новых стратегиях, а просто разложил всё по полочкам. Silverlight уезжает на Windows Phone, а всё остальное — на откуп HTML5. В чём же причина? А вот в чём:
Проблема Apple
Несмотря на все попытки Microsoft сделать Silverlight кросс-платформенным, задача не удалась. Windows был охвачен, Mac OS X с горем пополам поддержали, Linux отдали в руки Novell, которая принялась писать костыль в виде Moonlight, лишь «пародируя» закрытый Silverlight. Сложности начались на мобильном рынке, а именно с iOS. Как известно, Apple запретила исполнять плагины в среде мобильного Safari, что вызвало шумиху у пользователей приложений на Adobe Flash, хотя затрагивало и Silverlight, но в виду малой популярности модуля, большого резонанса это не вызвало. Получается, что Microsoft отдаёт без боя рынок интернет-планшетов и дико популярных iPhone. (Microsoft пытается стимулировать производителей выпускать планшеты под Windows 7, но на фоне Android, iOS, webOS, Jolicloud это выглядит бледно — Прим. переводчика). Поэтому единственная возможность закрепиться там — HTML5.
Похожая проблема настигла и Flash, но Adobe вывернулась рядом обходящих инструментов (а также ряд сторонних разработок фанатов и других разработчиков, как, например, браузер SkyFire, который по образу и подобию Opera Mini со сжатием трафика будет обрабатывать Flash-контент у себя на серверах — Прим. переводчика).
И всё-таки неясно, что же будет основным фокусом для «Сервелата»: автономные приложения для ПК, приложения для Windows Phone 7 или «примочка» над HTML5?
Новое направление развития Silverlight
Как ни парадоксально, но Silverlight остался не менее важен, чем раньше, хотя отнюдь не в том направлении, как первоначально предполагалось.
Вся эта клоунада в прошлом, где Silverlight позиционировался, как «убийца Flash» не выглядела хоть сколько-нибудь серьёзной. У Adobe есть удобный бесплатный открытый фреймворк Adobe Flex, который вытеснить Visual Studio и Expression Blend очень трудно, которые, к тому же, платны или содержат ряд ограничений. При таких раскладах вытеснить Flash очень трудно. Поэтому отдача всего веб-сегмента языку HTML5 вполне оправдано. Объективно Silverlight не имел сколько-нибудь больших шансов вытеснить Flash.
Silverlight же имеет большие шансы в качестве платформы для разработки приложений под Windows Phone 7. И тут возникает большой вопрос: сможет ли Windows Phone 7 откусить кусок от пирога, который яростно делят Nokia, Google, Apple, Research in Motion и HP со своей webOS? Если нет, то все средства, вложенные в разработку Silverlight окажутся потрачены впустую. Но у Microsoft есть поводы позитивно мыслить — рынок смартфонов потенциально перспективный рынок (за год доля мобильных устройств в интернет-трафике выросла на 2% — Прим. переводчика). Если в динамике рынка Microsoft удастся откусить кусочек пирога и его удержать в зубах, то появятся шансы для экспансии на доли конкурентов. Имея столь мощную платформу для разработки приложений как Silverlight, у MS есть будущее в этом сегменте (И именно поэтому на всех конференциях и блогах представители Microsoft отчаянно скандируют «Начинайте программировать под Windows Phone прямо сейчас!». Если не будет сторонних приложений, то WP 7 умрёт не родившись толком — Прим. переводчика).
Silverlight на рабочем столе
Silverlght далеко не худший фреймворк для разработки автономных приложений под персональные компьютеры, учитывая Expression Blend и Visual Studio — мощнейшие инструменты для разработки. Вместе с ними можно относительно легко создавать дизайн и кодовую базу для подобных приложений на Silverlight. Проблема в другом — в политике Microsoft.
На последнем PDC-2010 мало говорилось о Silverlight, но о настольных приложениях не говорили вообще. Да, этому есть оправдания: в этом году у Microsoft основная тема — Windows Phone 7 и Windows Azure, которые были приоритетными, а вот о Windows 7 подзабыли уже. О разработке Windows 8 мы услышим скорее всего в следующем году и то не факт. Отсюда ясно, что Microsoft «улетела» в «облака», отправив всё остальное в долгий ящик.
Настольный Silverlight зверь особый. Он является по сути производной от .NET Framework и Windows Presentation Foundation (WPF). Он исключает функции, которые не нужны за пределами веб-приложений для получения более быстрого и производительного выполнения. То есть, если вы можете писать приложения на C# или WPF, то вы без труда сможете писать и на Silverlight, и наоборот.
Тем не менее, изначально модуль Silverlight задумывался плагином для браузера. Да, разработчики могут выбирать между .NET/WPF и Silverlight (у него даже преимущества для работы под Mac OS X), но с помощью более мощных .NET/WPF куда шире диапазон разрабатываемых приложений. По функциональности WPF и Silverlight в некоторых аспектах перекрывают друг друга.
Такое «соперничество» между двумя продуктами показательны в некоторых недочётах политики Microsoft на поприще настольных приложений. Вернёмся в прошлое, когда только начала разрабатываться Windows Vista, тогда известная как Longhorn. Тогда код .NET расценивался как будущее в разработке Windows-приложений, и всё было ясно: WPF — платформа разработки приложений, а Silverlight (тогда ещё WPF/Everywhere) был урезанной версией для мультиплатформенных веб-приложений. В первых сборках Windows Vista даже были возможности для написания масштабируемых WPF-приложений, что оказалось бы мощным рывком к современной концепции «трёх экранов»
Однако, как известно, сам проект Longhorn оказался перезапущен, была выпущена пресловутая Windows Vista, а .NET оказался в глубокой тени. Выглядело это так, будто Microsoft боялась использовать .NET, во всяком случае на настольных системах. Вместо того, чтобы выпустить систему, построенную на базе WPF, WPF оказался проигнорированным, и только с запуском Visual Studio 2010, Microsoft начала делать приложения, построенные на этой технологии. При этом, в Windows Vista было удалено то самое умное масштабирование при установке первого пакета обновлений. По каким причинам — непонятно.
Глядя на все эти метания, не совсем ясно, что собирается делать Microsoft (похоже даже она не сильно понимает, что нужно делать). Основные принципы WPF очень внушительны, и разработка Windows-приложений на WPF куда предпочтительнее, чем под Win32, хотя остаётся ещё немало сомнений.
С Windows 7 редмондский гигант предоставил технологию Direct2D, которую не используют ни WPF, ни Silverlight, но которая лежит в основе высокопроизводительной обработки HTML5 в Internet Explorer 9. Получается, что WPF может умереть, хотя может и сосуществовать с Silverlight вместе, или же, наоборот, обе технологии могут уйти в тень. До появления Windows Phone 7 я думал, что случится именно последнее, но теперь с мобильной ОС и Visual Studio Lightswitch я понимаю, что WPF уйдёт на задворки, уступив Silverlight.
Silverlight в Сети всё ещё имеет смысл
Теперь, когда Silverlight потерял приоритет в разработке веб-приложений, и имеет неясное будущее на настольных приложениях, можно видеть разочарование многих разработчиков, сообразивших, что их приложения теперь не сильно-то нужны в том виде, в котором они задумывались. Самое странное и озадачивающее это то, что стратегия Microsoft не совсем ясна, так как они заявляют лишь общие фразы, не раскрывая их конкретикой.
Я не думаю, что остались какие-то сомнения в том, что HTML5 займёт господствующее положение на рынке (политика Google, Apple и действия Adobe действительно не позволяют в этом усомниться — Прим. переводчика), но не сейчас. Пока Internet Explorer занимает господствующее положение на рынке браузеров, а поддержка HTML5 в них колеблется от нулевой (Internet Explorer 6) до незначительной (Internet Explorer 8)
Да, Internet Explorer 9 значительно и качественно изменяет существующую поддержку (а точнее не поддержку) веб-стандартов браузером, но абсолютно неизвестно, когда он будет выпущен официально. За 18 месяцев существования Internet Explorer 8 отвоевал около 50% общей доли, тогда как оставшиеся 50% делят морально и технически устаревшие IE 6/7. То есть, даже, если Microsoft прямо сейчас выпустит «девятку», то пройдёт около года, пока она займёт какую-то значимую долю. Тогда как Silverlight и Flash доступны прямо сейчас любой версии браузера.
Даже если бы сейчас HTML5 занимал большую часть рынка веб-технологий, то разработка была бы затруднённой. Многие спецификации существуют, но далеки от завершающей стадии разработки, браузеры на разных движках воспринимают разметку по своему, показывая абсолютно разный результат. Получается, что у разработчиков два выхода — работать с HTML5 и тратить кучу времени на то, чтобы настраивать, пилить, тестировать разметку в каждом браузере или же взять плагин Silverlight, который выглядит одинаково во всех поддерживаемых браузерах и системах. И не забывайте о том, что толковых средств разработки и дизайна на HTML5 пока не придумали. Да, Adobe представила средство для конвертации Flash в HTML5, но это инструмент будущего, но никак не сегодняшнего дня, тогда как и Microsoft, и Adobe имеют мощные средства разработки и надстройки к ним для работы с Silverlight и Flash соответственно. Поэтому не стоит рьяно закапывать оба модуля.
Не стоит также забывать о том, что HTML5 многое не умеет. Например, DRM-защищённое видео, которое используется в сервисе Hulu. Потоковое видео очень трудно создавать с помощью HTML5, да и работа с веб-камерами и микрофонами очень далека от идеала. Короче, HTML5 многое не умеет из того, что умеют Flash и Silverlight.
HTML5, или даже нечто, что может вскоре появиться на его основе не сможет занять большую популярность даже в следующем году и, возможно, через год. Ещё немало направлений, где Flash и Silverlight намного предпочтительнее HTML5 как плагины и как средства разработки.
На таком фоне решение Microsoft начать сворачивать веб-направленность Silverlight выглядит по меньшей мере страннно. Да, через год это было бы необходимо, но сейчас? Консорциум Всемирной Паутины (W3C) принимает большие усилия для создания стандарта, но работы столь далеки от завершения, что убивать такие технологии как Silverlight и Flash, не имея полноценной замены — просто самое настоящее безумие.
А вот Microsoft пора принять решение и перестать пудрить мозги разработчикам. Что же станет платформой для написания приложения на десктопах? Win32 (с или без Direct2D уже не важно)? Silverlight? WPF? Или вообще что-то другое? Три способа разработки, извините, но это жесть. Альтернатива хорошо, но если сегодня три способа разработки, и разработчики разделятся поровну и начнут писать приложения, а завтра Microsoft закопает два способа, что же, разработчикам сидеть у разбитого корыта? Если будущее за Silverlight и WPF, то подключите к ним Direct2D, чтоб работали шустро и выглядели одинаково с другими приложениями, но если на десктопах не они будущее, то пусть заявят об этом разработчикам, чтобы они были готовы к переменам, а не водить их за нос.
Хотя можно догадаться о планах Microsoft. На данный момент Direct2D лучший способ написания разработчиками высокопроизводительных пользовательских интерфейсов, а также лучший способ для работы с HTML5 в IE9. Сможет ли Редмонд охватить своим взгядом и возможностями весь HTML5, заткнуть вместе с W3C дыры, которые не позволяют HTML5 «одолеть» Flash и Silverlight, а затем всё это использовать в Windows? Нечто подобное начинает делать Apple в iOS.
Странные вещи происходят, странные.
Статья Питера Брайта, разработчика приложений на C++ и C#. Комментарии с пометкой «Прим. переводчика» мои.
Прошу простить возможные ошибки перевода, ибо немного торопился. Статье ещё дня нету.