Кажется, что существует тенденция против кроссплатформенных комплектов. Если люди хотят писать один раз, бегать куда угодно, они, как правило, используют HTML - создают веб-сайт. Люди используют инструментарий платформы только тогда, когда внешний вид и ощущения очень востребованы, например, на iPhone. Поэтому, если единственная причина, по которой вы беспокоитесь о не-веб-приложении, заключается в том, чтобы получить естественный внешний вид, не имеет смысла использовать кроссплатформенный комплект.
Кроссплатформенные наборы инструментов никогда не работали так хорошо; платформы для настольных компьютеров не очень похожи, и их трудно абстрагировать. Добавление телефонов и планшетов в смесь усложняет задачу. В итоге получается очень утечка абстракции (см. Http://www.joelonsoftware.com/articles/LeakyAbstractions.html ). Часто проще просто приятно отделить свой «движок» от интерфейса и написать интерфейс отдельно для каждой платформы.
Тенденция к популярности Mac может сделать кроссплатформенные комплекты менее популярными, чем более. Я думаю, что часто люди использовали кроссплатформенный набор для теоретической проверки кросс-платформенного флажка, а не для получения действительно хороших результатов на всех платформах. Как только вы на самом деле заботитесь о нескольких платформах ... вы начинаете видеть, как кроссплатформенные комплекты имеют свои недостатки.
Вот сообщение в блоге Алекса Пейна об этих недостатках: http://al3x.net/2011/01/15/user-hostile-platforms.html
Я думаю, что это говорит о том, что многие крупные, популярные кроссплатформенные приложения изобретают свой собственный кроссплатформенный подход (Firefox, Chrome, Eclipse, OpenOffice.org - примеры, которые приходят на ум). Владея фреймворком, они могут прорваться через абстракцию при необходимости. Также все эти приложения имеют тенденцию выглядеть одинаково (и не особенно нативно) на всех платформах.
Все это говорит, у меня нет фактической статистики или чего-то еще. Но я проделал большую работу над GTK + и немного знаком с основами кода, включая Firefox, Chrome и Eclipse. Таким образом, я видел технические проблемы здесь воочию.
На самом деле в последние годы наблюдается тенденция к созданию кроссплатформенного инструментария пользовательского интерфейса. Этот инструментарий - HTML / CSS / JavaScript.
Просто так проще разрабатывать один раз и увидеть, что он работает почти одинаково везде.
И да, разработки массово отходят от настольных компьютеров в Интернет. Вы видите это сами.
источник
Я склонен использовать кроссплатформенные наборы инструментов, потому что они имеют лучший дизайн, а не потому, что я пытаюсь быть кроссплатформенным. Например, я работаю над проектами, написанными на C ++ и предназначенными только для платформы Windows. Использую ли я win32 или MFC, в основном ЕДИНСТВЕННЫЕ опции, доступные для нативного инструментария?
Святой ФСК нет! Они в значительной степени худшие кучи мусора для спагетти, которые я когда-либо видел! Прямая связь системы событий с базовой системой «сообщений» ОС невероятно неинтуитивна и не обладает выразительностью, необходимой для быстрого создания программ пользовательского интерфейса. Абстракции более высокого уровня, которые в настоящее время предоставляются только кроссплатформенными инструментами, абсолютно необходимы для этой задачи.
Это только один пример. Я мог бы греметь дальше и в списке того, что лучше сделать с помощью кроссплатформенных наборов инструментов. Дело в том, что графические интерфейсы больше похожи друг на друга, чем различны. Например, между оконной программой для Windows и Windows для Linux очень мало различий. Виды, которые вы делаете при создании программ с пользовательским интерфейсом, почти всегда одинаковы, независимо от того, на какую ОС вы ориентируетесь ... и только незначительные различия между архитектурами, такими как телефон / ладонь и настольный компьютер. Область просто сосредоточена на кроссплатформенных методологиях, потому что а) это необходимо для многих людей и б) это все тот же дерьмо.
источник
Один из аргументов против создания кроссплатформенного фреймворка заключается в том, что он всегда будет нацелен на наименьший общий знаменатель - клиенты фреймворка хотят писать код только один раз и работают «везде», поддерживаемые. Таким образом, одна удивительная аппаратная платформа будет просто похожа на любую другую платформу, которая работает на этой платформе, поскольку вы не можете использовать ее функции.
Со временем это, к сожалению, приводит к тому, что фреймворки склоняются к своей самой популярной платформе и объединяют поддержку других платформ, или просто отрывают их, когда заканчивается бюджет / популярность.
Один из способов извлечь выгоду из специфических для платформы возможностей - создать нечто вроде
#if PLATFORM_FEATURE_X
конструкции вокруг всего конкретного кода или эквивалентных проверок во время выполнения, что приведет к раздуванию кода. Это становится довольно утомительным довольно быстро, поскольку варианты одной и той же платформы потребуют особой обработки. Например, некоторые XBox v1 не имели жесткого диска, поэтому игры, использующие кроссплатформенные инструменты, не могли использовать его для кэширования, по сравнению с версией для ПК, где вы можете гарантировать жесткий диск.Для приложений для настольных ПК и приложений производительности внешний вид платформы кажется важным, но многие приложения имеют собственный стиль, поэтому нет проблем выглядеть одинаково на всех платформах, например, приложениях, созданных с помощью AIR.
Производители оборудования, такие как Apple, Sony, Nintendo и Toshiba, захотят сделать так, чтобы их продукты отличались от конкурентов, например Touch, акселерометры / гриоскопы, Blu-Ray, 3D-дисплей. Маловероятно, что когда-либо будет платформа со всеми функциями всех конкурентов, объединенных в одну (из-за стоимости и сложности), так что одна победит.
источник