这取决于应用的受众:大众消费市场或企业/IT
如果其面向大众市场的消费者
电子或本机 UI,可能带有共享的非 UI 代码。例如,Visual Studio Code 是用 Electron 制作的(我上次检查过)。 Google Flutter 是一个值得评估的新进入者。 Dropbox 是 Python(或曾经是)。需要大量工作 (a) 正确打包 Python 以便顺利安装 x 平台,并且 (b) GUI 工作需要很长时间。可悲的是,对于大众市场消费应用程序(不是为 IT 人员提供的实用程序,而是为 Dropbox、Skype 等大众提供的精美设计),您将花费大量时间让安装系统工作并让应用程序看起来和感觉合适。无论您采取何种方式,这都是一项极其耗时的工作。
-
消费者:Java?我不认为 Java 非常适合消费者桌面,尽管我可能错了。有一些 Java 打包系统更精简/全部捆绑在一起。我还要说 JVM 软件公司往往会破产(稍后会详细介绍)。 FreeMind 是一款免费的思维导图工具,是 Java 可以实现的一个很好的例子。
-
消费者:.NET? 是的,适用于 Windows 端。然后使用 Mac 原生的东西和非 GUI 代码的共享库。有“.NET Core”又名 Mono,但目前对于 Mac 来说还没有完全成熟。 Mono 已经存在了五年多,我还没有看到它对于消费者应用程序来说是成熟的。问:Mac 应用商店中有多少个 .NET Core 应用?我希望它会变得更好,但在撰写本文时(2020 年),几乎没有什么值得注意的。
业务应用或 IT 工具
如果它是一个基本的商业应用程序或实用程序,基本 UI 还可以,我会评估 Xojo 和/或 LiveCode 主要是为了比较。 Xojo 非常接近 .NET。 Google Flutter 也是如此,因为它正在兴起。当您阅读本文时,Flutter 可能是最佳选择。
B2B:Java? 对于“重型”企业应用程序,这是一个久经考验的真正解决方案。鉴于 Java 应用程序往往会占用内存,因此您可能不会得到最终用户的喜爱。但对于企业级应用程序,主要关注的是非常密集的业务逻辑将起作用。对于 IT 工具,这取决于。如果它是一个三屏实用程序,请避免使用 Java。如果它是一个复杂的 ERP,那么 Java 就很好。请记住四处寻找不同的打包工具,以避免消费者对 JVM 感到头疼。同样,我喜欢的一个 Java 桌面应用程序是 Freemind。这是用 Java 制作合理的桌面应用程序的一个很好的例子。我在 Windows 和 Mac 上都使用过它,它很棒。您还可以查看编译为 Java 字节码的 Kotlin 或 Groovy(用于测试用例)。
B2B .NET? 这里有很多东西要解压。关键是,在我的偏见看来,.NET Windows 桌面开发的开发时间比 Windows Java 桌面开发快 2 到 4 倍。从制作 GUI,到更好的代码完成,到更快的编译时间,再到更少的打包和安装障碍。也就是说,在撰写本文时,“.NET Core”或 Mono 对于 MacOS 来说非常薄。我真的,真的希望这会改变。但是我一直在等待 Mono 或 .NET Core 为 MacOS 提供完整的套件而没有任何限制,但它还没有发生。如果它是一个企业应用程序,您也许可以使用 .NET Core for Mac。但请首先使用您要使用的所有控件/库构建一个基本的 .NET Core “hello world”应用程序。然后尝试在 MacOS 上为其构建安装程序,并随机找人使用 Mac 来查看它是否真正安装并运行。您可能会发现您今天在这方面苦苦挣扎(尽管我希望它会变得更好,但多年来都没有)。
跨平台的总体说明
如果这是一个较小的应用程序,不需要出色的 UX 和超深度操作系统集成,那么我会考虑 Xojo 或 LiveCode,也许是为了 UX 元素。就像@merlucin 所说,您可以在共享的东西中编写核心逻辑——也许是 C#、python 等。
这就是为什么 - Xojo 和 LiveCode 已经存在 10 年了。他们更多地是为了让事情保持一致。而我发现 .NET 和 QT 一直在变化。你有很多成本跟上琼斯和维护安装程序。因此,对于小型应用程序或实用程序 - XML 编辑器、IT 辅助工具、Xojo 或 LiveCode 可能会帮助您更快地实现目标。
例如,当您点击 Xojo 上的构建按钮时,它实际上会为 Windows、Mac 和 Linux 生成 3 个可执行文件。老实说,将其与打包跨平台 Python 应用程序甚至为 Windows 打包 .NET 应用程序的疯狂相比。
权衡的是这些工具 - Xojo 和 LiveCode 通常最终会丢失一些您需要的关键内容,需要一些技巧。您可以阅读他们的论坛。 Xojo 有点像 .NET,虽然 LiveCode 是完全基于“堆栈”的不同编程范式。
请记住开发人员的幸福感。许多开发人员不想使用 Xojo 或 LiveCode 进行编码,因为它们是鲜为人知的语言。因此,请确保您获得支持。如果你被解雇并在 Xojo 工作了 5 年会怎样?嗯。
在您的评估中,无论您选择什么——您必须在您正在评估的平台上编译一个基本的 GUI 应用程序,并让 3 个人在 Mac 上正确安装它。你会对图书馆和所需的疯狂感到震惊。尤其是如果您是 Web 开发人员,您会发现仅维护安装程序是跨 3 个平台的大量工作。没关系 GUI 的一致性。