我熟悉网络编程,包括客户端和服务器端,我想扩展一点我的知识,以便能够编写一些桌面程序。
我的问题是我并不熟悉管理小部件的桌面方式。据我所知,在一个典型的桌面程序中,小部件有自己的生命,相互发送信号并通过回调对信号做出反应。所以每个小部件都是一个有很多方法的对象。这增加了我现在所知道的复杂性,我不确定我现在想要了解这一点。
在网络上,您会使用标记语言(通常是某个版本的HTML)来描述页面上的元素,并且当事件被触发时,您可以使用Javascript修改元素。我试图了解是否有办法在桌面程序中使用Web范例。我希望能够通过标记语言描述小部件(这些将是静态的)并根据事件改变它们。如果我理解正确,基于XUL的应用程序就是这样工作的。
问题是我可以找到关于XUL的文档似乎有点过时了。学习XUL是个好主意吗?我可以期待几年后仍在使用它吗?或者它已成为一项旧技术?
如果XUL不是一个好主意,有哪些替代方案?对于最简单的应用程序,小部件是静态的,或者只是略微修改,有一些easy tools,但是更复杂的程序呢?
编辑:我应该提到我主要使用Ubuntu,所以我需要一个独立于Linux或OS的工具。
答案 0 :(得分:8)
XUL基本上提供了您所要求的内容。它类似于HTML,因为您使用基于标记的语言来描述界面,您可以使用JavaScript进行编码。它当然用于桌面开发,包括Firefox,Thunderbird,Songbird和Komodo Edit / IDE等产品。
在桌面上运行,您将比使用Web应用程序,读取和写入文件以及通过XPCOM运行非JavaScript代码更自由。
Mozilla Developer Center上有大量最新的文档。您正在寻找的是如何创建xulrunner应用程序 - 这是允许您使用XUL创建桌面应用程序的框架。
当然可以使用XUL创建优秀的桌面应用程序。缺点是没有大型开发人员社区(Mozilla,Songbird和扩展开发人员之外),并且最终没有为进入社区构建应用程序的人提供大量支持。有一个邮件列表,还有一个IRC频道。挑战在于,当您使用xulrunner时会出现怪癖,并且在您通过它们时会得到有限的支持。我认为这是一种“鸡与鸡蛋”的问题 - 一个多元化的大型开发者社区会提供更多的支持 - 更多的支持会增加社区。 p>
过去两年我一直在使用XUL开发产品,我仍然在争论是否会再次选择相同的路径。
我认为我们没有足够的信息告诉你“你应该学习XUL” - 但如果你需要大型社区的高水平支持,那么你应该看看@其他一些框架其他人提到过。如果你可以通过它,并且很乐意让你的类型通过它,它可以是一个很好的资源,你的网络背景可能会帮助你开始运作。如果您对Firefox Extensions有任何兴趣,这些技能将直接转移。
没有强大的网络背景,当我尝试切换到HTML应用程序时,我想念在XUL中布局界面是多么容易。如果您想稍微修改一下,请查看XUL Explorer和XUL Periodic Table。
答案 1 :(得分:1)
如果您反对学习类似C#的东西,可以使用Flex编写AIR应用程序。它有一个标记语言,但也使用ActionScript进行一些真正的编程。对我来说,这是编写桌面应用程序的一个很好的介绍。
答案 2 :(得分:1)
您可能想查看Adobe的AIR技术。它允许您使用称为MXML的标记语言(类似于HTML,更严格的语法)来描述UI,并使用ActionScript(一种类似于JavaScript的脚本语言)定义函数。 AIR应用程序与平台无关,因为它们在AIR平台上运行,可为您提取特定于操作系统的内容。出于同样的原因,它们可能比本机应用程序相对慢 - 但对于小型应用程序而言,这可能不是问题。这取决于对您来说更重要的 - 运行速度或开发速度。
AIR的主要缺点是用户需要在他们的机器上安装AIR平台来安装和运行AIR应用程序,就像您需要安装Java才能运行任何用Java编写的应用程序。大多数平台现在都带有开箱即用的Java,但AIR并不是普遍存在的。
关于XUL,如果我错了,有人请纠正我,但显然它是用于描述Mozilla的应用程序(如Firefox,Thunderbird等)中的UI并用于为其应用程序开发扩展的标记语言。我无法获得对用于真实桌面应用程序的XUL的任何引用。
答案 3 :(得分:0)
研究利用XAML的WPF,这对你来说可能是一个不太高的学习曲线。
如果你正在使用Ubuntu,你可能想看看Mono框架,它是Linux系统上的C#。存在一种称为Moonlight的XAML形式,它可能对您有用。至少你可以检查一个选项!
答案 4 :(得分:0)
我跟你一样。到目前为止,我已经看过了
并错过了XUL ...嗯... XUL的一个优点是我可以将它用于Firefox插件:)开辟了可能性。
我发现对于钛和空气,文档都缺乏,所以我发现它更难开始。我真的开始使用Silverlight,但我使用WPF。对于Air我发现它的webkit是modified to disable some css3 features我想使用像@font-face
和阴影:(失望的
如果我使用“原生”桌面编程语言
,则会提供有吸引力的优势