主要变化:
- 当 Python 代码中发生异常时,C++ 和 Java 代码中引发的异常现在提供异常堆栈。 因此,要获取有关异常堆栈的信息,您不再需要调用 stacktrace()。
- 呼叫返回速度提高了三倍。
- 显着(数量级)提高了传输速度
多维数组的 numpy 缓冲区。 多维原语通过连续的 C 布局传递在 JVM 内创建的只读副本。 - 所有公开的内部结构均已替换为 CPython 实现,以及符号 __javaclass__、__javavalue__ 和 __javaproxy__
已删除。 专用 Java 插槽已添加到从 jpype 类类型继承的所有 CPython 类型。 所有私有表已移至 CPython。 Java 类型现在必须从使用类型槽的 JClass 元类继承。 不允许使用 Python 基类的 Mixins。 这些类型是 Object、Proxy、Exception、Number 和 Array,直接继承自 CPython 的内部实现。 - 改进了跟踪和异常处理。
- 数组切片现在被处理为支持写回原始数据的视图,例如 numpy 数组。 对于数组切片,支持以步骤(slice(start, stop, step))设置和检索值。
- 数组现在支持“__reversed__”。
- Java 数组现在支持 memoryview API,并消除了对 numpy 的依赖来传递缓冲区内容。
- Numpy 不再是依赖项(额外),并且无需使用 numpy 支持进行编译即可将内存传输到 numpy。
- JInterface 被设计为元类。 使用 isinstance(cls, JInterface) 检查接口。
- 将缺失的 TLD“mil”、“net”和“edu”添加到默认导入中。
- 改进了启动期间 UnsupportedClassVersion 的错误消息。
- 如果未找到该元素,java.util.Map 现在会抛出 KeyError。 为 null 的值仍按预期返回 None。 如果您想将空键视为 None,请使用 get()。
- 删除了 java.util.Collection,因为它在列表上的remove(Object) 和remove(int) 之间奇怪地重载。 使用 Java remove() 方法访问本机 Java 行为,但强烈建议进行类型转换以进行重载控制。
- 现在,在访问 java.util.List 元素时,可以使用 IndexError 异常类捕获 java.lang.IndexOutOfBoundsException。
来源: opennet.ru