Rilis JPype 1.0, perpustakaan untuk mengakses kelas Java dari Python

Tersedia pelepasan lapisan JPype 1.0, yang memungkinkan aplikasi Python mengakses pustaka kelas Java sepenuhnya. Dengan menggunakan JPype, Python dapat memanfaatkan pustaka khusus Java, menciptakan aplikasi hibrida yang menggabungkan kode Java dan Python. Tidak seperti Jython, integrasi dengan Java dicapai bukan dengan membuat instans Python untuk JVM, melainkan melalui interaksi di tingkat kedua mesin virtual menggunakan memori bersama. Pendekatan ini tidak hanya menghasilkan kinerja yang baik tetapi juga menyediakan akses ke semua pustaka CPython dan Java. Kode proyek didistribusikan oleh berlisensi di bawah Apache 2.0.

Perubahan besar:

  • JChar didukung sebagai tipe pengembalian. Demi kompatibilitas, JChar mewarisi "str" ​​dan mengimplementasikan konversi implisit ke "int". Oleh karena itu, ia lolos pemeriksaan kontrak. Namun, ini berarti ia tidak lagi dianggap sebagai tipe numerik dalam Python, sehingga isinstance(c, int) dievaluasi menjadi False, yang konsisten dengan aturan konversi tipe Java.
  • Operator untuk casting tipe Java, Type@obj, telah diperkenalkan (@ adalah operator Python untuk produk dalam, yang tidak ada di Java).
  • Notasi tambahan untuk membuat array Java. Type[s1][s2][s3] untuk array berukuran tetap, Type[:][:][:] untuk array yang akan dibuat nanti.
  • @FunctionalInterface memungkinkan Anda membuat functor Java dari objek Python dengan __call__.
  • Menghapus JIterator yang sudah tidak digunakan lagi, penggunaan JException sebagai pabrik, get_default_jvm_path dan jpype.reflect.
  • Secara default, string Java tidak diubah menjadi string Python.
  • Python telah menghentikan penggunaan "__int__", jadi pengecoran implisit antara tipe integer dan floating-point akan menghasilkan TypeError.
  • Penggunaan JException telah dihentikan. Untuk menangkap semua pengecualian atau memeriksa apakah suatu objek merupakan tipe pengecualian Java, gunakan java.lang.Throwable.
  • Penyebab berjenjang dari pengecualian Java sekarang tercermin dalam bingkai tumpukan Python.
  • Penggunaan JString telah dihentikan. Untuk membuat string Java atau memeriksa apakah suatu objek bertipe string Java, gunakan java.lang.String.
  • Metode Repr telah diperbarui di kelas Java.
  • java.util.List memenuhi kontrak untuk collections.abc.Sequence dan collections.abc.MutableSequence.
  • java.util.Collection memenuhi kontrak untuk collections.abc.Collection.
  • Kelas Java bersifat privat dan akan memunculkan TypeError saat diperluas dari Python.
  • Penanganan Control-C kini akurat. Versi sebelumnya mengalami crash ketika Java menangani sinyal Control-C, karena akan menghentikan Java selama pemanggilan. Sekarang, JPype akan memunculkan InterruptedException ketika kembali dari Java. Control-C tidak akan muncul dari prosedur Java yang besar, seperti yang saat ini diimplementasikan, karena Java tidak memiliki mekanisme khusus untuk ini.

Rilis berikutnya, 1.0.1, merupakan perbaikan yang mencakup perubahan untuk mengatasi masalah pada Python 3.8.4. Python mengubah logika penggunaan "__setattr__" untuk "objek" dan "tipe", sehingga mencegahnya digunakan untuk memodifikasi kelas turunan. Pemeriksaan kesalahan juga didelegasikan dari metode "__setattr__", sehingga tipe pengecualian dalam beberapa pemeriksaan kewarasan perlu diperbarui.

Sumber: opennet.ru

Beli hosting yang andal untuk situs dengan perlindungan DDoS, server VPS VDS 🔥 Beli hosting website andal dengan perlindungan DDoS, server VPS VDS | ProHoster