Извините за воскрешение темы, но я думаю, что у меня есть лучший ответ: -)
Вы также можете использовать Py4J , который состоит из двух частей: библиотеки, работающей на CPython (или любого интерпретатора Python в этом отношении), и библиотеки, работающей на виртуальной машине Java, которую вы хотите вызвать.
На первой странице есть пример и множество документации, но по сути вы просто вызываете методы 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
Связь осуществляется через сокеты вместо JNI.
Отказ от ответственности: я являюсь автором Py4J