簡體   English   中英

Ruby是否與Java一樣跨平台?

[英]Is Ruby as cross-platform as Java?

您可以編譯Java應用程序並在Java虛擬機所在的任何計算機上運行它,而與底層硬件無關。

由於Ruby on Rails是基於Ruby構建的,我擔心在任何環境中使用Ruby構建軟件是否相同。 至少存在適用於Windows,Linux和Mac的Ruby版本。

那么,你可以用Ruby應用程序和Java應用程序做同樣的事情嗎? 換句話說,跨平台如何是Ruby?

編輯:我的意思是Ruby本身,而不是像jRuby一樣在另一個虛擬機中運行Ruby。 我是否期望在Ruby中開發比Java更多的跨平台陷阱或兩者幾乎相同?

Ruby是一種腳本語言,它在運行時由Ruby解釋器解釋,Ruby代碼被解釋並轉換為機器級語言,即匯編代碼。 談論獨立平台,如果您安裝了平台相關的Ruby解釋器,您可以在任何平台(如Linux,Windows或Mac)中運行ruby代碼。

在Java中,它被編譯並轉換為中間字節類,並且此字節類由平台相關的JVM(Java虛擬機)解釋。

通過這種方式,您可以將Ruby源文件視為可以在任何平台上運行的字節類,只有一個差異字節類已經編譯,但ruby源文件將在運行時編譯。

Ruby與底層平台的關系非常緊密。 當涉及到處理/線程機制和各種形式的IPC時尤其如此。 與作為目錄分隔符的“普通”挑戰相比,這些是要克服的更重要的挑戰,等等。 我很確定Windows Ruby運行時和Linux Ruby運行時之間沒有奇偶性。

使用Java,IPC /進程/線程模型在運行JVM的所有平台上都是相同的。

只要您不接觸硬件或線程,Ruby就應該在三個主要操作系統上工作。 對於Web開發,Ruby在大多數地方都會一樣。 對於更高級的應用程序,不,因為它不提供JVM的抽象(您可能已經考慮過)。

Java是跨平台的。 Ruby不是。 這聽起來像是一個事后的想法,“哦,我們有Windows用戶,讓​​我們試着讓它工作”。

在Java中,我在多年的大量使用中經歷了不到10個跨平台問題。 這個領域顯然是一些棘手的領域。 系統/文件系統細節。

在ruby中,即使在執行第一個rails教程時我也遇到過問題( https://github.com/twbs/bootstrap-sass/issues/696 )。 我不會考慮ruby跨平台。 該平台依賴於大量的依賴關系,這些依賴關系中的任何一個都會使用任何特定於平台的東西。 即看到此錯誤: Windows上的ExecJS :: RuntimeError試圖遵循rubytutorial

我還繼承了一個大的ruby項目,它依賴於capistrano,webkit,bcrypt,這些需要一個開發構建工具包和本機構建。 它不僅起作用。 看到有麻煩的人在這里: https//github.com/codahale/bcrypt-ruby/issues/116這很有趣,有一點他們建議有人關注日語帖子:)

如果沒有別的,你可以運行JRuby,一個用Java編寫的Ruby解釋器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM