繁体   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