可爱的 Python:JPython 和 Python for .NET内幕
2007-03-29 12:07:40 来源:WEB开发网但我认为实际上它们几乎不相上下,即使在现实世界中,谁也不比谁好多少。
Warsaw :我坚决相信在语言级别上,JPython 和 CPython 应该完全兼容。在不可能的情况下,Guido 确定差异是否与实现相关,或者哪一种实现是“多错”的。我希望看到 CPython 和 JPython 最终成为同等的,JPython 在某些方面推动 CPython 开发和 CPython 推动 JPython 开发一样。
当前它的一个示例就是 Unicode 支持。JPython 已经是全部 Unicode 化了。另一个示例是类型/类划分。在 CPython 中,您可以有一些内置类型,例如字符串、字典、列表和数。还有类和实例。内置类型不能继承。更让人困惑的一点是,实例既有类型又有类。首先弥补 JPython 中的这一缺憾更容易些,因为其面向对象实现。
Mertz :对于 JPython 和 CPython 之间的不兼容性您是怎么认为的?
Warsaw :在事物工作的方法上有许多细小的差异。它们都在 JPython 的文档中进行了大致说明。某些作为提供语言定义的可接受差异分类,某些指出某个或其它实现应该被修正的地方。大多数都非常次要。
Bock :某些模块还没有或者无法以 JPython 实现。某些模块又只能作为 JNI 模块实现,类似的模块在部署环境中是没有用的。
Bock :实际上,当我移植自己的脚本和程序(与 IDLE、PySol 和 PMW 工具箱一起)时,我遇到的问题不是无用信息收集的随机回收或缺少 _del_method。它们是其他人以前没有遇到过的小问题,例如 CPython 行为。
Warsaw :下一个版本的 JPython 将与 Python 2.0 语言定义兼容,因此最大的变化将在库中。CPython 发行版中任何以纯 Python 编写的标准库模块都应该是可移植的。C 扩展模块不行,除非它们特别通过 JNI 网桥集成或以 Java 重新实现。任何大量使用 Java API 的 JPython 应用程序在移植回 CPython 时都将经过一段艰难时期。
另一方面,两种系统的库中有许多公共功能。在有足够深谋远虑的前提下,可以将兼容性层构建到应用程序中。
Mertz :对于 JPython 今后的方向有什么想法吗?
Warsaw :我们已经基于公用 JPython 1.1 发行版创建了 JPython 后继者 "Jython"。这样做是为了确保项目的长久性和稳定性。依据 CNRI 的 JPython 1.1.x 许可证实现了所有这些。我们将整个开发过程移到了 SourceForge,并使用对 CPython 非常合适的相同开放过程管理它。Finn 和我两人无疑要参与 Jython 未来的开发;Jython 将使用 OSI 核准的 CPython 2.0 许可证发行。它与您将获得的“正式”派生很接近,所以当前的 JPython 社区应该确信 Jython 与它永远不会相差太多。我们希望它们最终都能迁移到 Jython。
现在代码仍处在试验阶段,但 Finn 和我将为 Jython 2.0 发行版(已经包含了 Finn 的勘误表)致力于建立几个技术性里程碑。CPython 2.0 具有增强的指派和扩展打印等特性(很快还将带有列表理解)。我们已集成了免费的 Apache Jakarta OROMatcher 代码,消除了双许可证的需要,并修正了许多错误。我不知道 Jython 2.0 的第一个 alpha 发行版何时出现,但当前所有代码都在 SourceForge CVS 树中获得。
更多精彩
赞助商链接