Jpype Versions Save

JPype is cross language bridge to allow Python programs full access to Java class libraries.

v1.5.0

4 months ago
  • 1.5.0 - 2023-12-15

    • Support for Python 3.12

    • Switched __eq__ and __ne__ operator to use equals rather than compareTo for comparable objects to avoid exception when comparing object of different types.

    • Fixed segmentation fault when comparing Java Comparable to primitives.

    • Java exceptions that occur in inequality comparisons now map to Python TypeError.

    • Fixed crash when calling subscript on JArray.

    • Fixed direct byte buffers not reporting nbytes correctly when cast to memoryview.

    • Expand the defintion for Functional interface to include classes without FunctionInterface annotation.

    • Add additional matching level for derived types to resolve ambiguities when a derived type is used in place of base class when determining the method overload. This will resolve some previous ambiguities between methods.

v1.4.1

1 year ago
  • Fixed issue with startJVM changing locale settings.

  • Changes to support Python 3.11

  • Fix truncation of strings on null when using convert strings.

  • Replaced distutil with packaging

v1.4.0

2 years ago
  • Support for all different buffer type conversions.

    • Improved buffer transfers to numpy as guaranteed to match Java types. However, exact dtype for conversions is os/numpy version dependent.

    • Support for byte order channels on buffer transfers.

    • Byte size for buffers now fixed to Java definitions.

    • When directly accessing Java arrays using memory view, Python requires a cast from buffers. Required because Python does not support memory view alterations on non-native sizes.

  • Fix crash when comparing JChar.

    • Order handling for numerical operations with JChar fixed.
  • Improved matching for Java functors based on parameter count.

  • Dropped support for Python 3.5 and 3.6

  • dbapi2 handles drivers that don't support autocommit.

  • Fixed issue when Java classes with dunder methods such as __del__ caused conflicts in Python type system. Java method which match dunder patterns are longer translated to Python.

  • Fix issue with numpy arrays with no dimensions resulting in crash.

  • Support for user defined conversions for java.lang.Class and array types.

  • Fixed issue with ssize_t on Windows for Python 3.10.

v1.3.0

2 years ago
  • Fixes for memory issues found when upgrading to Python 3.10 beta.

  • Add additional diagnositics for importing of non-public class.

  • Fixed issue with classes with unsatified dependencies leading to a crash on windows.

  • Fixed a bug with arrays created using the short cut. The wrong type was being returned.

v1.2.1

3 years ago

This is a bug release to correct defects found in the previous release. This version should add no additional functionality, though certain bug fixes will correct previous behaviors or add files which were incorrectly excluded due to packaging issues.

  • JPype scans jar files and rebuilding missing directories to allow imports from stripped and obfuscated jar files. Previously certain build patterns for jars excluded directories which prevented the import system from functioning properly. This change should increase the number of jar files which can be imported successfully. This was the intended behavior for imports, but certain defects in the process prevented proper function.

  • Missing stub files added to packaging. These were added in the last release, but the packaging system incorrectly excluded them from the build.

  • Python 3.9 issues are resolved on Windows. A change in Python 3.9 made is so that the GIL is not held during library loading, thus static variables created are not valid. These variables have been moved to module initialization.

  • aarch64 has been added to the build patterns for publication in this and future releases.

v1.2.0

3 years ago
  • Added builds for Python 3.9. Python 3.9 on Windows is currently failing due to issue in Python.

  • Fixed bug when importing from multi-release jars. The directory was being truncated to only those classes in the overlay.

  • addClassPath can add jar files after the JVM is started. The default loader for JPype class is org.jpype.classloader.DynamicClassLoader.

  • Build support of z/OS added.

  • Bug causing ambiguity between primitives and variadic arguments in method resolution was corrected.

  • Boolean was inadvertently left out of method resolution. boolean now properly matched with boxed types.

  • Support for PyInstaller was added.

v1.1.2

3 years ago
  • Linux binaries are now stripped for size.

  • Add importlib.util to address instability in Python importlib boot process. Certain versions of Python such as 3.9 appear to not properly load this module resulting in unexpected errors during startJVM.

v1.1.1

3 years ago

This pull release corrects an issue in the build system resulting in incomplete wheels on linux. No other changes from 1.1.0.

v1.1.0

3 years ago

linux distribution were incomplete. Please use 1.1.1 release.

  • Correct bug resulting in reporting ambiguous overloads when resolving methods with variadic arguments.

  • Ctrl+C behavior is switchable with interrupt flag to startJVM. If True, process will halt on Ctrl-C. If False, the process will transfer control to Python rather than halting. If not specified JPype will assume false if Python is started as an interactive shell.

  • Fixed crash with Ctrl+C when multiple exceptions were generated.

  • Removed extraneous exception when calling Ctrl+C before Java code is executed for methods and fields.

  • Fixed memory leak with string cache.

  • Fixed crash when manually creating wrappers for anonymous classes.

  • Fixed reference count problem in stackframes used for exceptions.

  • Errors report *static* when the matching with a static method so that it is clear when a member method was called statically.

  • java.lang.String slices function like Python string slice.

  • Java packages now operate as normal Python modules. Removed restrictions regarding setattr. All package instances for the same package name are shared so that functionality added to one instance is shared wiht all instances.

v1.0.2

3 years ago
  • The wrapper for Throwable was getting the wrapper for Object rather than the expected wrapper resulting in odd conversions from Python classes.

  • Typos within the import system resulting in "jname" not found corrected.

  • ^C propagates to a KeyboardInterrupt properly.

  • Added cache to the method dispatch to bypass resolution of overloads. This reduces the cost of method resolution significantly especially if the same overload is hit repeatedly such as during loop operations.

  • Improved speed on transfer of lists, tuples, buffers to arrays of Java primitives by a factor of 4 to 100 depending on the data type. The conversion uses optimized path for memory buffers, rather than the Sequence API. When a Python buffer is encountered only the first element is checked for conversion as Python buffers are homogeneous.

  • Corrected symbol problem with Python 3.5.3. PySlice_Unpack was introduced in a later patch release and should not have been used.

  • shutdown The behavior log entry for changes on shutdown were lost in the 1.0 release. JPype now calls the JVM shutdown routine which tries to gracefully exit when shutdown is called. This results in several changes in behavior. Non daemon threads can now hold open the JVM until they have completed. Proxy calls will hold the shutdown until the call is completed but will receive an interrupt message. Files now close properly and will flush if the threads properly handle the exception. Resource clean up hooks and finalizers are executed. AtExit hooks in the JVM are called as spawned threads. Automatic attachment of threads by use of the JVM from Python are done as daemon but can be reattached as user threads on demand. Buggy code that fails to properly handle thread clean up will likely hang on shutdown. Additional documentation is located in the user guide.

  • A bug was reported with numpy.linalg.inv resulting in crashes. This was traced to an interaction with threading between the JVM and some compilations of numpy. The workaround appears to be calling numpy.linalg.inv prior to starting the JVM.

special note To all our friends on opennet.ru, please blame not the translator. Translating my mangled English diction and word order is torture enough. Dyslexics of the world untie!