Py4J 0.10.0 has just been released on pypi and maven central.
This is a mostly backward-compatible release with many new features:
- Added a new threading model that is more efficient with indirect recursion between Java and Python and that enables users to control which thread will execute calls. See the advanced topics guide for more information. Thanks to kichwacoders for funding the implementation and providing the initial idea.
- Added TLS support to encrypt the communication between both sides. Thanks to @njwhite.
- Added initial byte stream support so Python can consume Java byte streams more efficiently. Support is still preliminary and subject to change in the future, but it provides a good base to build on. See these a Python unit test and a Java example class for a small example. Thanks to @njwhite.
- Java side: converted build script from ant to gradle. Introduced Java coding conventions and static code analysis. See the new Java Coding Conventions for more details. ant is still supported for now, but it will be removed when Py4J reaches 1.0.0.
- Java side: it is now possible to build a osgi bundle and an Eclipse update site from Py4J source. See the documentation section about using Py4J with Eclipse
- Github 0.10.0 milestone
This release is backward compatible for the user public API, but the internal protocol has changed, new interfaces have been extracted and a few Java interfaces (e.g., py4j.Command) used to extend Py4J have been modified.
This release has been made possible by the generous contributions from many users. Every bug reports, patches, pull requests, ideas or help on the mailing list is greatly appreciated.
In the coming weeks, I’ll release a public roadmap to Py4J 1.0, which I want to release before the end of 2016.