2010-08-22 70 views
5

对于Web应用程序我使用Ruby on Rails。现在是时候看看我能否用Ruby编写桌面应用程序。适用于桌面应用程序的MacRuby + IronRuby或JRuby?

所以我不知道我应该选择哪一个。

我看到它的方式是MacRuby + IronRuby与JRuby。

前者让我拥有适用于Mac和Windows的桌面应用程序,而后者可让两者兼备,但只能学习一种工具。

  • 使用前者比后者强有争议吗?

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

  • 每种解决方案有哪些优缺点?

我也是很新的桌面开发。分享你的想法和经验!

回答

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更友好。例如,请查看Profligacy
缺点:图层上方的图层。 Swing和SWT都非常成熟,但是它们之上的Ruby层次并不如此。

还有另一个选项
红宝石与Qt库。
Qt是跨平台,使用原生的小部件,并用C++编写。这是相当快的,但图书馆是复杂和大。

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

+2

IronRuby仅在Windows上运行并不正确。它可以在任何可以使用符合ISO标准的CLI实现的地方运行,这几乎在任何地方。哎哟,甚至还有iPhone的CLI实现!事实上,如果我没有记错,那么在有Windows安装程序之前,有一个针对IronRuby *的Debian软件包。另外,YARV在iPhone上运行。哦,你忘了一个相当重要的区别:YARV,MRI,Rubinius,IronRuby和JRuby已经发布,可以生产并且符合标准,MacRuby与AFAICT无关。 – 2010-08-23 01:24:02

+3

@JörgW Mittag:我试图在我的回答中避开深奥的解决方案,因为它们引入了额外的层次和限制。例如,Windows之外的IronRuby需要类似Mono的解释CLI代码。在iPhone上,等效的MonoTouch实际上编译为本地代码,而不是CLI,并且不能使用.NET GUI。至于iPhone上的YARV,我无法找到对此的参考。 Apple一直非常严格地禁止iPhone/iPad上的Silverlight,Flash,JVM等中间层。 – Alkaline 2010-08-23 05:46:52