Jython is a Java based Python implementation and the most seamless way to integrate Python and Java. However, it does not support native extensions written for CPython like NumPy or SciPy. Since most scientific Python code fundamentally depends on exactly such native extensions directly or indirectly, it usually cannot be run with Jython. JyNI (Jython Native Interface) aims to close this gap. It is a layer that enables Jython users to load native CPython extensions and access them from Jython the same way as they would do in CPython. In order to leverage the JyNI functionality, you just have to put it on the Java classpath when Jython is launched. It neither requires you to recompile the extension code, nor to build a customized Jython fork. That means, it is binary compatible with existing extension builds. At the time of writing, JyNI does not fully implement the Python C-API and it is only capable of loading simple examples that only involve most basic built-in types. The concept is rather complete though and our goal is to provide the C-API needed to load NumPy as soon as possible. After that we will focus on SciPy and others. We expect that our work will also enable Java developers to use CPython extensions like NumPy in their Java code.
翻译:Jython 是基于 Java 的 Python 执行, 也是整合 Python 和 Java 的最顺畅的方式。 但是, 它不支持像 NumPy 或 SciPy 那样为CPython 写入的本地扩展。 由于大多数科学 Python 代码基本上直接或间接地取决于本地扩展, 它通常无法与 Jython 一起运行。 Jynni ( Jython 本地界面) 的目的是缩小这个差距。 它是一个让 Jython 用户能够以与 CPython 相同的方式装入本地CPCPn 扩展和从 Jython 访问它们。 但是, 为了利用 Jynion 功能, 您只需在 Java 类中应用 Jython 代码即可将其放置在 Java 类中。 它既不要求您重新拼凑扩展扩展扩展扩展代码, 也不要求建立定制 Jython 的 Jyson 叉。 这意味着, 它与现有的扩展结构相兼容。 在撰写时, JyNI 将不完全执行 Pythson C- AP 并且 它只能在 安装简单的例子中输入仅包含 的 Cy- hind- hind- hind- hind- gind- hind- hind- hind- gind- hind- hind- hind- hindings