2

我正在编写一个客户端应用程序,相当老派,相当保守。在 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 无法很好地适应大型代码库,因为缺乏静态分析。

你用什么写你的?

4

3 回答 3

5

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

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

如果“原生外观和感觉”不是必需的,我会说使用 Qt 或 wxWidgets 并为自己省去麻烦。我不会担心 Qt 的连续性。它的桌面框架非常成熟,诺基亚不维护(他们维护移动部分)。开源社区将使其保持活力。不知道它有多bug,但是哪个跨平台框架没有它的bug?

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

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

Python:这就是我选择的路径。Python 不仅是跨平台的,它还带有一组丰富的跨平台库。也很容易在任何操作系统上编写 C/C++ 扩展。缺点是启动速度相对较慢,并且比原生 C++ 应用程序占用更多内存。尝试建立一个可部署的应用程序也是相当痛苦的。除非您计划进行认真的数据处理,否则我不会太担心性能。

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

于 2012-06-26T04:45:26.757 回答
2

作为一名主要的 Java 开发人员,我非常依赖 Java。您对 java 的担忧在很大程度上可以得到解决。

一是我会用 JavaFX 而不是 Swing。它仍然是相当新的,但我最近一直在玩它,它非常好。你应该能够创造出你喜欢的东西,而且它非常一致。另一个额外的好处是,他们正在为 JavaFX 添加本机打包。现在还为时过早,据我了解,这还没有出现在稳定版本中。

无论你做什么,都会有障碍和问题。所以不管我上面说什么,你应该选择你最舒服的东西。哎呀,如果你甚至可以走 .net 路线并使用 Mono。我听说 Mono 运行良好,尤其是从一开始就使用它构建的项目。

于 2012-06-26T04:25:35.360 回答
1

有多种选择可供您使用

  • Java 应用程序
  • Web应用程序
  • 使用像 App Accelerator 这样的包装器

Java 应用程序

编写独立于平台的 Java 应用程序将满足您的需求。但在开发方面,您可能会遇到问题。特别是GUI体验。

Web应用程序

Web 应用程序是正确的方法,但在本地机器上安装和设置 Web 服务器可能有点棘手。此外,如果您想托管应用程序,这是要走的路。

应用程序包装器(应用程序加速器

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

于 2012-06-26T05:25:56.760 回答