Интересный вопрос. Ответ я получил ещё 26 сентября на встрече студентов-партнёров в офисе Microsoft.
Хороший разговор об этом в неофициальном подкасте 9 из Microsoft.
Приведу его расшифровку начиная с 20:47:
Пётр Диденко: Слушай, Миша я вот знаешь что подумал опять же о разработчиках, о наших многострадальных разработчиках. Вот им приходится переписывать, там, приложения с одной операционной системы на другую, а потом ещё, значит, несколько платформ, но вот наиболее популярные помимо обсуждаемых уже сегодня, обсуждавшихся уже сегодня. Там есть iPhone платформа где там всё заморочено очень, есть Android платформа, ещё какие то появляются. Вот. А вот, э-э-э, есть такой подход что можно писать, грубо говоря, на html и джаваскрипте и там на базе опредлённых фреймворков просто писать по сути кросс-платформенные приложения для мобильных устройств, которые значит потом компилируются в нативные приложения но на самом деле ходят местный браужер.. браузерный движок, короче говоря браузер, движок браузера который установлен на мобильном телефоне для того что бы исполнять код который в них там зашит и так далее. Вот если в случае са-э-э-э.. андройдом, айфоном всё понятно, там webkit будет. По-этому можно э-э, писать, э-э, какой то предсказуемый джаваскрипт, html5 код и он будет выполняться предсказуемо, хотя на самом деле там 4 десятка версий вебкитов есть на мобильных платформах. Что насчёт браузера в Windows Phone 7. Вот Windows Mobile 6.5 был браузер Internet Explorer 6. Выпуска 2001-го года. А вот что будет в Windows Phone 7? И насколько разработчикам будет удобно писать такие fake-веб приложения? Как я загнул.
Михаил Черномордиков: Да, ты очень загнул. Я бы ответил в двух частях: Первая часть касается того… (смех) Да. Пункт первый. Вопрос в том разрабатывает ли настоящее приложение или делать через браузер – это очень длинный дискуссионный вопрос. А, ну это по сути как идея, всего универсального и всего специализированного. Надо смотреть на конкретные случаи, но пока тренд индустрии показывает что скорее люди идут на разработку приложений под каждую платформу, но при этом если вы хотите писать приложения с браузером внутри, то Windows Phone 7 имеет встроенный контрол на сильверлайте который так и называется – веб-браузер. Соответственно внутрь вашего приложения вы можете поставить веб-браузер и в нём что нибудь открывать. Что касается браузера который встроен в телефон наш то там стоит версия которую можно условно назвать Internet Explorer 7.5. потому что это 7й Explorer с некоторыми дополнительными возможностями от 8ки. Но и кроме того понятно что сейчас разрабатывается большая 9ка, вот вышла бэта версия и значит что можно ожидать и что в телефоне она рано или поздно появится. Скорее рано, чем поздно. Причём все Windows Phone 7 телефоны, они будут обновляться прошивками как это делается на плеере Zune. Соответственно если новый браузер например выйдет, то он установится на всех телефонах которые будут с Windows Phone 7. Что очень удобно. Во отличии что есть у других производителей с фрагментацией. Ну и наконец с точки зрения webkit, наверное впринципе можно разработать свой webkit под Winodows Phone 7 на сильверлайте если это можно сделать технически, это сейчас думаю. То-о-о можно и над этим подумать, а-а может быть можно сделать такую штуку которая будет… если всё равно использовать приложение Интернет, что бы оно рендерило картинку на сервере потом возвращало картинку на клиент. Тут разные сценарии.
П.Д.: Не-е, ну вот насколько я понимаю webkit это C++-ный код, соответственно (заминка) вы говорите “пишите на C#”. И вопрос: как можно webkit на Windows Mobile платформу? То есть я так понял браузер который в windows phone 7 он не “юзабл” для таких кросс-платформенных фреймворков. Соответственно захочется принести свой браузер, да. Принести браузер э-э на Windows Phone 7 платформу наверное не очень возможно, я не помню что бы Opera это обещала, то есть ей надо что то переписать, а да у неё есть Opera mini который чуть ли не на j2me написан который тоже не подойдёт для таких сложных целей как написание кроссплатформенных мобильных, как использование кроссплатформенных мобильных фреймворках. Значит, по-моему Opera ничего не говорила про то что напишет нативный браузер для Windows Phone 7 если я не ошибаюсь.., ошибаюсь – поправьте. А-а значит хромеум тоже С++ код, его не притащишь на мобильную платформу, ну и webkit. Правильно? Вот, соответственно браузеры… (пауза) Нет.
М. Ч.: Во-первых браузер есть встроенный. Во вторых я уже слышал что люди пишут браузеры на XNA (платформа разработки игр для XBox, Windows, Windows Phone 7), да, вы представляете такие тоже можно делать штуки.
П. Д.: Не, не, не-е. Браузер написать на XNA очень просто. Надо написать UI и запустить. Вопрос что с движком будет. Движок нормальный это “биг дил” (big deal), да. Нормальный движок отчуждаемый это хромиум. Соответственно чего?
М. Ч: Нормальные движки бывают разные. Например “трайдент” (Trident). Знаешь такой?
П. Д.: Ну если бы его можно было нормально а.. э.. Трайдент это движок который в 4й версии представлен в IE8 и далее развивается. Если бы его нормально можно было перенести на Windows Phone 7 это бы сделали. И не говорили бы что Windows Phone 7 IE 7.5.
М. Ч.: Не спеши! Во-первых не всё сразу. Во-вторых – бразуер есть. И если вспомнить то количество телефонов на рынке которые имеют разные браузеры. Там я хоч… напомню что у нас среди лидеров рынка, таких компаний как Nokia, как RIM которые делают BlackBerry. То есть на самом деле игроков очень много и у них у всех разные конфигурации. Поэтому я всё таки вернусь в первую часть. Что я бы очень сильно подумал прежде чем делать решение на таком вот архитектурном паттерне.
П. Д.: …с-стоп… Стоп. Nokia и RIM это webkit.
М. Ч.: Да, но он там разный как ты знаешь.
П. Д.: Ну он достаточно… Он.. Он по сравнению с, э-э-э, Internet Explorer 7.5 он не разный, он одинаковый.
М. Ч.: То есть ты говоришь сейчас что в телефонах Nokia которые не смартфоны тоже стоит webkit, да? Который такой современный и быстрый?
П. Д.: Не-е. Эти телефоны вообще не для людей, они не имеют коммерческого смысла и их мы не обсуждаем.
М. Ч.: Ну вот ты посмотри на циферки которые есть с точки зрения доли рынка там, количество проданных устройств и так далее.
П. Д.: Смотри на динамику то тех циферок…
М. Ч.: Ну вот я тебе о чём и говорю что не всё происходит сейчас. Если мы перенесёмся на 5 лет вперёд то возможно всё изменится. И Windows Phone 7 там будет на хорошем месте. Через 5 лет много чего поменяется, так что посмотрим.
П. Д.: Надо разработчиков привлекать. Они для всего остального могут писать один и тот же код. Потом компилировать его в простенькие псевдо-кроссплатформенные приложения и это о-о-фи-и-гительно дешево для всех платформ: для BlackBerry, для Nokia в принципе, для iPhone, для Android.. И для всего остального где webkit и какой нибудь ещё более-менее распространённый браузер. Получается для Windows Phone 7 – нет.
М. Ч.: Ну сейчас там стоит 7.5 – это раз. Второе я всё таки смотрю на циферки вокруг, я вижу как много людей вокруг пишут реальные приложения для телефона, а не кроссплатформенные такие браузерные решения. По-этому пока индустрия вот она по другму идёт.
П. Д.: Миша, они это делают не от хорошей жизни. Они хотели бы писать один раз и не инвестировать 5 раз в одно и то же.
М. Ч.: Но тем не менее даже если людей нет целей под Windows Mobile или Windows Phone они всё равно это делают. Хотя ты говоришь что везде одинаковый движок стоит.
П. Д.: Посмотрим как они будут делать это в будущем. Допустим 1 июля 2011 года.
М. Ч.: Ну давай посмотрим что будет 1 июля 2011 года. Но у нас будет 70 какой нибудь выпуск. Нет? Нет. Что то я загнул.
Выход IE8 для Windows был переломной точкой когда режим совместимости (quircks-mode) оставался в ie6-ie7, а IE8 стал по-умолчанию показывать страницы в режиме поддержки стандартов. Возвращаться в такое прошлое очень странный шаг. Пётр по всей видимости прав насчёт того что Trident 4 не смогли перенести на Windows Phone 7.
В документе “Designing Web Sites for Phone Browsers” есть описание того что происходит, но документ датирован апрелем 2010 и на данный момент может быть не совсем актуальным.
В документе описываются рекомендации по созданию страниц и то от чего лучше отказаться. В том числе рекомендуют писать DOCTYPE, не пользоваться таблицами. Технические параметры: cписок поддерживаемых шрифтов и специальные meta теги для адаптации страницы на мобильном. Объявлена поддержка HTML4.0, XHTML1.0, XHTML-MP, ECMAScript 3, AJAX (i.e. XMLHttpRequest), DOM Level 1, and Cascading Style Sheets (CSS) Level 2.1.
User-Agent браузера точно показывает что это IE7:
Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0) <DeviceManufacturer>;<DeviceModel>
Из IE8 в браузере есть Selectors API и XMLHttpRequest.