Java 运行时环境和 Python 之间的桥梁。
项目描述
Rubicon-Java
Rubicon-Java 是 Java 运行时环境和 Python 之间的桥梁。它使您能够:
实例化在 Java 中定义的对象,
在 Java 中定义的对象上调用静态和实例方法,
访问和修改 Java 中定义的对象的静态和实例字段,以及
编写和使用在 Java 中定义的接口的 Python 实现。
快速开始
Rubicon-Java 由三个组件组成:
一个 Python 库,
一个 JNI 库,以及
一个 Java JAR 文件。
提供了一个Makefile来编译 JNI 和 JAR 组件。类型:
$ make
编译它们。编译后的输出将放置在构建目录中。
要使用 Rubicon-Java,您需要确保:
当您启动 Java VM 时,rubicon.jar位于类路径中。
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 Button,并且您想响应按钮点击:
>>> 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 Development Kit (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
安装毒物:
(venv) $ python -m pip install tox
运行测试套件。以下应该在 macOS 和 Linux 上都能正常工作:
(venv) $ tox -e py
这将编译 Rubicon 库,编译 Java 测试类,并从 Java 环境中运行 Python 测试套件。
文档
Rubicon 的完整文档可以在Read The Docs上找到。
社区
Rubicon 是BeeWare 套件的一部分。您可以通过以下方式与社区交谈:
Gitter 上的beeware/通用频道。
正如我们的 BeeWare 社区行为准则中所述,我们培养了一个热情和尊重的社区。
贡献
如果您在使用此后端时遇到问题,请将其记录在 GitHub 上。如果您想贡献代码,请分叉代码并提交拉取请求。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
内置分布
rubicon_java -0.2.6-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | d0162b054184b8cf7a1016934df730bad335d9c74c322a01eafd30c742f350d6 |
|
| MD5 | 8e14b286e012d463904f795c3af0e669 |
|
| 布莱克2-256 | 48d92f153e008ba79e0f380ea6a37f6831e84259562dc3ff3aefb686985d362e |