【问题标题】:Dev Platform of choice for Windows and OS X desktop appsWindows 和 OS X 桌面应用程序的首选开发平台
【发布时间】:2009-09-03 12:34:28
【问题描述】:

我即将编写一个小型桌面应用程序,主要应该在 Windows 和 Mac OS X 上运行。我目前的选择是:

  • 我通常使用 Java + Swing 来处理这类东西,但这个应用程序应该非常小(大约 1Mb),我不想在 Windows 版本上嵌入 ~26mb JRE 或要求用户安装它。
  • 我对 Flex 和 AIR 有很好的体验,这个应用程序的用户最终会使用 Flash 播放器(该应用程序大部分时间都会输出 swf 文件)。但是性能很重要(有点),我想编写一个具有原生外观的应用。
  • 我也一直在考虑 realBasic。它看起来很有希望并且很容易上手。但是,我真的不想写基本的。距离我编写基本程序已经很长时间了(大约 10 年)。另外,我找不到很多支持者。

我没有任何 C/C++ 工作经验。这是一个非常小的项目,我想在大约一个月内完成。有什么建议吗?

【问题讨论】:

    标签: java air desktop-application realbasic


    【解决方案1】:

    REALbasic 是创建跨平台应用程序的好方法。该语言完全面向对象,与 Java 的相似程度远远超过您可能使用过的任何 BASIC 版本。

    REALbasic 确实可以编译为具有原生外观的原生应用程序,但可执行文件并不小。即使是一个空的应用程序也会超过 1MB。

    但是,鉴于您的应用会输出 Flash 文件,看来 Flex/AIR 可能最适合这个项目。

    【讨论】:

      【解决方案2】:

      我会说坚持使用 Java + Swing,与相反的信念不同,您可以使用 Swing 制作漂亮的程序。您需要付出一些努力来设置一些属性,并确保根据您所在的操作系统创建文件的位置,但与 C++ 或 C 相比,工作量要少得多。 即使您什么都不做,您的应用程序看起来也一样,并且可以在所有主要操作系统(Linux、Windows、Mac Os X)上运行。

      对于一些参考检查mac-widgets 这些与 os x 提供的对应物没有什么不同。这家伙还有一个博客,他解释了他是如何做到的。在 Java 中,您可以覆盖任何内容以将其塑造成您想要的样子。

      至于 JRE install os x 预装了 java 没有问题,对于 Windows,你可以使用一个 exe 包装器,它会检查正确的 JRE 并为你安装它,但正如它已经指出的那样,大多数计算机都预装了 java。

      【讨论】:

        【解决方案3】:

        如果您想要一个代码库轻松在 Windows 和 OS X 上运行,您基本上有两种选择:

        • Java
        • Web 应用程序。

        我对 Java 路径有很好的经验。程序运行得相当好,并且您在 Swing GUI 中拥有强大的功能(但需要一些时间来适应)。如果您使用 Java Web Start 启动,您可以控制部署,用户很容易被提示下载 JRE(最新版本的下载量要小得多),您可以选择 Nimbus 外观(我认为这是非常好)或特定于平台的外观和感觉,在你的 main 方法中只有一行。

        在我看来,唯一的缺点是 JRE 下载。我会接受这一点并继续该项目:) 如果没有大量的肘部油脂,您将不会得到更好的结果。

        【讨论】:

        • 这些不是 IMO 的唯一选择。几种脚本语言可以跨平台工作。以 Tcl/Tk 为例,您可以在 Tcl 中编写应用程序,并将其与特定于平台的运行时相结合,为每个目标平台创建一个可执行文件。
        【解决方案4】:

        在基于 Windows 的目标用户中,JRE 真的那么少吗?我相当肯定大多数制造商现在在他们的机器上发布了最新版本的 Java。如果这种情况很少见,那么使用 SWT 并编译为本机可能是一种选择¹。

        ¹ - SWT(据我所知)将 Swing 内容编译为本机基本上意味着您需要整个 JRE。我失败的记忆告诉我这是由于一些奇怪的许可证要求。

        【讨论】:

        • SWT 不涉及编译 AFAIK - SWT 是另一个小部件库,它使用本机操作系统调用来绘制小部件(与 swing 不同,它使用像 awt 这样的绘图 API,它只是模拟原生小部件的外观和感觉)。因此,它的速度更快,而且看起来更原生。
        • 我的意思是将应用程序编译为本机以避免包含 JRE。我建议使用 SWT 的原因是(最后我检查过)如果您编译为本机但包含 Swing,那么您还必须包含完整的 JRE(这是我们想要避免的)。如果我们将 Swing 排除在外,那么我们只能包含应用程序实际需要的 JRE 位。使用 SWT 还可以让您使用 GCJ。
        • javalobby.org/java/forums/t19231.html#91837038 回复九 - *问题是 Sun JRE 许可证不允许部分重新分发,因此您必须将其包含在您编译的应用程序中,即使其中大部分不会被使用。 *
        • 降级者介意解释原因吗?将 Java 编译为本机以减少文件大小开销接缝对我来说是一个不错的选择。
        • 无论如何,互联网上都只有悲痛欲绝的人 - 这是一个有效的建议,请不要对否决票感到沮丧。我认为这个答案不值得投反对票。
        【解决方案5】:

        网络应用对您的效果如何?如今,浏览器的 GUI 功能对于大多数事情(如果浏览器不是 IE)来说已经足够了,除了像游戏这样的高清实时图形。 http://labs.mozilla.com/prism/ 之类的东西可能符合要求吗?

        【讨论】:

        • 恐怕用户会犹豫上传他们将在线处理的文件。但我仍在考虑这个选项。如果我使用 Flex/AIR,我可能还会提供在线(浏览器内)版本。
        • 当我说网络应用程序时,您误解了我的意思:网络应用程序不需要托管在远程服务器上 - 它可以是本地服务器,在客户端计算机上运行。 GUI 是基于 html 的,用户可以通过浏览器访问它。
        猜你喜欢
        • 2010-09-28
        • 1970-01-01
        • 2017-04-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-16
        相关资源
        最近更新 更多