Rilis JPype 0.7.2, perpustakaan untuk mengakses kelas Java dari Python

Tersedia pelepasan lapisan JPype 0.7.2, yang memungkinkan aplikasi Python memiliki akses penuh ke perpustakaan kelas dalam bahasa Java. Dengan JPype dari Python, Anda dapat menggunakan perpustakaan khusus Java untuk membuat aplikasi hybrid yang menggabungkan kode Java dan Python. Berbeda dengan Jython, integrasi dengan Java dicapai bukan melalui pembuatan varian Python untuk JVM, namun melalui interaksi di tingkat kedua mesin virtual menggunakan memori bersama. Pendekatan yang diusulkan memungkinkan tidak hanya mencapai kinerja yang baik, tetapi juga menyediakan akses ke semua perpustakaan CPython dan Java. Kode proyek didistribusikan oleh berlisensi di bawah Apache 2.0.

Perubahan besar:

  • Pengecualian yang diberikan dalam kode C++ dan Java kini menyediakan tumpukan pengecualian ketika pengecualian terjadi dalam kode Python. Jadi, untuk mendapatkan informasi tentang tumpukan pengecualian, Anda tidak perlu lagi memanggil stacktrace().
  • Kecepatan membalas panggilan menjadi tiga kali lipat.
  • Secara signifikan (berdasarkan urutan besarnya) meningkatkan kecepatan transmisi dalam
    buffer numpy dari array multidimensi. Primitif multidimensi meneruskan salinan read-only yang dibuat di dalam JVM dengan tata letak C yang berdekatan.

  • Semua internal yang terbuka telah diganti dengan implementasi CPython, dan simbol __javaclass__, __javavalue__ dan __javaproxy__
    dihapus. Slot Java khusus telah ditambahkan ke semua tipe CPython yang mewarisi tipe kelas jpype. Semua tabel pribadi telah dipindahkan ke CPython. Tipe Java sekarang harus mewarisi dari metaclass JClass, yang menggunakan slot tipe. Mixin untuk kelas dasar Python tidak diperbolehkan. Tipenya adalah Object, Proxy, Exception, Number dan Array dan mewarisi langsung dari implementasi internal CPython.

  • Peningkatan penelusuran dan penanganan pengecualian.
  • Irisan array kini diproses sebagai tampilan yang mendukung penulisan kembali ke aslinya, seperti array numpy. Untuk pemotongan array, dukungan disediakan untuk mengatur dan mengambil nilai dalam langkah-langkah (slice(start, stop, step)).
  • Array sekarang mendukung "__reversed__".
  • Array Java sekarang mendukung API memoryview dan menghilangkan ketergantungan pada numpy untuk meneruskan konten buffer.
  • Numpy tidak lagi menjadi ketergantungan (ekstra) dan transfer memori ke numpy tersedia tanpa kompilasi dengan dukungan numpy.
  • JInterface dirancang sebagai kelas meta. Gunakan isinstance(cls, JInterface) untuk memeriksa antarmuka.
  • Menambahkan TLD "mil", "net" dan "edu" yang hilang ke impor default.
  • Peningkatan pesan kesalahan untuk UnsupportedClassVersion selama startup.
  • java.util.Map sekarang memunculkan KeyError jika elemen tidak ditemukan. Nilai yang null tetap mengembalikan None seperti yang diharapkan. Gunakan get() jika Anda ingin memperlakukan kunci kosong sebagai Tidak Ada.
  • Menghapus java.util.Collection karena anehnya kelebihan beban antara hapus(Objek) dan hapus(int) pada Daftar. Gunakan metode Java delete() untuk mengakses perilaku asli Java, tetapi pengecoran tipe sangat disarankan untuk kontrol kelebihan beban.
  • java.lang.IndexOutOfBoundsException sekarang dapat ditangkap menggunakan kelas pengecualian IndexError saat mengakses elemen java.util.List.

Sumber: opennet.ru

Tambah komentar