当前位置: 首页 > 面试题库 >

如果您不懂Java,运行JRuby有优势吗?

於乐
2023-03-14
问题内容

我听说过有关JRuby的很棒的事情,并且我知道您可以在不了解任何Java的情况下运行它。我的开发能力很强,Java并不是我所知道的工具之一。这是一个庞大的工具,具有大量的随附工具,例如Maven
/ Ant / JUnit等。

仅出于性能原因,将当前的Rails应用程序迁移到JRuby是否值得?也许,如果我同时学习一些基本的Java,那么还有很多显而易见的好处,例如更好的调试/性能优化工具?

希望就此提出一些建议。


问题答案:

我认为您几乎钉牢了它。

JMRI还是另一个Ruby执行引擎,就像MRI,YARV,IronRuby,Rubinius,MacRuby,MagLev,SmallRuby,Ruby.NET,XRuby,RubyGoLightly,tinyrb,HotRuby,BlueRuby,Red
Sun以及其他所有引擎一样。

主要区别在于:

  • 可移植性:例如,仅在x86 32位Linux上正式支持YARV。在OSX或Windows或64位Linux上不支持。Rubinius仅适用于Unix,不适用于Windows。JRuby OTOH 随处可见 :台式机,服务器,电话,App Engine(随便命名)。它可以在Oracle JDK,OpenJDK,IBM J9,Apple SoyLatte,RedHat IcedTea和Oracle JRockit JVM(以及我可能遗忘的其他两个JVM)上运行,也可以在Dalvik VM上运行。它可以在Windows,Linux,OSX,Solaris,多个BSD,其他专有和开放式Unices,OpenVMS以及多个大型机OS,Android和Google App Engine上运行。实际上,在Windows上,与“ Ruby”(意味着MRI或YARV)本身相比,JRuby通过了更多的RubySpec测试!

  • 可扩展性:在JRuby上运行的Ruby程序可以使用任何任意Java库。通过JRuby-FFI,他们还可以使用任何任意C库。借助JRuby 1.6中新的C扩展支持,他们甚至可以使用MRI和YARV C扩展的很大一部分,例如Mongrel。(请注意,“ Java”或“ C”库实际上并不意味着用这些语言编写,而仅意味着使用Java或C API。它们可以用Scala或Clojure或C ++或Haskell编写。)

  • 工具:每当有人为YARV或MRI编写新工具(例如memprof)时,事实证明JRuby在5年前就已经有一个工具可以做同样的事情,但效果更好。Java生态系统拥有一些用于“运行时行为理解”的最佳工具(这是我刚刚编造的一个术语,它的含义不只是简单的概要分析,而是意味着可以深入理解您的程序在运行时的确切功能的工具,它的性能特征是什么,瓶颈在哪里,内存在哪里,以及最重要的 原因为什么 所有这些都在发生)和市场上可用的可视化,至少在某种程度上,几乎所有这些都可以与JRuby一起使用。

  • 部署:假设您的目标系统已经安装了JVM,那么部署JRuby应用程序(我不仅在谈论Rails,我还指的是台式机,移动设备,其他类型的服务器)实际上只是在复制一个JAR(或WAR)然后双击。

  • 性能:JRuby具有更高的启动开销。作为回报,您可以获得更高的吞吐量。实际上,这意味着与运行集成测试一样,将Rails应用程序部署到JRuby是一个好主意,但是对于开发人员单元测试和脚本,MRI,YARV或Rubinius是更好的选择。请注意,许多Rails开发人员只是在MRI上进行开发和单元测试,在JRuby上进行集成测试并进行部署。无需为所有内容选择一个执行引擎。

  • 并发性:JRuby同时运行Ruby线程。这意味着两件事:如果锁定正确,则程序将运行得更快;如果锁定不正确,则程序将中断。(不幸的是,MRI,YARV和Rubinius都不同时运行线程,因此仍然有一些坏掉的多线程Ruby代码不知道它坏了,因为显然并发错误只有在存在实际并发时才会出现。)

  • 平台(这在某种程度上与可移植性有关):那里有一些令人惊叹的Java平台,例如具有768 GiBytes RAM和864 CPU内核的Azul JCA,专门设计用于内存安全,指针安全,垃圾回收,面向对象语言。安卓 Google App Engine。所有这些都运行JRuby。



 类似资料:
  • 我读到了Spring框架的DAOSupport类。但我无法理解这些DAOSuport类的优势。在DAOSupport类中,我们调用getXXXTemplate()方法来获取特定的模板对象,然后进一步将其用于DB访问。 即使不扩展DAO支持,我们也可以在类中注入XXXTemplate。其余部分将保持不变。 那么,扩展DAOSupport类有什么好处呢? 编辑:-添加示例类扩展Spring的Simpl

  • 问题内容: 我有用R编写的程序。我可以从R GUI运行它,它会吐出结果。 有没有办法从Java运行该程序? 问题答案: 您可能需要看一下这三个项目。 JRI-Java / R接口 Rserve rcaller

  • 我对Spring框架相当陌生,所以我为这个愚蠢的问题道歉。我一直在学习Javabean;我也一直在阅读Spring框架是如何成为bean容器的,以及如何有不同类型的bean(使用JavaBeans的优势是什么?)。 然而,我仍然不明白他们为什么如此强大。如果我们想,比如说,创建一个Spring web应用程序,我们不能不使用bean,而只使用POJO吗?与POJO相比,使用Java bean的真正

  • 本文向大家介绍HTML5的优势有哪些?相关面试题,主要包含被问及HTML5的优势有哪些?时的应答技巧和注意事项,需要的朋友参考一下 一些网络研究的前5名似乎提供了以下HTML5特性; * 相关性 * 标记/代码简洁 * 语义清晰 * 简明的表单和网络应用程序 * 缓存式离线应用程序

  • 问题内容: 使用Java或使用该功能的任何其他语言的本地类的优点是什么? 问题答案: 它们使您可以从父类中提取逻辑并对其进行对象化。这会将功能从不属于它的地方删除,并将其放入自己的类中。但是,如果仅在很短的时间内(仅在单个代码块的持续时间内)需要此新对象,该怎么办?好吧,这就是地方课程适合的地方。

  • 本文向大家介绍lightgbm优势相关面试题,主要包含被问及lightgbm优势时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 1)更快的训练速度和更高的效率:LightGBM使用基于直方图的算法。2)更低的内存占用:使用离散的箱子(bins)保存并替换连续值导致更少的内存占用。3)更高的准确率(相比于其他任何提升算法):它通过leaf-wise分裂方法产生比level-wise分裂方法更