首页 > 请问JPython、JRuby存在的意义是什么?

请问JPython、JRuby存在的意义是什么?

JPython、JRuby和 python、ruby有很大区别吗?
JPython、JRuby有什么明显的有点呢, 实际项目中会使用JPython、JRuby吗?
望牛人解答


严格来说, Python 是一个语言标准/规范,而它对应的实现有 CPython、Jython、IronPython 等等。而通常广义的 Python 是指 CPython 这个实现。 参见 Python Implementations。至于为什么要有这么多实现,那只能说不同实现有各自的优缺点吧。就像同一个 C++ 标准有好几种编译器实现一样,一份代码拿到不同编译器下编译出的结果会有一定性能差别。

Ruby 不熟,不过 Ruby和 JRuby 应该也是类似关系吧。


Ruby也好,Python也罢,都仅仅指的是一种语言。这就好像ISO定义好了C++语言规范,而大家都可以来实现这个规范(Microsoft的VC++, GNU的GCC等)

说回Ruby和Python, 当我们一般谈论他们俩时,默认都指的是其默认的实现(Reference Implementation)。这对于Ruby来讲就是MRI Ruby, 而对于Python来说则是CPython,这两个实现是这两种语言被开发者们所熟知且应用广泛的。

但这并不妨碍其他实现的存在。这些“其他”实现的存在一般都是为了补充提供一些默认实现没有的特性,解决一些特定场景下的需求痛点。 比如pypy是Python另一个比较出名的实现,他能将Python编译成Native代码,从而大大提升其性能。

好了,所以题主提到的JRuby和JPython无非就是这两种语言规范下的又一种实现。它们提供了怎样的特性呢?我认为至少有这么两点

  1. 他们被编译成Byte code跑在JVM上,借由JVM提供动态的优化和良好的性能保证

  2. 我认为是最为有价值的一点:加入JVM生态系统的最大利益便是和其他语言的互交互性(interop),这意味着你能用Ruby, Python调用Java Scala等语言,等于为这两门语言打开了巨大的第三方库资源,甚至为其参与企业级开发提供了可能


楼上没有说到很重要的一点 并发性能!
Python Ruby的默认实现,由于GIL的存在,无法利用现代的多核CPU实现真正的并发。
JVM解决了这个问题,于是就有了JRuby,JPython

【热门文章】
【热门文章】