Python から Java クラスにアクセスするためのライブラリ、JPype 0.7.2 のリリース

利用可能 レイヤーリリース JPype 0.7.2これにより、Python アプリケーションは Java 言語のクラス ライブラリに完全にアクセスできるようになります。 Python の JPype を使用すると、Java 固有のライブラリを使用して、Java と Python コードを組み合わせたハイブリッド アプリケーションを作成できます。 Jython とは異なり、Java との統合は、JVM の Python バリアントの作成を通じてではなく、共有メモリを使用した両方の仮想マシン レベルでの対話を通じて実現されます。 提案されたアプローチでは、優れたパフォーマンスを達成できるだけでなく、すべての CPython および Java ライブラリへのアクセスも提供します。 プロジェクトコード によって配布 Apache 2.0 に基づいてライセンスされています。

主な変更点:

  • C++ および Java コードでスローされた例外は、Python コードで例外が発生したときに例外スタックを提供するようになりました。 したがって、例外スタックに関する情報を取得するために、stacktrace() を呼び出す必要はなくなりました。
  • 通話の応答速度が XNUMX 倍になりました。
  • 通信速度が大幅に(桁違いに)向上しました。
    多次元配列の numpy バ​​ッファ。 多次元プリミティブは、連続した C レイアウトを使用して JVM 内に作成された読み取り専用コピーを渡します。

  • 公開されているすべての内部構造は CPython 実装に置き換えられ、シンボル __javaclass__、__javavalue__、および __javaproxy__
    削除されました。 専用の Java スロットが、jpype クラス型を継承するすべての CPython 型に追加されました。 すべてのプライベート テーブルは CPython に移動されました。 Java 型は、型スロットを使用する JClass メタクラスから継承する必要があります。 Python 基本クラスのミックスインは許可されません。 タイプは 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() を使用します。
  • リストのremove(Object)とremove(int)の間で奇妙にオーバーロードするため、java.util.Collectionを削除しました。 ネイティブの Java 動作にアクセスするには Java の delete() メソッドを使用しますが、オーバーロード制御には型キャストを強くお勧めします。
  • java.util.List 要素にアクセスするときに、IndexError 例外クラスを使用して java.lang.IndexOutOfBoundsException をキャッチできるようになりました。

出所: オープンネット.ru

コメントを追加します