Using a java library from python Using a java library from python python python

Using a java library from python


Sorry to ressurect the thread, but there was no accepted answer...

You could also use Py4J. There is an example on the frontpage and lots of documentation, but essentially, you just call Java methods from your python code as if they were python methods:

>>> 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

As opposed to Jython, Py4J runs in the Python VM so it is always "up to date" with the latest version of Python and you can use libraries that do not run well on Jython (e.g., lxml). The communication is done through sockets instead of JNI.

Disclaimer: I am the author of Py4J


Take a look at Jython. It's kind of like JNI, but replace C with Python, i.e. you can call Python from Java and vice versa. It's not totally clear what you're trying to do or why your current approach isn't what you want.


Wrap your Java-Code in a Container (Servlet / EJB).

So you donĀ“t loose time in the vm-startup and you go the way to more service-oriented.

For the wraping you can use jython (only make sense if you are familiar with python)

Choose a communication-protocoll in which python and java can use:

  • json (see www.json.org)
  • rmi (Python: JPype)
  • REST
  • SOAP (only for the brave)

Choose something you or your partners are familliar with!