8. Changelog

The changelog describes in plain English the changes that occurred between Py4J releases.

8.1. Py4J 0.8.2.1

  • Fixed a test that used an assert method that does not exist in Python 2.6

8.2. Py4J 0.8.2

  • Fixed constructors not being able to pass proxy (python classes implementing Java interfaces)
  • Java 6 compatibility was restored in compiled jar file.
  • Fixed unit tests for JDK 8
  • Added a few extra paths to find_jar_path
  • github 0.8.2 milestone

8.3. Py4J 0.8.1

  • Fixed a bug in type inference when interface hierarchy is deeper than abstract class hierarchy.
  • Added a utility method is_instance_of in py4j.java_gateway to determine if a JavaObject is an instance of a class.
  • Released Py4J in central Maven repository.
  • github 0.8.1 milestone

8.4. Py4J 0.8

  • Major fix to the Java byte[] support. Thanks to @agronholm for spotting this subtle but major issue and thanks to @fdinto from The Atlantic for providing a patch!
  • Ability to fail early if the py4j.java_gateway.JavaGateway cannot connect to the JVM.
  • Added support for long primitives, BigDecimal, enum types, and inner classes on the Java side.
  • Set saner log levels
  • Many small bug fixes and API enhancements (backward compatible).
  • Wrote a section in the FAQ about security concerns and precautions with Py4J.
  • Added support of Travis-CI and cleaned up the test suite to remove hardcoded paths.
  • github 0.8 milestone

8.5. Py4J 0.7

  • Major refactoring to support Python 3. Thanks to Alex Grönholm for his patch.
  • The build and setup files have been totally changed. Py4J no longer requires Paver to build and everything is done through ant. The setup.py file only uses distutils.
  • Added support for Java byte[]: byte array are passed by value and converted to bytearray or bytes.
  • Py4J package name changed from Py4J to py4j.
  • Bug fixes in the Python callback server and unicode support.
  • github 0.7 milestone

8.6. Py4J 0.6

  • Added new exception Py4JJavaError that enables Python client programs to access instance of Java exception thrown in the Java client code.
  • Improved Py4J setup: no more warnings displayed when installing Py4J.
  • Bug fixes and API additions.
  • github 0.6 milestone

8.7. Py4J 0.5

  • Added the ability to import packages (e.g., java_import(gateway.jvm, 'java.io.*'))
  • Added support for pattern filtering in JavaGateway.help() (e.g., gateway.help(obj,'get*Foo*Bar'))
  • Added support for automatic conversion of Python collections (list, set, dictionary) to Java collections. User JavaGateway(auto_convert=True) or an explicit convertor.
  • Created two Eclipse features: one embeds the Py4J Java library. The other provides a default GatewayServer that is started when Eclipse starts. Both features are available on the new Py4J Eclipse update site: http://py4j.sourceforge.net/py4j_eclipse
  • Redesigned the module decomposition of Py4J: there are no more mandatory circular dependencies among modules.
  • github 0.5 milestone

8.8. Py4J 0.4

  • Polishing of existing features: fields can be set (not just read), None is accepted as a method parameter, methods are sorted alhabetically in gateway.help(), etc.
  • Java Exception Stack Trace are now propagated to Python side.
  • Changed interfaces member in Callback classes to implements.
  • Internal refactoring to adopt clearer terminology and make Py4J protocol extensible.
  • Many bug fixes: most are related to the callback feature.
  • github 0.4 milestone

8.9. Py4J 0.3

  • Added support for Java arrays and set.
  • Added support for callbacks: Java objects can now call back Python objects.
  • Completely redesigned threading and connection model of Py4J to allow multiple threads and callbacks on both side.
  • Refactored the memory management to ensure best effort garbage collection.
  • github 0.3 milestone

8.10. Py4J 0.2

  • It is now possible to call constructors and reference static members: use the jvm member of a JavaGateway object.
  • Java Map is converted to a Python Dictionary.
  • Field access is supported through the get_field function or the auto_field=True member of JavaGateway.
  • Obtain an interactive help page with JavaGateway.help(object).
  • Set is only accessible through the Java Set interface for now.
  • Arrays can be referenced, but individual items can only be accessed with this workaround: gateway.jvm.java.lang.reflect.Array.get(object,index).
  • Complete rewrite of the reflection engine on the Java side for more flexibility.
  • Improved memory model: no more memory leak caused by Py4J.
  • New concurrency model: Py4J is now thread-safe.
  • github 0.2 milestone

8.11. Py4J 0.1

  • This is the first release.
  • Basic features like connecting to a JVM and calling methods are implemented.
  • Java List is converted to a Python List.
  • Field access, constructors, and static classes are NOT accessible yet.
  • Dictionary and Set are only accessible through the Java Map and Set interface for now.
  • Arrays can be referenced, but individual items cannot be accessed yet.
  • github 0.1 milestone

Questions/Feedback?