JPype 1.0.2 yangilanishi, Python'dan Java sinflariga kirish uchun kutubxona

Mavjud interlayerning yangi versiyasi JPype 1.0.2, bu Python ilovalariga Java tilidagi sinf kutubxonalariga to'liq kirish imkonini beradi. Python'dan JPype bilan siz Java va Python kodlarini birlashtirgan gibrid ilovalarni yaratish uchun Java-ga xos kutubxonalardan foydalanishingiz mumkin. Jython-dan farqli o'laroq, Java bilan integratsiya JVM uchun Python variantini yaratish orqali emas, balki umumiy xotiradan foydalangan holda ikkala virtual mashina darajasida o'zaro ta'sir qilish orqali erishiladi. Taklif etilayotgan yondashuv nafaqat yaxshi ishlashga erishishga imkon beradi, balki barcha CPython va Java kutubxonalariga kirishni ta'minlaydi. Loyiha kodi tarqaladi Apache 2.0 ostida litsenziyalangan.

Asosiy o'zgarishlar:

  • Haddan tashqari yuk ravshanligini oldini olish uchun usul chaqiruvlariga kesh qo'shildi, bu usul rezolyutsiyasining ishlash ta'sirini sezilarli darajada kamaytiradi, ayniqsa, bir xil ortiqcha yuk ko'p marta chaqirilsa, tsiklni bajarish paytida.
  • Ma'lumotlar turiga qarab 4 dan 100 martagacha ro'yxatlar, kortejlar va buferlarni Java primitivlari massivlariga o'tkazish tezlashadi. Konvertatsiya Sequence API o'rniga xotiradagi buferlarni optimallashtirilgan qayta ishlashdan foydalanadi. Python buferiga duch kelganda, konvertatsiya qilish uchun faqat birinchi element tekshiriladi, chunki bu buferlar bir hildir.
  • O'chirish operatsiyalarini qayta ishlash (JPype 1.0.0 da amalga oshirilgan, lekin o'zgarishlar jurnalini tayyorlashda o'tkazib yuborilgan). JPype endi JVMni o'chirish tartibini chaqiradi, u chiroyli tarzda chiqishga harakat qiladi. Bu xatti-harakatlarning bir nechta o'zgarishiga olib keladi. Fon bo'lmagan mavzular (proksi qo'ng'iroqlar) endi JVM ni ular tugaguniga qadar ochiq tutishi mumkin. Proksi-server qo'ng'iroqlari qo'ng'iroq tugaguniga qadar o'chirishni amalga oshiradi, lekin bekor qilish xabarini oladi. Fayllar endi to'g'ri yopiladi va agar iplar istisnoni kutilganidek bajarsa, diskka o'chiriladi. Resurslarni tozalash kancalari va yakunlovchilar bajariladi. Iplar paydo bo'lganda, AtExit ilgaklari chaqiriladi. Demon orqali, Python'dan JVM dan foydalanganda avtomatik ip biriktirilishi amalga oshiriladi. Tarmoqni tozalashni to'g'ri bajara olmaydigan xato kodi, o'chirish amalga oshirilganda osilib qolishi mumkin. Qo'shimcha hujjatlarni foydalanuvchi qo'llanmasida topish mumkin.
  • Throwable uchun o'ram kutilgan natija o'rniga Ob'ekt uchun o'ramni oldi, bu Python sinflaridan g'alati konversiyalarga olib keldi.
  • Import tizimidagi xatoliklar tuzatildi, natijada "jname" topilmadi" xatosi paydo bo'ldi.
  • KeyboardInterrupt-da "^C" to'g'ri ko'tarilganligiga ishonch hosil qiling.
  • Python 3.5.3 dan boshlab belgilar bilan bog'liq muammo tuzatildi. PySlice_Unpack keyingi yamoq chiqarishda (3.5.4) taqdim etilgan va undan foydalanilmasligi kerak edi.
  • Numpy.linalg.inv bilan xatolikka olib kelgan xatolik tuzatildi. Muammo JVM va ba'zi numpy lazzatlar o'rtasidagi aloqa bilan bog'liq. Taklif etilayotgan yechim JVMni ishga tushirishdan oldin numpy.linalg.inv ga qo'ng'iroq qilishdir.

Manba: opennet.ru

a Izoh qo'shish