Izdanje JPype 1.0, biblioteka za pristup Java klasama iz Pythona

Dostupno oslobađanje sloja JPype 1.0, koji vam omogućuje organiziranje potpunog pristupa Python aplikacija bibliotekama klasa Java. Uz JPype iz Pythona, možete koristiti biblioteke specifične za Javu za stvaranje hibridnih aplikacija koje kombiniraju Java i Python kod. Za razliku od Jythona, integracija s Javom se ne postiže stvaranjem Python varijante za JVM, već interakcijom na razini oba virtualna računala koja koriste zajedničku memoriju. Predloženi pristup omogućuje ne samo postizanje dobrih performansi, već također omogućuje pristup svim CPython i Java bibliotekama. Kod projekta distribuira licenciran pod Apache 2.0.

Velike promjene:

  • JChar je podržan kao vrsta povrata. Radi kompatibilnosti, JChar nasljeđuje od "str" ​​​​i implementira implicitnu konverziju u "int". Stoga prolazi provjere u ugovorima. Ali to znači da se više ne smatra numeričkim tipom u Pythonu i stoga isinstance(c, int) daje vrijednost False, što je u skladu s pravilima pretvorbe Java tipa.
  • Uveden je operator za pretvaranje Java tipa, Type@obj (@ je Python operator za unutarnji proizvod; Java ga nema).
  • Dodana notacija za stvaranje Java nizova. Upišite [s1][s2][s3] za nizove fiksne veličine, Upišite [:][:][:] za nizove koji će se kasnije izraditi.
  • @FunctionalInterface vam omogućuje stvaranje Java funktora iz Python objekata pomoću __call__.
  • Uklonjen zastarjeli JIterator, korištenje JExceptiona kao tvornice, get_default_jvm_path i jpype.reflect.
  • Prema zadanim postavkama, Java nizovi se ne pretvaraju u Python nizove.
  • Python je zastario "__int__", tako da će implicitna pretvaranja između cijelih brojeva i tipova s ​​pomičnim zarezom proizvesti TypeError.
  • Upotreba JException je zastarjela. Da biste uhvatili sve iznimke ili provjerili je li objekt vrsta Java iznimke, koristite java.lang.Throwable.
  • Kaskadni uzroci Java iznimaka sada se odražavaju u okvirima snopa Pythona.
  • JString je zastario. Za kreiranje Java niza ili za provjeru je li objekt tipa Java niz, koristite java.lang.String.
  • Repr metode su ažurirane u Java klasama.
  • java.util.List izvršava ugovore za collections.abc.Sequence i collections.abc.MutableSequence.
  • java.util.Collection izvršava ugovor za collections.abc.Collection.
  • Java klase su privatne i izbacit će TypeError kada se produže iz Pythona.
  • Pažljivo rukujte Control-C. Prethodne verzije se ruše kada Java obradi Control-C signal jer će prekinuti Javu tijekom poziva. JPype će sada izbaciti InterruptedException kada se vraća s Jave. Control-C neće izbaciti velike Java procedure koje su trenutno implementirane, budući da Java nema poseban alat za to.

Zatim je stvoreno korektivno izdanje 1.0.1, koje je dodalo promjene za rješavanje problema s izdanjem Python 3.8.4. Python je promijenio logiku u vezi s upotrebom "__setattr__" za "objekt" i "tip", sprječavajući njegovu upotrebu za modificiranje izvedenih klasa. Provjera pogrešaka također je delegirana iz metode "__setattr__", tako da bi se vrste iznimaka u nekim provjerama adekvatnosti trebale ažurirati u skladu s tim.

Izvor: opennet.ru

Dodajte komentar