Java是开发跨平台GUI应用程序的最佳语言吗?

时间:2008-12-23 14:55:43

标签: java user-interface desktop-application

对于“最佳”,我打算代码不需要或只需要很少的平台特定调整。

11 个答案:

答案 0 :(得分:21)

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

我更喜欢Python作为一种语言,但是GUI开发的免费工具都没有接近这一点,对于我使用的其他语言来说,同样的事情似乎也是如此。 (我应该指出QT为各种语言(如C和Python)提供了很棒的GUI开发人员,但在开源项目中使用时它只是免费的。)

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

答案 1 :(得分:5)

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

对于你选择运行它的任何操作系统来说,Tk都是丑陋和有限的,在我看来,Qt也是如此。

Mono需要一个好的尝试,因为它是一种回答“为什么Linux糟透了”这个问题的方法,如果你还记得那个老帖子Miguel de Icaza。 Mono附带了一套成熟的小部件和Apis,并没有试图限制你可以做的事情,以便为你提供便携性。

Silverlight接近便携式并且具有出色的界面定义语言,但是无法访问系统,您必须在服务器和UI之间拆分应用程序,即使在同一台机器上也要克服它。

Adob​​e AIR是一种狗,本地系统访问并不容易。

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

答案 2 :(得分:4)

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

答案 3 :(得分:3)

据我所知,目前还没有真正的跨平台高级语言& GUI工具包现在。

  1. Java是跨平台的,SWT和Swing中的GUI看起来都很好,当你真的努力调整它们像素精确并提供对支持平台外观的修改。目前有一些优秀的GUI设计师,但15年前没有OpenStep那么好。

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

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

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

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

  6. 即使Java是自包含的,它目前也不能提供出色的GUI设计器功能。我开始学习如何使用SWT编写代码时使用了GUI设计器工具,现在我发现自己手工编写代码,这真的不错,但实际上并不是必需的。但就在几年前,我将不得不再试一次。

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

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

    只有跨平台开发才能真正可行并且可以大量采用。

    建议?

答案 4 :(得分:2)

Java当然很好,但我最近使用Python和Qt通过PyQt4做得很好。我发现我比SwingSWT更快地完成工作。

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

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

答案 5 :(得分:2)

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

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

注意:我指的是只要微软和小说保持他们的条约,C#就被移植到Linux / Unix。社区本身永远无法维持像.NET

这样庞大的平台

答案 6 :(得分:1)

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

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

  • 用户界面是基于网络还是基于桌面?
  • 应用程序是大型还是小型?
  • 它是否具有某种“扩展”功能(例如插件)?
  • 它是否可以通过网络运行,是否可能是分布式/负载均衡的?

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

答案 7 :(得分:1)

我还认为Mono是平台独立性的一个重要竞争者,也是一个很好的IDE工具。 Java的性能在桌面上很糟糕。只需查看http://www.codeproject.com/KB/dotnet/RuntimePerformance.aspx

即可

答案 8 :(得分:1)

对于本机二进制文件,wxWidgets是一种方便的解决方案。

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

答案 9 :(得分:0)

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

答案 10 :(得分:-3)

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

Flash可能是最好的。广泛传播,并且在不同平台上看起来更好。