Вы также можете использовать Py4J . На первой странице есть пример и много документации, но по сути, вы просто вызываете Java-методы из вашего кода на Python, как если бы они были методами python:
from py4j.java_gateway import JavaGateway
gateway = JavaGateway() # connect to the JVM
java_object = gateway.jvm.mypackage.MyClass() # invoke constructor
other_object = java_object.doThat()
other_object.doThis(1,'abc')
gateway.jvm.java.lang.System.out.println('Hello World!') # call a static method
В отличие от Jython, одна часть Py4J работает в Python VM, поэтому он всегда «обновляется» с последней версией Python, и вы можете использовать библиотеки, которые не работают на Jython (например, lxml). Другая часть выполняется на виртуальной машине Java, которую вы хотите вызвать.
Связь осуществляется через сокеты вместо JNI, а Py4J имеет свой собственный протокол (для оптимизации определенных случаев, для управления памятью и т. д.).
Отказ: я автор Py4J