發布 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

添加評論