Answers:
似乎似乎有反对跨平台工具包的趋势。如果人们只想编写一次,可以在任何地方运行,那么他们倾向于使用HTML-创建一个网站。人们仅在高度要求本机外观(例如在iPhone上)时才使用平台工具包。因此,如果您困扰非Web应用程序的全部原因是要获得本机的外观和感觉,那么使用跨平台工具包就毫无意义。
跨平台工具包从来没有这么好过。桌面平台并非如此相似,很难真正将它们抽象出来。将手机和平板电脑添加到组合中会更加困难。您最终会得到非常泄漏的抽象(请参阅http://www.joelonsoftware.com/articles/LeakyAbstractions.html)。通常,将“引擎”与UI很好地分开,然后按平台分别编写UI会更容易。
Mac变得越来越流行的趋势可能会使跨平台工具包变得不那么受欢迎,而不是更多。我认为,人们通常使用跨平台工具包从理论上检查跨平台复选框,而不是在所有平台上都获得真正好的结果。一旦真正关心了多个平台,您就会开始了解跨平台工具包的不利之处。
这是Alex Payne关于这些缺点的博客文章:http : //al3x.net/2011/01/15/user-hostile-platforms.html
我认为这表明许多大型,流行的跨平台应用程序发明了自己的跨平台方法(例如Firefox,Chrome,Eclipse,OpenOffice.org等)。通过拥有框架,他们可以在需要时深入了解抽象。同样,这些应用在所有平台上都趋向于相同(而不是本机)。
所有这一切,我没有任何实际数据或其他信息。但是我在GTK +上做了很多工作,并且对包括Firefox,Chrome和Eclipse在内的代码库有所了解。因此,我亲眼目睹了这里的技术挑战。
实际上,近几年来有一种跨平台的UI工具包的趋势。该工具包是HTML / CSS / JavaScript。
只需开发一次,然后看到它几乎在所有地方都可以运行,就太简单了。
是的,开发正在从台式机大量转移到网络。你自己看。
我倾向于使用跨平台工具包,因为它们具有更好的设计,而不是因为我试图成为跨平台。例如,我从事仅针对Windows平台的用C ++编写的项目。我是使用win32还是MFC?
神圣的fsck不!它们几乎是我见过的最烂的意大利面条垃圾!事件系统与底层OS的“消息”系统的直接耦合非常难以理解,并且缺乏快速创建UI程序所必需的表现力。当前仅由跨平台工具包提供的更高级别的抽象对于该任务绝对必要。
这也只是一个例子。我可以在跨平台工具包可以做的更好的事情上摇摆不定。事实是,图形界面彼此之间的相似度远大于彼此之间的相似度。例如,Windows上的窗口程序与Linux上的窗口程序几乎没有什么不同。无论您要针对的是什么操作系统,制作UI程序时所做的工作几乎总是完全相同的……并且在手机/掌上电脑与台式机等架构之间只有很小的差异。该领域只是专注于跨平台方法论,因为a)对很多人来说是必不可少的,并且b)都是一样的。
反对产生一个跨平台框架的一个论点是,它将始终以最低的公分母为目标-框架的客户只想编写一次代码,并在“无处不在”的支持下运行。因此,一个出色的硬件平台就像运行该框架的任何其他平台一样,因为您无法利用特定于平台的功能。
随着时间的流逝,不幸的是,这导致框架倾向于其最受欢迎的平台,并拼凑了对其他平台的支持,或者只是在预算/人气不足时才将其关闭。
利用平台特定功能的一种方法是#if PLATFORM_FEATURE_X
围绕所有特定代码进行构造或等效的运行时检查,从而导致代码膨胀。这很快就变得很乏味,因为同一平台的变体将需要特定的处理。例如,某些XBox v1没有硬盘驱动器,因此与可以保证硬盘驱动器的PC版本相比,使用跨平台工具的游戏无法将其用于缓存。
对于桌面/生产力应用程序,平台的外观似乎很重要,但是许多应用程序都有自己的样式,因此在所有平台上看起来都一样没有问题,例如使用AIR构建的应用程序。
苹果,索尼,任天堂和东芝等硬件供应商将希望确保自己的产品在竞争中脱颖而出,例如触摸,加速度计/陀螺仪,蓝光,3D显示器。不可能有一个平台可以将所有竞争对手的所有功能都整合到一个平台上(由于成本和复杂性),所以一个平台会获胜。