什么是WPF / XAML的开源替代品?
如果我们从HTML / CSS中学到了什么东西,声明性语言(如XML)在描述用户界面方面做得很好,因为:
- 构build能够有效地对代码进行模板化的代码预处理器很容易。
- 该代码是在一个良好定义结构良好(理想)格式,所以很容易parsing。
- 已经存在用于有效分析或抓取基于XML的源文件的技术。
- 用户界面的脚本代码变得更简单,更容易理解。
- 它足够简单,devise者能够自己devise界面。
- 程序员很喜欢创buildUI,因此devise人员应该很容易。
最近我看了一下WPF应用程序(即XAML)的内容,它看起来非常熟悉HTML中使用的声明性语言风格。
目前桌面用户界面开发的状态在很大程度上被分解了,否则在graphics用户界面devise(IE,GTK,XUL,Qt,Winforms,WPF等)领域将不会有太多重复的工作。
只有Python有45个GUI平台
什么是一些代表这些特征的开源GUI:
- 标准化
- 平台独立
- 声明性标记语言
- 语言不可知的
WPF,或者更具体地说,XAML似乎是朝着正确的方向迈出的一步。
更新:
非常感谢信息,保持联系'。 以下是我从评论和答案中收集的选项。
GladeXML
- 编辑器: Glade界面devise器
- 操作系统平台:全部
- GUI平台: GTK +
- 语言:C(libglade),C ++,C#(Glade#),Python,Ada,Pike,Perl,PHP,Eiffel,Ruby
XRC(XML资源)
- 编辑: wxGlade , XRCed , wxDesigner , DialogBlocks (非免费)
- 操作系统平台:全部
- GUI平台: wxWidgets
- 语言:C ++,Python( wxPython ),Perl( wxPerl ),.NET( wx.NET )
基于XML的格式不是免费的,不是跨平台的,或者是语言特定的
XUL
- 编辑:任何基本的文本编辑器
- OS平台:任何运行支持XUL的浏览器的操作系统
- GUI平台:Gecko引擎?
- 语言:C ++,Python,Ruby作为插件语言而不是基础语言
注意:我不确定XUL是否值得在这个列表中提到,因为它不是桌面GUI语言,更不是一个make-webapps-运行在桌面上的语言。 另外,它需要一个浏览器运行。 IE,它是“桌面的DHTML”。
CookSwing
- 编辑器: Eclipse通过WindowBuilder , NetBeans 5.0 (非免费)通过Swing GUI Builder又名Matisse
- 操作系统平台:全部
- GUI平台:Java
- 语言:仅限Java
XAML(月光)
- 编辑: MonoDevelop
- 操作系统平台:仅Linux和其他基于Unix / X11的操作系统
- GUI平台: GTK +
- 语言:.NET
注意:XAML不是纯粹的开源格式,因为Microsoft控制其使用条款,包括随时更改条款的权利。 Moonlight不能合法地在Windows或Mac上运行。 另外,唯一免除法律诉讼的平台是Novell。 看到这个完整的描述我的意思。 XAML也不是像C#,Managed C ++和CLR这样的ECMA标准。
更新:这个问题已经从“是否有一个开源的WPF替代品?因为原来的问题是错误的,它吸了。这个问题的方向已经改变方向匹配,以配合新的input。在改变之前回应的人。
Qt正在开发QML,看起来很像XAML,除了JSON。 它可以作为针对当前版本构build的预览版,并可在下一个版本的快照中使用。
以下是http://doc.qt.nokia.com/4.7-snapshot/declarative-ui-components-progressbar.html中的一小段代码;
import Qt 4.7 import "content" Rectangle { id: main width: 600; height: 405 color: "#edecec" Flickable { anchors.fill: parent contentHeight: column.height + 20 Column { id: column x: 10; y: 10 spacing: 10 Repeater { model: 25 ProgressBar { property int r: Math.floor(Math.random() * 5000 + 1000) width: main.width - 20 NumberAnimation on value { duration: r; from: 0; to: 100; loops: Animation.Infinite } ColorAnimation on color { duration: r; from: "lightsteelblue"; to: "thistle"; loops: Animation.Infinite } ColorAnimation on secondColor { duration: r; from: "steelblue"; to: "#CD96CD"; loops: Animation.Infinite } } } } } }
-
Web正在将桌面应用程序的大部分function从现实中解放出来。
我认为最重要的原因是现在每个人都如此专注于networking。 HTML5将成为networking能够实现的重大飞跃。 使用快速的JavaScript解释器和function强大的浏览器,随着时间的推移,对桌面程序的需求将逐渐减less。 这就是Google所打赌的一匹马,苹果也是如此。
-
创build好的东西对每个操作系统来说都会有完全不同的实现,所以基本的工具包本身不是很便携的。
如果你仔细想想,Web是我们在跨平台开发这种基础设施方面唯一真正常见的基础。 从体系结构的angular度来看,WPF与WinForms /直接的WinAPI代码有着令人难以置信的区别。 如果你想要做一些performance良好的事情,那么为每个操作系统调整类似的东西就需要大量不同的pipe道。 (不是说networking应用程序非常快,请注意,但是它们会变得更好)。
-
外观总是会成为一个问题。
你用什么外观和感觉? 你是否尝试将界面调整到操作系统界面,使其看起来像“本地化”,或者你是否像Swing那样做了几年前的东西,开发的应用程序与那里的所有应用程序看起来截然不同? (呃,这是一个火车残骸…)如果你select适应每个操作系统的外观和感觉的用户界面,你可能有各种测量和devise问题。
Novell有一个Silverlight的开源实现,对XAML有很大的支持,叫做Moonlight: