发布 JPype 0.7.2,用于从 Python 访问 Java 类的库

可得到 层释放 JPype 0.7.2,它允许Python应用程序完全访问Java语言的类库。 借助 Python 中的 JPype,您可以使用 Java 特定的库来创建结合 Java 和 Python 代码的混合应用程序。 与 Jython 不同,与 Java 的集成不是通过为 JVM 创建 Python 变体来实现的,而是通过使用共享内存在两个虚拟机级别进行交互来实现。 所提出的方法不仅可以实现良好的性能,还可以访问所有 CPython 和 Java 库。 项目代码 分发者 在 Apache 2.0 下获得许可。

主要变化:

  • 当 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

添加评论