2010-08-22 73 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