30

为了“最好”,我打算让代码不需要或需要很少的平台特定调整。

4

11 回答 11

23

我强烈推荐使用 Java 进行跨平台 GUI 开发。特别是,我推荐Netbeans IDE附带的 GUI 构建器。它非常简单且非常强大。您可以通过点击和拖放来创建 GUI,并轻松自定义各种按钮和其他组件所执行的操作。

我更喜欢 Python 作为一门语言,但没有任何用于 GUI 开发的免费工具能与此相近,而且我使用的其他语言似乎也是如此。(我应该指出,QT拥有出色的 GUI 开发人员,可以开发各种语言,例如 C 和 Python,但它仅在用于开源项目时是免费的。)

编辑:QT 最近被重新授权为 LGPL,因此您可以在商业应用程序中自由使用它。用于此 (PyQT) 的 Python 绑定尚未重新授权,但已创建另一个名为PySide的项目来提供 Python QT 绑定。

于 2008-12-23T15:00:59.940 回答
5

我个人鄙视模拟 Java GUI 所在的本机 GUI 的整个概念。无论你走到哪里,都不必在家,而是让你到处都是游客,经常需要翻译。Eclipse GWT 是一个更好的工具包,可以更好地利用本地资源,但它仍然认为人们喜欢编写 Java 代码,讨厌使用 Java 应用程序,想想看:你喜欢桌面上的哪些 Java 应用程序?

在我看来,Tk 在您选择运行它的任何操作系统上都同样丑陋和受限,Qt 也是如此。

Mono 需要一个很好的尝试,因为它是回答“为什么 Linux 很烂”的问题的一种方式,如果你还记得那篇旧帖子 bi Miguel de Icaza。Mono 带有一套成熟的小部件和 API,并且不会试图限制您可以做的事情,以便为您提供可移植性。

Silverlight 接近于可移植性并且具有出色的界面定义语言,但缺乏对系统的访问权限,即使在同一台机器上,您也必须将应用程序拆分为服务器和 UI 以克服它。

Adobe AIR 是一条狗,本地系统访问并不容易。

如果可以选择,我倾向于完全避免使用 GUI,并尝试使用 Web 服务器,甚至是本地 Web 服务器,以及 Json、JQuery 和所有这些东西。我发现我可以有更多的选择,并且比使用原生小部件更有效率。这结合了使用真实语言服务器端的优势和 GUI 中 JavaScript 的奇妙无序和蔼可亲。

于 2010-09-24T08:38:49.173 回答
4

是的:使用 Eclipse RCP。您不仅可以编写跨平台应用程序,还可以使用它编写多语言应用程序。SWT 为多个平台和窗口系统提供本机外观。

于 2009-04-16T23:42:33.733 回答
3

所以据我了解,目前还没有真正的跨平台高级语言和 GUI 工具包。

  1. Java 是跨平台的,SWT 和 Swing 中的 GUI 看起来都不错,当您真的努力调整它们的像素精度并为支持的平台提供外观修改时。目前有一些优秀的 GUI 设计师,但没有 15 年前的 OpenStep 那样伟大。

  2. QT 现在是 LGPL 的,只要您只动态链接到它。好吧,但是 QT 有自己的一系列问题,并且是 C++ 的超集。您必须针对 QT-hacked 编译器进行编译,而不是针对通用 C++ 编译器。

  3. 没有尝试wxWidgets,但从它的外观来看,它可以工作,但根本不是高级工具包!

  4. 似乎可以选择用 C# 和开源 .NET 编写并通过 Mono 在 Windows 以外的其他平台上运行它......没有尝试,但在我看来,这只是将 Microsoft 移植到其他平台上。

  5. 有 GNUstep,但现在它正在寻找我,就像它只是由一些开源极客粉丝开发的一样。看到 Mac OS X 之外的 OpenStep 堆栈真的很有趣,但现在这在我看来是不可行的。

即使是 Java,虽然它是自包含的,但目前也没有提供出色的 GUI 设计器功能。在开始学习如何使用 SWT 编码时,我曾经使用过 GUI 设计器工具,现在我发现自己手动编码,这确实不错,但确实应该没有必要。但那是几年前的事了,我得再试一次。

您当然可以用一种语言(Java 或 C/C++,如果您想要速度)创建跨平台应用程序核心和服务代码,创建类似服务器或 unix 工具的东西,然后从您创建的 GUI 连接到它每个所需的平台都使用自己的工具。结果是 GUI 是平台原生的,利用了平台的特性,并且为每个所需的平台创建应该相当简单。(Mac 上的 Cocoa 和 Windows 上的 .Net 为它们原生的平台提供了丰富的功能)。

我们将不得不研究这种理想解决方案的稳健性和成熟度。它应该有良好的商业和社区支持,并且现在已经相当发展,因此这些工具的未来实现将为我们提供的不仅仅是所有受支持平台的最低共同点,而是利用跨平台工具包括并采用相关平台原生的精心设计的概念和丰富的功能,并跨平台分发。

只有这样,跨平台开发才能真正可行并被大量采用。

建议?

于 2012-09-24T04:51:40.040 回答
2

Java 确实不错,但我最近通过PyQt4使用 Python 和Qt做得很好。我发现我完成工作的速度也比在SwingSWT中更快。

到目前为止,不需要针对特定​​平台进行调整,并且 Qt4 小部件在不同平台上看起来都不错。Qt GUI 构建器非常好,使用 Python 可以轻松集成一些其他跨平台框架(特别是VTKscipy-cluster和一些SWIG包装的对象,用于与性能工具输出的文件进行交互)。

请注意,Qt 不是免费的,除非您在开源项目中使用它。

于 2008-12-23T14:59:20.050 回答
2

只要有人正确定义了“平台独立性”Java 就是最好的。

有些人认为 C# 是最好的,但那些人似乎误解了“平台独立”这个词;)

注意:我指的是只要微软和 Novel 遵守约定,C# 就可以移植到 Linux/Unix 上。社区本身永远无法维护 .NET 这样庞大的平台

于 2009-05-18T14:04:15.300 回答
1

如今,有许多语言可以让您高效地创建跨平台 GUI 应用程序。Java、Python、Tcl/tk、C#...

我认为您需要更多地定义应用程序的要求,例如:

  • UI 是基于 Web 还是基于桌面?
  • 应用程序是大还是小?
  • 它会具有某种“扩展”功能(例如插件)吗?
  • 它会在网络上运行吗?它可能是分布式/负载平衡的吗?

该列表可以永远持续下去,确定有关您的应用程序的定义点,并开始基于整体研究该语言。

于 2008-12-23T15:09:09.937 回答
1

对于原生二进制文件,wxWidgets 是一个方便的解决方案。

我会告诉你,在用户体验方面,它甚至比 Java 还要好。尽管您可以让 Java 中所有平台的表示层看起来几乎相同,但它们看起来都像 Java。另一方面,wxWidgets 让用户感觉像是一个特定于平台的构建(确实如此),但是您可以使用相同的代码为多个平台(至少是主要平台)编译。

于 2011-12-14T14:22:24.570 回答
1

我还认为 Mono 是平台独立性和优秀 IDE 工具的有力竞争者。Java 的性能在桌面上很糟糕。只需检查http://www.codeproject.com/KB/dotnet/RuntimePerformance.aspx

于 2010-09-03T19:09:17.827 回答
0

我认为这取决于您计划定位的平台类型。Java 将拥有最多的带有 VM 的平台。但是,如果您只想使用 Windows 和 Linux,则可以使用 C#(在 linux 上使用 mono)。

于 2008-12-23T14:58:42.407 回答
-3

根据你的定义,没有。即使使用最新的图形库,您也可以期望在不同平台上进行大量测试。

Flash可能是最好的。广泛传播,更好地在不同平台上看到相同的内容。

于 2008-12-23T14:59:39.317 回答