Java运行环境和Python之间的桥梁。
项目描述
Rubicon-Java
Rubicon-Java是Java运行环境和Python之间的桥梁。它使您能够
实例化Java中定义的对象,
在Java中定义的对象上调用静态和实例方法,
访问和修改Java中定义的对象的静态和实例字段,以及
编写和使用Java中定义的接口的Python实现。
快速入门
Rubicon-Java由三个组件组成
一个Python库,
一个JNI库,以及
一个Java JAR文件。
已提供了一个 Makefile 来编译JNI和JAR组件。输入
$ make
以编译它们。编译输出将放置在 build 目录中。
要使用Rubicon-Java,您需要确保
rubicon.jar 在您启动Java VM时在类路径中。
Rubicon库文件应在动态库发现中可找到的位置。这意味着
在OS X上,将包含 librubicon.dylib 的目录放在您的 DYLD_LIBRARY_PATH 中
在Linux上,将包含 librubicon.so 的目录放在您的 LD_LIBRARY_PATH 中
在Windows上……某种东西 :-)
rubicon Python模块应在可添加到 PYTHONPATH 的位置。您可以使用以下命令安装rubicon
$ pip install rubicon-java
如果你这样做,设置你的PYTHONPATH时需要引用系统Python安装。
Rubicon桥从Java端开始。导入Python对象
import org.beeware.rubicon.Python;
然后启动Python解释器,并运行一个Python文件
# Initialize the Python VM String pythonHome = "/path/to/python"; String pythonPath = "/path/to/dir1:/path/to/dir2"; if (Python.start(pythonHome, pythonPath, null) != 0) { System.out.println("Error initializing Python VM."); } # Start a Python module if (Python.run("path.of.module") != 0) { System.out.println("Error running Python script."); } # Shut down the Python VM. Python.stop();
你指定的PYTHONPATH必须能够访问rubicon Python模块。
在你的Python脚本中,你可以引用Java对象
>>> from rubicon.java import JavaClass # Wrap a Java class >>> URL = JavaClass("java/net/URL") # Then instantiate the Java class, using the API # that is exposed in Java. >>> url = URL("https://beeware.org") # You can then call methods on the Java object as if it # were a Python object. >>> print(url.getHost()) beeware.org
也可以在Python中提供Java接口的实现。例如,假设你想创建一个Swing按钮,并且你想响应用户的按钮点击
>>> from rubicon.java import JavaClass, JavaInterface # Wrap the Java interface >>> ActionListener = JavaInterface('java/awt/event/ActionListener') # Define your own implementation >>> class MyActionListener(ActionListener): ... def actionPerformed(self, event): ... print("Button Pressed") # Instantiate an instance of the listener >>> listener = MyActionListener() # Create a button, and set the listener >>> Button = JavaClass('javax/swing/JButton') >>> button = Button('Push it') >>> button.setActionListener(listener)
当然,除非它在一个更大的应用程序上下文中运行,例如启动Swing GUI等,否则这个示例代码不会工作。
测试
要运行Rubicon测试套件
确保java在你的$PATH上,或者设置JAVA_HOME环境变量指向Java开发工具包(JDK)的目录。
创建Python 3虚拟环境,并确保pip & setuptools是最新的
$ python3 -m venv venv $ source venv/bin/activate (venv) $ python -m pip install --upgrade pip (venv) $ python -m pip install --upgrade setuptools
安装tox
(venv) $ python -m pip install tox
运行测试套件。以下代码在macOS和Linux上应能正常工作
(venv) $ tox -e py
这将编译Rubicon库,编译Java测试类,并在Java环境中运行Python测试套件。
文档
Rubicon的完整文档可以在Read The Docs上找到。
社区
Rubicon是BeeWare套件的一部分。您可以通过以下方式与社区交流
在Gitter的beeware/general频道。
我们倡导一个友好、尊重的社区,这在我们BeeWare社区行为准则中有详细说明。
贡献
如果您在此后端遇到问题,请在GitHub上记录。如果您想贡献代码,请Fork代码并提交一个Pull请求。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
构建分布
rubicon-java-0.2.6.tar.gz的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 2ce7a7c2b80ef47a1b9ee0e6a41efced8973b0ec87e4dd62c2312f8e014ae007 |
|
MD5 | 16a0364d54c1555801f855ec7e0cc54b |
|
BLAKE2b-256 | 2c14a02a8bdb80e2a7e104cf95fd699d97e781cb9d2e0be72658e93a320557f2 |