Py4J is developed by Barthélémy Dagenais. The goal is to enable developers to program in Python and benefit from easy to use libraries such as lxml while being able to reuse useful Java libraries and frameworks such as PPA and Eclipse. You can see Py4J as an hybrid between a glorified Remote Procedure Call and using the Java Virtual Machine to run a Python program.
Py4J is distributed under the BSD license.
As opposed to Jython, Py4J does not run in the JVM so it does not need to reimplement the Python language and developers can use any libraries supported by their Python interpreter. Py4J is more focused than JPype because it only supports calls and field references (for now) and it does not attempt to do things like linking Python threads to Java threads. JPype also uses JNI to communicate with the JVM while Py4J uses plain old sockets, which is more portable in practice.
In terms of performance, Py4J has a bigger overhead than both of the previous solutions, but if performance is critical to your application, accessing Java objects from Python programs might not be the best idea :-) We plan to evaluate the performance overhead of Py4J once we have a stable release.