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

Mövcuddur interlayer buraxılışı JPype 1.0, 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:

  • JChar qaytarma növü kimi dəstəklənir. Uyğunluq üçün JChar "str" ​​sözündən götürülüb və "int"-ə gizli çevrilmə həyata keçirir. Buna görə də müqavilələrdə yoxlamalardan keçir. Lakin bu o deməkdir ki, o, artıq Python-da rəqəmsal tip hesab edilmir və buna görə də isinstance(c, int) Java-nın növə çevirmə qaydalarına uyğun gələn False kimi qiymətləndirir.
  • Java tipli Type@obj (@ - bu daxili məhsul üçün Python operatorudur, Java-da mövcud deyil) operatoru təqdim edilmişdir.
  • Java massivlərinin yaradılması üçün qeyd əlavə edildi. Sabit ölçülü massivlər üçün [s1][s2][s3] yazın, sonra yaradılacaq massivlər üçün Type[:][:][:] yazın.
  • @FunctionalInterface __call__ ilə Python obyektlərindən Java funktorları yaratmağa imkan verir.
  • Köhnəlmiş JIterator, JException zavod istifadəsi, get_default_jvm_path və jpype.reflect silindi.
  • Varsayılan olaraq, Java sətirləri Python sətirlərinə çevrilmir.
  • Python "__int__" köhnəlmişdir, buna görə də tam və float tipləri arasında gizli yayımlar TypeError yaradacaq.
  • JException-ın köhnəlmiş istifadəsi. Bütün istisnaları tutmaq və ya obyektin Java istisna növü olduğunu yoxlamaq üçün java.lang.Throwable aşağıdakılardan ibarətdir.
  • Cascading Java istisna səbəbləri indi Python stek çərçivələrində əks olunur.
  • JString-in köhnəlmiş istifadəsi. Java sətri yaratmaq və ya obyektin Java sətir tipli olduğunu yoxlamaq üçün java.lang.String istifadə edin.
  • Repr metodları Java siniflərində yeniləndi.
  • java.util.List collections.abc.Sequence və collections.abc.MutableSequence üçün müqavilələri yerinə yetirir.
  • java.util.Kolleksiya kolleksiyalar üçün müqaviləni yerinə yetirir.abc.Kolleksiya.
  • Java sinifləri özəldir və Python-dan genişləndirildikdə TypeError atacaq.
  • Control-C-ni səliqəli idarə edin. Əvvəlki versiyalar Java Control-C siqnalını emal edərkən qəzaya uğrayır, çünki zəng zamanı Java-nı dayandıracaqlar. JPype indi Java-dan qayıdanda InterruptedException atacaq. Control-C hazırda olduğu kimi böyük Java proqramlarını işə salmayacaq, çünki Java-nın bunun üçün xüsusi qurğusu yoxdur.

Daha sonra Python 1.0.1-ün buraxılışı ilə bağlı problemlərin aradan qaldırılması üçün dəyişikliklər əlavə edən 3.8.4 yamaq buraxılışı yaradıldı. Python, "obyekt" və "növ" üçün "__setattr__" istifadəsinə dair məntiqi dəyişərək, ondan törəmə sinifləri dəyişdirmək üçün istifadə olunmasının qarşısını aldı. Həmçinin, səhv yoxlaması "__setattr__" metodundan həvalə edilmişdir, ona görə də bəzi ağlı başında olma yoxlamalarında istisna növləri müvafiq olaraq yenilənməlidir.

Mənbə: opennet.ru

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