MacRuby + IronRuby或JRuby用于桌面应用程序?

nev*_*ame 5 ruby ironruby jruby objective-c macruby

对于Web应用程序,我使用Ruby on Rails.现在是时候看看我是否可以使用Ruby编写桌面应用程序.

所以我想知道我应该选择哪一个.

我看到它的方式是MacRuby + IronRuby vs JRuby.

前者让我可以同时使用Mac和Windows的桌面应用程序,而后者可以同时使用,但只能学习一种工具.

  • 使用前者是否有强烈的论据而不是后者?

  • JRuby桌面应用程序是否与MacRuby + IronRuby桌面应用程序一样本机(或接近本机)?

  • 每种解决方案的优缺点是什么?

我也非常新的桌面开发.分享您的想法和经验!

Ber*_*ard 3

MacRuby使用本机 Apple Objective C 堆栈。
优点:它的类库基本上是 Objective C GUI 类的包装器。您可以获得快速的本机应用程序。
缺点:只能在 Mac 上运行。它们也不能移植到 iPad 或 iPhone(Ruby 解决方案都不能移植)。

IronRuby使用本机 Windows .NET 框架。
优点: 使用本机 WinForms 创建丰富的本机应用程序。它可以访问完整的 .NET 库生态系统。
缺点:仅在 Windows 上运行。

JRuby使用 Java 抽象层 (JVM)。
优点:有多个可用的 GUI 库。最常见的是 SWT 和 Swing。SWT 使用本机小部件,速度更快,更接近本机。Swing 是纯 Java(模拟小部件)并且更可移植。还有更多库抽象了 SWT 和 Swing,使它们对 Ruby 更加友好。以Swing 的Profligacy为例。
缺点:一层在一层之上,一层在一层之上。Swing 和 SWT 非常成熟,但它们之上的 Ruby 层还不太成熟。

还有另一种选择
Ruby和 Qt 库。
Qt 是跨平台的,使用本机小部件并用 C++ 编写。它相当快,但库又复杂又大。

我的经验法则是你的 GUI 越复杂,你应该越接近本机平台。您还需要评估每个图形库的学习曲线以及在平台之间移植所需的工作。

  • @Jörg W Mittag:我试图在回答中避开深奥的解决方案,因为它们引入了额外的层和限制。例如,Windows 之外的 IronRuby 需要 Mono 之类的东西来解释 CLI 代码。在 iPhone 上,等效的 MonoTouch 实际上编译为本机代码,而不是 CLI,并且您不能将 .NET GUI 与它一起使用。至于iPhone上的YARV,我找不到这方面的参考。Apple 一直非常严格地不允许在 iPhone/iPad 上使用 Silverlight、Flash、JVM 等中间层。 (3认同)
  • IronRuby 仅在 Windows 上运行的说法并不正确。它可以在任何可以使用符合 ISO 标准的 CLI 实现的地方运行,这实际上是无处不在的。哎呀,甚至还有适用于 iPhone 的 CLI 实现!事实上,如果我没记错的话,*在*之前*有一个针对 IronRuby 的 Debian 软件包,有一个 Windows 安装程序。此外,YARV 在 iPhone 上运行。哦,你忘记了一个相当重要的区别:YARV、MRI、Rubinius、IronRuby 和 JRuby 均已发布,可用于生产且符合标准,而 MacRuby 则不是 AFAICT。 (2认同)