JPype 0.7.2-ın buraxılışı, Python-dan Java siniflərinə daxil olmaq üçün kitabxanalar

Mövcuddur interlayer buraxılışı JPype 0.7.2, bu sizə Python proqramlarının Java sinif kitabxanalarına tam çıxışını təşkil etməyə imkan verir. Python-dan JPype ilə siz Java və Python kodunu birləşdirən hibrid proqramlar yaratmaq üçün Java-xüsusi kitabxanalardan istifadə edə bilərsiniz. Jython-dan fərqli olaraq, Java ilə inteqrasiya JVM üçün Python variantının yaradılması ilə deyil, ortaq yaddaşdan istifadə edərək hər iki virtual maşın səviyyəsində qarşılıqlı əlaqə vasitəsilə əldə edilir. Təklif olunan yanaşma yalnız yaxşı performans əldə etməyə imkan vermir, həm də bütün CPython və Java kitabxanalarına çıxışı təmin edir. Layihə kodu yayılır Apache 2.0 altında lisenziyalıdır.

Əsas dəyişikliklər:

  • C++ və Java kodunda atılan istisnalar indi Python kodunda istisna baş verdikdə istisna yığını təmin edir. Beləliklə, istisna yığını haqqında məlumat əldə etmək üçün artıq stacktrace() funksiyasına zəng etmək lazım deyil.
  • Zəngin qaytarılması sürəti üç dəfə artırılıb.
  • Əhəmiyyətli dərəcədə (böyüklük əmrləri ilə) ötürmə sürətini artırdı
    çoxölçülü massivlərin saysız tamponları. Çoxölçülü primitivlər, bitişik C layoutu ilə JVM daxilində yaradılmış yalnız oxumaq üçün nəzərdə tutulmuş nüsxələri keçir.

  • Bütün açıqlanmış daxili elementlər CPython tətbiqləri və __javaclass__, __javavalue__ və __javaproxy__ simvolları ilə əvəz edilmişdir.
    silindi. jpype sinif növlərindən miras qalan bütün CPython növlərinə xüsusi Java yuvası əlavə edilmişdir. Bütün şəxsi cədvəllər CPython-a köçürüldü. Java növləri indi tip yuvalarından istifadə edən JClass metaclassdan miras almalıdır. Python əsas sinifləri üçün miksinlərə icazə verilmir. Növlər Obyekt, Proksi, İstisna, Nömrə və Massivdir və birbaşa CPython-un daxili tətbiqlərindən miras qalır.

  • Təkmilləşdirilmiş izləmə və istisnaların idarə edilməsi.
  • Massiv dilimləri indi numpy massiv kimi orijinala geri yazmağı dəstəkləyən görünüşlər kimi işlənir. Massivin dilimlənməsi üçün dəyərləri addımlarla təyin etmək və əldə etmək üçün dəstək verilir (dilim (başla, dayandır, addım)).
  • Massivlər indi "__reversed__"-ı dəstəkləyir.
  • Java massivləri indi yaddaşa baxış API-ni dəstəkləyir və bufer məzmununu ötürmək üçün numpy-dən asılılığı aradan qaldırır.
  • Numpy artıq asılılıq deyil (əlavə) və yaddaşın numpy dəstəyi ilə tərtib edilmədən numpy-ə ötürülməsi mümkündür.
  • JInterface meta sinfi kimi hazırlanmışdır. İnterfeysləri yoxlamaq üçün isinstance (cls, JInterface) istifadə edin.
  • Defolt idxallara çatışmayan TLD "mil", "net" və "edu" əlavə edildi.
  • Başlanğıc zamanı UnsupportedClassVersion üçün təkmilləşdirilmiş xəta mesajları.
  • java.util.Map indi element tapılmadıqda KeyError atır. Sıfır olan dəyərlər hələ də gözlənildiyi kimi heç birini qaytarmır. Boş düymələri Yox kimi qəbul etmək istəyirsinizsə get() funksiyasından istifadə edin.
  • Siyahılardakı remove(Object) və remove(int) arasında qəribə həddən artıq yükləndiyi üçün java.util.Collection silindi. Doğma Java davranışına daxil olmaq üçün Java remove() metodundan istifadə edin, lakin həddən artıq yüklənməyə nəzarət üçün tipin ötürülməsi tövsiyə olunur.
  • java.lang.IndexOutOfBoundsException indi java.util.List elementlərinə daxil olarkən IndexError istisna sinifindən istifadə etməklə tutula bilər.

Mənbə: opennet.ru

Добавить комментарий