跨平台桌面应用程序开发

3

我需要关于跨平台桌面应用程序开发引擎/框架的建议(Windows、MAC、Linux)。我了解到有3种可能的选择,Qt、Java和Adobe AIR。

  • 它必须易于安装(运行时是一个缺点,但C++封装器和/或安装程序可以解决这个问题)。
  • 它必须快速并且具有丰富的图形用户界面(不是3D游戏,但肯定有一些2D图形)。
  • 开发环境必须易于建立,UI开发工具必须具有拖放功能以定义应用程序布局。
  • 目标应用程序必须具有本地的外观和感觉。专业付费支持应该可用。

要在Java中获得真正的本地外观和感觉,您需要使用SWT。 - Thorbjørn Ravn Andersen
即使使用SWT,Java在OS X上仍然没有本地的感觉。 - Barry Wark
2
Java在OS X上没有本地感觉--Java是一种编程语言。SWT使用本地控件,看起来和感觉像本地应用程序。有一些可选的更高级别的构造可用,但一些Mac用户不喜欢它们。 - Andy Thomas
6个回答

13
所有这些标准都被Qt满足,除了"本地外观和感觉"。没有跨平台框架能够具有本地的外观和感觉,特别是在OS X上,用户对应用程序的"感觉"要求非常高。如果您真的想要本地的外观和感觉,最好编写一个用C++或C#编写的共享框架,然后在每个平台上提供本地GUI(如果您喜欢使用C#而不是本机Objective-C,则可以使用MonoMac来提供本地Cocoa UI)。
话虽如此,我们对Qt(以及商业支持)进行跨平台开发非常满意。特别是新的OpenGL加速2D场景API使动画UI变得非常容易。QtCreator是一款带有可视化设计支持的不错的IDE。

是的,Qt!我们大约一年前转换了,印象非常深刻。他们似乎也有很多动力。我稍微不同意...我认为Qt在创建本地外观和感觉方面做得非常出色,即使在Mac上也是如此。 "外观"部分是正确的。您可能需要为某些行为方面使用几个#ifdef,但它可以为您处理很多 - Dave Mateer
最近有很多Qt的热爱在飞扬.. :-) - Shinnok
在可行的情况下,Qt 将使用本地小部件集和系统对话框。因此,如果您在 Windows 上运行并执行 QFileDialog,您将获得 Windows 提供的文件对话框。 - Scott

9
与其他语言相比,可能是因为我曾经在实时交易Swing应用程序上工作过,我认为Java是最好的选择(然而,考虑到之前的答案已经显示出来,我认为这个问题是主观的)。让我来阐述一下。
使用Java,您可以依靠 Java Web Start,据我所知,这是易于使用应用程序的最佳解决方案:您在浏览器上单击链接,应用程序就会安装在开始菜单/桌面上,并在下载后立即启动。似乎Adobe AIR提供了一个类似的功能,但我认为由于其生态系统的深度,Java Web Start集成了更强大的分发解决方案(例如,轻松生成.jnlp文件的能力)。
它必须快速并且具有丰富的GUI(不是3D游戏,但绝对有一些2D图形)。
与大多数人的想法相反,在Java中生成良好的图形是可能的。以优秀的书籍伴侣网站filthy rich clients为例。
开发环境必须易于建立,UI开发工具必须具有拖放功能来定义应用程序布局。
Eclipse是IDE的事实行业标准,并且它集成了多个DnD IDE构建器。我只需以最近解放的Windows Builder Pro为例。
目标应用程序必须具有本地外观和感觉。专业付费支持应该可用。
嗯,Swing默认的外观确实与系统有些不同。但是,有很好的第三方外观,可以在此处列出here,作为一个例子。
最后,一些示例:
  • 优秀的Palantir Technologies博客列出了一些杰出的Swing应用程序
  • Gephi是一个相当完整和高效的大容量图形查看器
  • 我的以前的工作(不要把它视为伪装的广告,只是展示了一些相当扎实的Swing)。

谢谢分享一些很酷的Swing应用程序。是否有2022年的版本? - anjanb

4
我不建议使用Java进行桌面开发。不管别人怎么说,与像C++这样的本地语言相比,Java仍然很慢。我会选择Qt。该IDE具有GUI构建器,并且可以集成到Eclipse或Visual Studio中。
以下是一个有用的资源:http://qt.nokia.com/products/

7
Java对于桌面应用程序而言已经足够快了,尤其是考虑到现代计算机的强大性能。如果现在是1996年的话,你说的可能还有道理。 - jonescb
Java的性能已经大大提高,我同意。然而,与像C或C++这样的本地语言相比,它还是慢一些。 - Chris Ledet
9
Java 有其自身的缺点,但性能绝对不是其中之一。现代 JIT 编译器优化的 JVM 运行速度非常快(有时比 C++ 更快,尤其是在考虑内存分配的情况下)。我更担心可能需要使用平台相关代码。对于 C++ 来说,只需要一些 #ifdef 就可以解决,而对于 Java 来说则需要使用 JNI,这会让人感到痛苦。 - Sergei Tachenov
@Sergey Tachenov - 还有易于使用的JNA和强大的SWIG。"慢"的抱怨确实不再合理。 - Andy Thomas
我尝试了QT(在多年的本地OS X开发之后),我只能说它是“垃圾”。很抱歉,但这是我的观点。 - Coldsteel48

2

请看Appcelerator Titanium:它基本上是用浏览器包装了一个Web应用程序。您可以使用Web技术在GUI中拥有任何想要的东西,但它看起来像一个应用程序。


2

奇怪的是,没有人提到Real Studio(现在称为Xojo),它符合您所有的要求:

  • 安装简单,不需要单独的运行时
  • 编译成本地代码,因此速度相当快
  • 具有良好的UI库,对于每个平台都是本地的
  • IDE非常好,具有拖放UI设计师
  • 目标应用程序完全是本地的,并使用本地控件

1
你能提供 Real Studio 的链接吗? - Alejandro García Iglesias

1

首先要提到 http://wxwidgets.org/ ,它是最受欢迎的跨平台框架之一。根据您的应用程序的复杂性和对“本地化”的要求,跨平台框架可能适合您。使用该框架构建的跨平台应用程序通常会感觉有点“陌生”,特别是在 Mac 上,但是可行的。一个很好的例子是 http://taskcoach.org/

如果您的用户可以容忍较大的下载大小、较高的内存需求和一些非原生外观,则纯 Java、eclipse RCPNetBeans 平台 可以适合您。通过这种方式,您可能可以节省相当多的开发时间。

但是我不知道是否有跨平台框架能满足您所有的要求。

如果你需要开发一个生产级别的应用程序,我所见过最好的策略是保持本地化,但将基于 UI 的代码拆分为跨平台的(例如 C++ 业务逻辑)和 UI。这样,你就可以使用本地界面构建工具(每个平台都有一些好的工具)。根据您的应用程序的复杂性和“完成”要求,您可能实际上会节省时间。

关于“Native X-Platform”过程的概述可以在Chris Hanson的这个答案中找到。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接