你用什么来编写跨平台客户端应用程序?

时间:2012-06-26 04:05:15

标签: java python qt

我正在写一个客户端应用程序,非常老派,相当保守。在Windows上,我可能会使用.NET Forms,或者可能是WPF,我不确定。在Mac上,我会使用Objective-C,Cocoa和所有这些东西。但我希望这个应用程序同时适用于两者,而我只想写一次。

我应该在QT写吗?我听说当你开始使用它时,QT在跨平台使用时会出错。诺基亚最近的麻烦是什么让我担心连续性?社区对Digia的看法是什么?

我应该用Java编写吗?较新的Mac OS不再带有Java,Windows也没有。如何创建这样的良好设置体验?那么USB设备呢?有一些Java USB项目,但它们都是基于Windows或Linux的,没有Mac。我也担心得到一个原生的外观和感觉,但我想Swing让我在那里覆盖。

我应该用Python编写吗?我担心这里的表现。此外,我之前编写过大型Python应用程序,并且由于缺乏静态分析,我发现Python很难扩展到大型代码库。

你在写什么?

3 个答案:

答案 0 :(得分:5)

几个星期前我问了一个类似的问题Building a Mac and Windows GUI Application

关于“本机外观和感觉”:如果您需要,请不要使用跨平台GUI库。为每个平台编写一次GUI层。您可以共享核心应用程序逻辑。你可以在Windows和Linux上使用Qt或wxWidgets,因为对外观的要求更加轻松,但它在Mac上看起来相当不合适。

如果“原生外观和感觉”不是必不可少的,我会说Qt或wxWidgets可以让你自己避免头痛。我不担心Qt的连续性。它的桌面框架非常成熟,不是由诺基亚维护(他们维护移动部分)。开源社区将保持活力。不知道它有多怪,但什么跨平台框架没有它的错误份额?

如果“本机外观和感觉”是必不可少的,请继续阅读核心应用程序逻辑的语言选择。

Java:不要。 Swing实际上并没有提供原生外观和感觉。试着用它做任何全面的GUI。 Swing对于编程也很痛苦。有很多替代Swing,但我怀疑它们中的任何一个都会比Qt更好。此外,大多数应用程序可能需要挂钩操作系统。 Mac上的Java桥接已弃用。您必须使用JNI进行任何扩展。 Windows可能也是一样。

Python:这就是我走的路。 Python不仅是跨平台的,它还带有一组丰富的跨平台库。在任何操作系统上也很容易编写C / C ++扩展。缺点是启动速度相对较慢,占用的内存比本机C ++应用程序多。尝试设置可部署的应用程序也很痛苦。除非你打算进行严肃的数据处理,否则我不会过分担心性能。

C ++:也是一个不错的选择。如果您使用像Qt或Boost这样的跨平台库(没有尝试过,问题和研究得出结论),用C ++编写跨平台应用程序并不难。还兼容xCode,Visual Studio等,因此可以轻松设置项目。

答案 1 :(得分:2)

主要是Java开发人员,我非常依赖Java。您对Java的关注大部分都可以处理。

我会使用JavaFX而不是Swing。它仍然相当新,但我最近一直在播放,它非常好。你应该能够创造出你喜欢的东西,并且它非常一致。另一个好处是,他们正在添加Native packaging for JavaFX。现在还为时尚早,根据我的理解,这还不在稳定的版本中。

无论你走到哪里,都会遇到障碍和问题。所以不管我上面说的是什么,你应该选择你最舒服的任何东西。如果你甚至可以使用.net路线并使用Mono,你就可以。我听说Mono运作良好,特别是从一开始就用它构建的项目。

答案 2 :(得分:1)

您有多种选择

  • Java应用程序
  • 网络应用
  • 使用App Accelerator之类的包装器

Java Application

编写独立于平台的Java应用程序可以满足您的需求。但发展方面你可能会面临问题。特别是GUI体验。

Web应用程序

Web应用程序是正确的方法,但安装它并在本地计算机中设置Web服务器可能有点棘手。此外,如果您想托管应用程序,这是可行的方法。

Application Wrapper(App-Accelerator

如果你可以使用应用程序包装器,它几乎可以在任何平台上运行 - windows,mac os。一个很好的例子可能是Wunderlist