java - 请问JPython、JRuby存在的意义是什么?
阿神
阿神 2017-04-17 17:24:10
[Python讨论组]

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

阿神
阿神

闭关修行中......

全部回复(3)
怪我咯

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

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

迷茫

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号