Tuesday, June 28, 2011

Будущее Silverlight

Очень странно наблюдать поднявшуюся в последний месяц истерию по поводу того, что Microsoft якобы “разочаровался в WPF/Silverlight” и планирует смену курса в сторону набирающего популярность HTML5. Тема вовсю обсуждается на форумах MSDN, в комментариях серьезных блоггеров, на Хабре и даже в твиттере. Несмотря на явную невозможность нативной разработки под Windows при помощи ыHTML5/JS, у этой истерии, безусловно, есть корни. Осенью прошлого года официальные лица Microsoft уже обронили несколько фраз о переосмыслении стратегии развития Silverlight, а в начале июня подлили масла в огонь, показав Windows 8 с возможностью разработки на HTML5/JS и ни словом не обмолвившись о Silverlight. Если погуглить по фразе “Windows 8 silverlight”, то можно найти кучу криков о смерти Silverlight и плач тысяч разработчиков, которые выбрали Silverlight своей основной платформой для разработки и теперь считают себя брошенными на произвол судьбы. Добил фанов технологии .NET Community Manager Pete Brown, который высказался ясно и в то же время очень неопределенно:

“You all saw a very small technology demo of Windows 8, and a brief press release. We’re all being quiet right now because we can’t comment on this. It’s not because we don’t care, aren’t listening, have given up, or are agreeing or disagreeing with you on something. All I can say for now is to please wait until September. If we say more before then, that will be great, but there are no promises (and I’m not aware of any plans) to say more right now. I’m very sorry that there’s nothing else to share at the moment. I know that answer is terrible, but it’s all that we can say right now. Seriously.”

Сентябрь, о котором идет речь – это конференция Build, на которой ожидается релиз Silverlight 5, Windows Phone 7 Mango, а также первые настоящие презентации Windows 8 с объяснениями дальнейшей стратегии компании.

Безусловно, можно подождать еще 2.5 месяца и узнать, какую роль Microsoft отводит для Silverlight в своей новой концепции. Но ждать еще долго, а некоторые решения нужно принимать уже сейчас. Попробуем разобраться сами.

Итак, что у нас есть из не очень хорошего:

  1. Microsoft, безусловно, немного разочарована скоростью распространения Silverlight и его положением на рынке. И хотя процент установки Silverlight в браузерах уже достаточно высок (на данный момент около 75%, http://www.riastats.com/), но он все равно еще недостаточен и не дает технологии стать по-настоящему популярной.
  2. Другая проблема Silverlight – его неполная кроссплатформенность. Поддержка Windows и Mac – это, конечно, где-то 90-95% рынка десктопов (а, может, и больше, если верить http://gs.statcounter.com/#os-ww-monthly-201005-201105), но с точки зрения разработки широкопользовательских веб-приложений остается непокрытым весь Linux’овый зоопарк. Не добавляет очков и слабая поддержка SEO.
  3. На мобильных платформах подержка Silverlight вообще стремится к нулю. Ни iOS, ни Blackberry, ни Android не поддерживают Silverlight и вряд ли будут стремиться к этому. Единственная платформа, где он поддерживается – это WP7, правда, не в браузере. Но доля WP7 на рынке мобильных устройств (http://itc.ua/news/gartner_android_yavlyaetsya_samoj_populyarnoj_os_dlya_smartfonov_53536) и количество заказов на разработку WP7 приложений пока настолько малы, что серьезно раздумывать о карьере разработчика мобильных приложений пока не получается.

В то же время несмотря на все эти недостатки Silverlight уже занял свою определенную нишу, где он очень силен, в первую очередь благодаря скорости разработки и возможностям, недоступным стандартному HTML/JS клиенту:

  1. Enterprise и LOB RIA приложения (нивелируются проблемы слабой кроссплатформенности и распространенности)
  2. веб-приложения, в которых пользователи готовы установить плагин ради получения доступа к продвинутым возможностям, а не уйти к конкурентам (не e-commerce)
  3. мультимедиа-приложения с красивой и сложной анимацией, поддержкой video streaming
  4. кроме того, Silverlight пока остается основной платформой для разработки под Windows Phone 7

С чем же связано то, что Microsoft, вложившая 4 года и миллионы долларов в разработку и продвижение кроссплатформенной .NET-технологии, потихоньку смотрит в сторону HTML5/JS? И что же все-таки будет с Silverlight дальше?

Во-первых, любой компании, которая производит ОС, важно привлекать как можно большее количество разработчиков на свою сторону. Silverlight и WPF требуют от не .NET-разработчиков изучения слишком многого. А возможность сделать пусть и простое, но все же приложение под Windows 8 на HTML5/JS – это шанс. Тем более, что Windows 8 позиционируется и как операционка для планшетов – а это очень перспективный рынок. Уверен на 99%, что в сентябре на Build будет сказано о полной поддержке WPF (а куда ж он денется?), а также Silverlight как минимум на уровне разработки таких же приложений, которые будут разрабатываться на HTML5/JS.

Во-вторых, есть ощущение, что Microsoft пойдет на еще один непопулярный, но очень важный с точки зрения развития своей мобильной платформы шаг – даст возможность разрабатывать нативные приложения на HTML5/JS в Windows Phone. Думаю, начиная с восьмой версии, чтобы поддержать версионирование, но, может, и в Mango (7.5) добавят. Криков о помощи будет еще больше, но Microsoft нужно догонять убегающие iOS и Android. Разработчики мобильных приложений под iOS и Android не торопятся переносить свои приложения под WP7 в том числе и потому, что это требует совсем других навыков. Если бы у Microsoft было хотя бы 40% рынка, они могли бы закрыть глаза на простоту разработки, но с текущими 6% им некуда деваться.

В-третьих, Silverlight никуда не уйдет из web’а в ближайшие 3-5 лет. Его доля будет по-прежнему неуклонно расти, приложения будут разрабатываться, но вот из своей ниши он вряд ли выйдет. Этому будет мешать развитие HTML5 и рост рынка веб-приложений под мобильные устройства. Конечно, Microsoft может попробовать разработать Silverlight-плагины для мобильных операционных систем и браузеров, но это огромные деньги, а эффекта практически не будет.

В поддержку Silverlight на нативном уровне верится еще меньше. Такое возможно лишь на Android, и то лишь благодаря Mono, который и сам находится в непонятном статусе. Еще возможно продвижение Silverlight на Symbian, благо с Nokia есть договор, но какой смысл? Ведь есть готовый WP7, который можно ставить на устройства. На фоне же прогнозов о росте использования мобильных веб-приложений и снижения нативной разработки (это банально намного проще и дешевле!) смысла вкладываться в эту сферу вообще нет.

Ну, и в-четвертых, отдельно стоит сказать пару слов о Silverlight vs. HTML5, вернее даже plugins (Flash/Silverlight) vs. HTML5 (это отдельная фишка: под угрозой HTML5 сейчас объединяются даже ранее враждовавшие разработчики Flash/Flex и Silverlight :)). На эту тему сломано уже очень много копий (почитайте отдельно, если вам интересно), но ясно одно: HTML5 не покрывает всех возможностей Silverlight и Flash/Flex, поэтому их рано списывать со счетов. Кроме того, как все правильно отмечают, плагины пополняются новой функциональностью быстрее, чем развивается HTML и обновляются версии браузеров. Если же отвечать на вопрос: что лучше использовать в качестве клиента в каждый конкретный момент времени, то советую почитать два отличных поста:

Лично я себя намного комфортнее чувствую в разработке обычных ASP.NET MVC приложений, чем Silverlight, но это не значит, что нет приложений, для которых использование Silverlight будет более выгодным или дешевым. Особенно если мы говорим о портировании WPF-приложений в веб.

А вы что думаете по всему этому поводу?

10 comments:

  1. Тут должен был быть неплохой комментарий от Antya (http://antyadev.blogspot.com/), только он исчез:

    "вот в тему еще можно посмотреть видео:

    Круглый стол "Борьба на клиенте - выбор между HTML5, Silverlight, .NET, Win32"
    http://event.msdevcon.ru/materials/RT_903.aspx

    особенно в конце там очень четко говорится о стандартах, их скорость развития и тд...

    в кратце всегда так было и будет, что стандарт будет проигрывать по фичам новым технологиям... вот поэтому и не надо списывать Silverlight, Flash\Flex.

    вот кстате, можно пристмотрется к Unity 3D

    http://unity3d.com/gallery/live-demos/index.html#tropical-paradise

    так вот реально юзабельная штука, нужно в начале только поставить их плеер..

    само создание игр, игрового мира, логики персонажей - ну просто не сравнить там с XNA или еще чем то...
    на HTML 5 такого ждать еще долго.... "

    ReplyDelete
  2. PhotoSynth, Smooth Streaming, Pivot, Deep Zoom, WP7.

    С другой стороны тормознутость html5 и w3c в целом, война браузеров (из-за чего ни один современный браузер не умеет полноценно работать в вебе).

    Как по мне, выбор очевиден для сложных кейсов. А html никуда не денется, просто ему предсказыват великое и светлое будущее, но вот как-то неубедительно получается.

    ReplyDelete
  3. Саша, спасибо, очень глубокий анализ и правильные, имхо, выводы. Думаю, многих Silverlight разработчиков беспокоит возможность потерять свое время, вложенное в изучение платформы. Судя по анализу последней сбежавшей Win 8 в ней лучшие концепции XAMLware не только пристутствуют, но и приобрели усовершенствованные формы (http://www.zdnet.com/blog/microsoft/under-the-windows-8-hood-questions-and-answers-from-the-trenches/9738).

    Что ж до HTML5 - учить точно нужно, хоть сам термин перегружен. Растровая/векторная графика, сокеты и оффлайн режим - это все уже давно есть в плагинах. Но многое из того что есть в плагинах пятому штмлю и не снилось. Однозначно, разработчик будет в выигрыше, если в совершенстве овладеет Flash/Flex + Silverlight + HTML5

    ReplyDelete
  4. Андрей, спасибо за полезную ссылку. Пока читал, в голову пришло несколько мыслей:

    1) Судя по всему, XAML (не WPF или SL, а именно XAML + какие-то стандартные модули для его обслуживания) становится новым стандартом создания UI (DirectUI). Причем, насколько я понял, доступ из нативного кода (С++) тоже будет. Это стратегически правильно, будет единый способ создания UI для всех видов устройств. И как раз здесь девелоперы, разбирающиеся в нем в данный момент времени, получают большой бонус на рынке. Остальным придется либо использовать старые подходы, либо учить с нуля.

    2) Jupiter будет некой общей платформой для запуска как .NET, так и native приложений... Ну и не забываем про HTML5, который тоже вполне может сидеть "on top of it".

    3) Появление собственного app store в Windows должно выглядеть очень привлекательным для Microsoft, тем более на фоне повальной стандартизации этого способа покупки/доставки приложений. Вот только сохранят ли они при этом возможность привычной установки? Или речь идет только о чисто консюмерских приложениях?

    ReplyDelete
  5. Спасибо, всегда читаю Ваши обзоры с удовольствием. По поводу SilverLight добавить нечего, но что касается WPF я хотел бы еще упомянуть рынок встроенных систем. Т.е. различные кассовые терминалы, киоски оплаты, мониторы текущего состояния - типа плазменных экранов, например на автосервисе и многое другое. Там WPF более чем уместен и ему сложно составить конкуренцию. Насколько это объемный рынок не знаю, конечно не настолько как мобильные системы, но наверняка есть тенденция к росту. А Silverlight, как Вы правильно говорите, займет прочное место для Enterprise приложений, а это не так уж и мало.

    ReplyDelete
  6. Спасибо за отзыв. Ваш комментарий заставил меня задуматься над тем, что можно назвать встроенными системами. Я привык к мысли, что это обычно какие-то системные приложения, и когда речь идет об embedded, на ум сразу же приходит С++. А ведь это действительно не так. Более того, если все сложится, у нас скоро стартует проект такого же направления на WPF. И действительно, для создания красивых интерактивных интерфейсов под Windows у WPF нет конкурентов.

    ReplyDelete
  7. Александр, мы следим за вашими обзорами, жалко что Вы давно не писали.

    ReplyDelete
  8. Если честно, просто не знаю, о чем писать :) Какое направление вам интересно?

    ReplyDelete
  9. Все это бред сивой кобылы.....WPF/Silverlight жил и будет жить еще много лет.

    ReplyDelete