【问题标题】:Cross-platform desktop development跨平台桌面开发
【发布时间】:2011-01-28 15:25:19
【问题描述】:

我需要针对桌面 PC 应用程序开发(Windows、MAC、Linux)的跨平台引擎/框架的建议。我看到了 3 种可能性,Qt、Java 和 Adob​​e AIR。

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

【问题讨论】:

  • 要使用 Java 获得真正的原生外观和感觉,您需要 SWT。
  • 即使使用 SWT,Java 在 OS X 上也没有原生感觉。
  • Java 对 OS X 毫无感觉——Java 是一种语言。 SWT 使用具有原生外观和感觉的原生控件。有一些 Mac 用户不喜欢的可选高级构造。

标签: java qt air cross-platform


【解决方案1】:

Qt 满足所有这些标准,但“原生外观”除外。不存在具有原生感觉的跨平台框架,尤其是在 OS X 上,用户对应用程序的“感觉”要求很高。如果你真的想要 native 的外观和感觉,最好用 C++ 或 C# 编写一个共享框架,然后在每个平台上提供原生 GUI(你可以使用 MonoMac 提供原生 Cocoa UI使用 C# 而不是原生 Objective-C,如果那是你的一杯茶)。

也就是说,我们对跨平台开发的 Qt(和商业支持)非常满意。特别是新的 OpenGL 加速 2D 场景 API 使动画 UI 变得非常容易。 QtCreator 是一个不错的 IDE,具有可视化设计器支持。

【讨论】:

  • 是的Qt!我们大约一年前换了,印象非常深刻。他们似乎也有很大的动力。我有点不同意……我认为 Qt 在创建原生外观和感觉方面做得非常出色,即使在 Mac 上也是如此。 “外观”部分已死。对于某些行为方面,您可能需要一些#ifdef,但它为您处理很多
  • 最近有这么多的 Qt 爱情飞来飞去.. :-)
  • 在可能的情况下,Qt 将使用本机小部件集和系统对话框。因此,如果您在 Windows 上运行并执行 QFileDialog,您将获得 Windows 提供的文件对话框。
【解决方案2】:

与其他人相反,可能是因为我从事实时交易 Swing 应用程序的工作,我认为 Java 是满足您要求的最佳答案(但是,我认为这个问题是主观的,正如之前的答案已经表明的那样)。让我发展。

它必须易于安装(运行时是一个缺点,但 C++ 包装器和/或安装程序可以解决我认为的问题)。

使用Java,您可以依赖Java Web Start,据我所知,这是易于使用的应用程序的最佳解决方案:您单击浏览器上的链接,应用程序安装在开始菜单/桌面并在下载后立即启动。似乎 Adob​​e AIR 提供了等效的功能,但在我看来,Java Web Start 集成了,由于其生态系统的深度,更强大的分发解决方案(例如,可以轻松地按需生成 .jnlp 文件)。

它必须速度快并且具有丰富的 GUI(不是 3D 游戏,但肯定是一些 2D 图形)。

与大多数流行的看法相反,用 Java 生成好的图形是可能的。以查看优秀书籍的优秀filthy rich clients 配套站点为例。

开发环境必须易于建立,UI 开发工具必须具有拖放功能来定义应用程序布局。

Eclipse 是 IDE 的事实上的行业标准,它集成了多个 DnD IDE 构建器。我就以最近解放的Windows Builder Pro为例。

目标应用程序必须具有原生外观。应该提供专业的付费支持。

嗯,Swing 默认的外观确实与系统一有点不同。但是,也有优秀的第三方,例如here

最后,一些例子:

  • 优秀的Palantir Technologies blog 列出了一些优秀的 Swing 应用程序
  • Gephi 是一个相当完整和高效的大容量图表查看器
  • 我的previous work(不要将其视为蒙面广告,它只是展示一些相当扎实的 Swing 的一种方式)。

【讨论】:

    【解决方案3】:

    我不推荐使用 Java 进行桌面开发。我不在乎其他人怎么说,与 C++ 等本地语言相比,Java 仍然很慢。我会选择Qt。 IDE 有一个 GUI 构建器,可以集成到 Eclipse 或 Visual Studio 中。

    这是一个有用的资源: http://qt.nokia.com/products/

    【讨论】:

    • Java 对于桌面应用程序来说已经足够快了。尤其是考虑到现代计算机的强大功能。如果这是 1996 年,也许你是对的。
    • Java 的性能已经大大提高,我同意。但是,与 C 或 C++ 等原生语言相比,它的速度较慢。
    • Java 有其自身的缺点,但性能肯定不是其中之一。现代 JITed JVM 非常快(有时比 C++ 快,尤其是在考虑内存分配时)。我会更担心可能需要使用平台相关的代码。对于 C++,这只是一些 #ifdefs 的问题,对于 Java,它是 JNI,这很痛苦。
    • @Sergey Tachenov - 还有简单的 JNA 和强大的 SWIG。 “慢”的抱怨确实不再值得。
    • 我尝试了 QT(经过多年的原生 OS X 开发),我只能说“垃圾”。抱歉,这是我的意见。
    【解决方案4】:

    看看Appcelerator Titanium:它基本上在浏览器中封装了一个网络应用程序。你可以使用 wen tech 在 GUI 中拥有任何你想要的东西,但它看起来像一个 ap[p.

    【讨论】:

      【解决方案5】:

      奇怪的是,没有人提到真正满足您所有要求的 Real Studio(现为 Xojo):

      • 易于安装且不需要单独的运行时
      • 它可以编译为本机代码,因此速度相当快
      • 它有一个很好的 UI 库,每个平台都是原生的
      • IDE 非常适合拖放式 UI 设计人员
      • 目标应用程序是完全原生的并使用原生控件

      【讨论】:

      • 你能提供Real Studio的链接吗?
      【解决方案6】:

      首先不得不提http://wxwidgets.org/,这是最流行的X-platform框架之一。根据您的应用程序的复杂性和对“本地性”的要求,跨平台框架可能适合您。使用框架构建的 x 平台应用程序通常感觉有点“陌生”,尤其是在 Mac 上,但可以使用。一个很好的例子是http://taskcoach.org/

      如果您的用户能够容忍大量下载大小、大量内存需求和一些非本地外观,那么纯 Java、eclipse RCPNetBeans platform 可以为您工作。走这条路,你可能会节省相当多的开发时间。

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

      如果您需要开发生产级应用程序,我认为最有效的策略是保持原生,但将依赖于 UI 的代码拆分为跨平台(例如 C++ 业务逻辑)和 UI。这样,您将使用本机界面构建工具(每个平台都有其优点)。根据您的应用程序的复杂性和“完成”要求,您实际上可以节省走这条路的时间。

      可以在in this answer by Chris Hanson 找到“Native X-Platform”流程的详细概述。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-28
        • 2015-05-28
        • 1970-01-01
        • 2014-02-18
        • 1970-01-01
        • 2010-11-29
        • 1970-01-01
        相关资源
        最近更新 更多