跨平台的GUI工具包有趋势吗?[关闭]


12

目前,跨平台 GUI框架的使用趋势如何?是更多的人开始使用跨平台框架(例如GTK +,Qt和wxWidgets),还是有更多的人在使用更多与平台相关的框架(例如Cocoa或WPF)?它多少停滞不前?像过山车吗?从现在起的5年后,您认为这种趋势会如何?

使用Windows的人越来越少,操作系统的格局正在发生变化(个人观察)。这应该会增加对跨平台工具包的需求,不是吗?

编辑:此外,哪些工具(跨平台)正在增长最多,如果可以的话?

Answers:


11

似乎似乎有反对跨平台工具包的趋势。如果人们只想编写一次,可以在任何地方运行,那么他们倾向于使用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在内的代码库有所了解。因此,我亲眼目睹了这里的技术挑战。


2
我将这句话简单地表述为“跨平台工具箱的趋势正走向失败”。
ohmantics

14

实际上,近几年来有一种跨平台的UI工具包的趋势。该工具包是HTML / CSS / JavaScript。

只需开发一次,然后看到它几乎在所有地方都可以运行,就太简单了。

是的,开发正在从台式机大量转移到网络。你自己看。


+1对于Web来说是一种不断增长的UI趋势,但我认为这不能解决OP的问题。

完全同意。我们完全使用HTML5 / CSS3 / JavaScript在机顶盒上开发IPTV应用程序。那就是未来,而不是另一个庞大的,功能完善的C / C ++框架
Ernelli,2011年

1
提个不错,但是我实际上对跨平台的桌面工具包感兴趣。仍然支持。
安托

@Anto-可能想将其添加到您的问题中。通过阅读,我根本没有选择“台式机”。当然,我是一位网络程序员,并且不认识您提到的大多数框架:)
Marcie

@Anto,您可能要在问题中提及台式机。
JBR威尔金森2011年

7

我倾向于使用跨平台工具包,因为它们具有更好的设计,而不是因为我试图成为跨平台。例如,我从事仅针对Windows平台的用C ++编写的项目。我是使用win32还是MFC?

神圣的fsck不!它们几乎是我见过的最烂的意大利面条垃圾!事件系统与底层OS的“消息”系统的直接耦合非常难以理解,并且缺乏快速创建UI程序所必需的表现力。当前仅由跨平台工具包提供的更高级别的抽象对于该任务绝对必要。

这也只是一个例子。我可以在跨平台工具包可以做的更好的事情上摇摆不定。事实是,图形界面彼此之间的相似度远大于彼此之间的相似度。例如,Windows上的窗口程序与Linux上的窗口程序几乎没有什么不同。无论您要针对的是什么操作系统,制作UI程序时所做的工作几乎总是完全相同的……并且在手机/掌上电脑与台式机等架构之间只有很小的差异。该领域只是专注于跨平台方法论,因为a)对很多人来说是必不可少的,并且b)都是一样的。


0

反对产生一个跨平台框架的一个论点是,它将始终以最低的公分母为目标-框架的客户只想编写一次代码,并在“无处不在”的支持下运行。因此,一个出色的硬件平台就像运行该框架的任何其他平台一样,因为您无法利用特定于平台的功能。

随着时间的流逝,不幸的是,这导致框架倾向于其最受欢迎的平台,并拼凑了对其他平台的支持,或者只是在预算/人气不足时才将其关闭。

利用平台特定功能的一种方法是#if PLATFORM_FEATURE_X围绕所有特定代码进行构造或等效的运行时检查,从而导致代码膨胀。这很快就变得很乏味,因为同一平台的变体将需要特定的处理。例如,某些XBox v1没有硬盘驱动器,因此与可以保证硬盘驱动器的PC版本相比,使用跨平台工具的游戏无法将其用于缓存。

对于桌面/生产力应用程序,平台的外观似乎很重要,但是许多应用程序都有自己的样式,因此在所有平台上看起来都一样没有问题,例如使用AIR构建的应用程序。

苹果,索尼,任天堂和东芝等硬件供应商将希望确保自己的产品在竞争中脱颖而出,例如触摸,加速度计/陀螺仪,蓝光,3D显示器。不可能有一个平台可以将所有竞争对手的所有功能都整合到一个平台上(由于成本和复杂性),所以一个平台会获胜。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.