Ruby和Java一样是跨平台的吗?
您可以编译Java应用程序并在Java虚拟机所在的任何机器上运行它,而不依赖于底层硬件 因为它是基于Ruby构建的,所以我担心在任何环境中用Ruby构建软件是否相同。至少有适用于Windows、Linux和Mac的Ruby版本 那么,对于Ruby应用程序和Java应用程序,您能做同样的事情吗?换句话说,Ruby是如何跨平台的Ruby和Java一样是跨平台的吗?,java,ruby-on-rails,ruby,Java,Ruby On Rails,Ruby,您可以编译Java应用程序并在Java虚拟机所在的任何机器上运行它,而不依赖于底层硬件 因为它是基于Ruby构建的,所以我担心在任何环境中用Ruby构建软件是否相同。至少有适用于Windows、Linux和Mac的Ruby版本 那么,对于Ruby应用程序和Java应用程序,您能做同样的事情吗?换句话说,Ruby是如何跨平台的 编辑:我指的是Ruby本身,而不是运行在另一个虚拟机中的Ruby,如。我应该期望Ruby中的跨平台gotchas开发比Java中的更多,还是两者几乎相同?Ruby是一种脚本
编辑:我指的是Ruby本身,而不是运行在另一个虚拟机中的Ruby,如。我应该期望Ruby中的跨平台gotchas开发比Java中的更多,还是两者几乎相同?Ruby是一种脚本语言,它在运行时由Ruby解释器解释,Ruby代码被解释并转换为机器级语言,即汇编代码。说到平台独立性,若您安装了平台相关的ruby解释器,那个么您可以在Linux、Windows或Mac等任何平台上运行ruby代码 在Java中,它被编译并转换为一个中间字节类,这个字节类由依赖于平台的JVM(Java虚拟机)解释
通过这种方式,您可以将Ruby源文件视为可以在任何平台上运行的字节类,其中一个不同之处是字节类已经编译,但Ruby源文件将在运行时编译。如果没有其他内容,您可以运行JRuby,一个用Java编写的Ruby解释器。Ruby与底层平台的绑定相当紧密。当涉及到进程/线程机制和各种形式的IPC时,情况尤其如此。与目录分隔器等“琐碎”挑战相比,这些挑战更需要克服。我很确定,比如说,WindowsRuby运行时和LinuxRuby运行时之间是不对等的
对于Java,运行JVM的所有平台上的IPC/进程/线程模型都是相同的。只要不涉及硬件或线程,Ruby应该可以在三种主要的操作系统上工作。对于web开发,Ruby在任何地方的工作方式都是一样的。对于更高级的应用程序,没有,因为它不提供JVM的抽象(您可能已经想到了)。Java是跨平台的。Ruby并非如此。它让人感觉就像是“哦,我们有windows用户,让我们试着让它工作吧” 在Java中,我在多年的大量使用中遇到的跨平台问题不到10个。很明显,这是一个棘手的问题。系统/文件系统详细信息 在ruby中,我甚至在编写第一个rails教程时也遇到过问题,就像其他人一样()。我不会考虑Ruby交叉平台。平台依赖于一系列依赖项,其中任何一个依赖项使用特定于平台的任何东西,整个依赖项都会中断。i、 e.查看此错误: 我还继承了一个较大的ruby项目,它依赖于capistrano、webkit、bcrypt,这些都需要开发构建工具包和本机构建。它不仅仅起作用。看看这里有麻烦的人:
有趣的是,在某一点上,他们建议有人关注一篇日本帖子:)JRuby不会在许多使用旧的、不兼容的Java字节码版本的嵌入式系统上运行。你应该提到的是,你指的是嵌入式系统,在读到第一个答案的评论之前,我从未想过这一点(它们似乎也错过了这些目标平台)你说得对,珍,我被否决了两次,因为这个问题没有提到嵌入式系统,我根据问题回答。你的评论是+1。你是指嵌入式系统吗?为什么这被否决了两次?这个问题充其量是含糊不清的,最坏是一个火爆战发起者。这个答案很好。(我用+1救了你一点。)解释语言(如Ruby)通常在多种不同的平台上都可以使用相同的功能。所有特定于平台的繁重工作都是在移植解释器时完成的,并且脚本可以在任何有解释器的平台上使用相同的功能。最大的警告是库。有些库可能不适用于所有相同的平台Ruby是。因此,如果您使用(例如)Linux专用库,并尝试在Windows机器上运行代码,您的代码将不会真正“跨平台”(尽管这不是语言本身的错)。请提供任何参考资料?