Izdanje JPype 1.0, biblioteke za pristup Java klasama iz Pythona

Dostupno oslobađanje sloja JPype 1.0, što omogućava Python aplikacijama da imaju pun pristup bibliotekama klasa na jeziku Java. Uz JPype iz Pythona, možete koristiti biblioteke specifične za Javu za kreiranje hibridnih aplikacija koje kombinuju Java i Python kod. Za razliku od Jythona, integracija sa Javom se ne postiže kreiranjem Python varijante za JVM, već interakcijom na nivou obje virtuelne mašine koristeći zajedničku memoriju. Predloženi pristup omogućava ne samo postizanje dobrih performansi, već i omogućava pristup svim CPython i Java bibliotekama. Šifra projekta distribuira licenciran pod Apache 2.0.

Glavne promjene:

  • JChar je podržan kao tip povratka. 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) procjenjuje na False, što je u skladu s pravilima konverzije Java tipa.
  • Uveden je operator za pretvaranje Java tipa, Type@obj (@ je Python operator za unutrašnji proizvod; Java ga nema).
  • Dodata notacija za kreiranje Java nizova. Upišite [s1][s2][s3] za nizove fiksne veličine, Type[:][:][:] za nizove koji će biti kreirani kasnije.
  • @FunctionalInterface vam omogućava da kreirate Java funktore od Python objekata pomoću __call__.
  • Uklonjen je zastarjeli JIterator, korištenje JExceptiona kao fabrike, get_default_jvm_path i jpype.reflect.
  • Podrazumevano, Java stringovi se ne konvertuju u Python stringove.
  • Python je zastario "__int__", tako da će implicitno prebacivanje između cjelobrojnih i tipova s ​​pomičnim zarezom proizvesti TypeError.
  • Upotreba JException je zastarjela. Da uhvatite sve iznimke ili provjerite da li je objekt tip Java izuzetka, koristite java.lang.Throwable.
  • Kaskadni uzroci Java izuzetaka sada se odražavaju u okvirima Python steka.
  • JString je zastario. Da biste kreirali Java string ili provjerili da li je objekt tipa Java string, 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 prošire iz Pythona.
  • Pažljivo rukujte Control-C. Prethodne verzije padaju kada Java obradi Control-C signal jer će prekinuti Javu tokom poziva. JPype će sada izbaciti InterruptedException kada se vraća iz Jave. Control-C neće izbaciti velike Java procedure kakve su trenutno implementirane, pošto Java nema poseban alat za to.

Zatim je kreirano 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 sa upotrebom "__setattr__" za "objekat" i "tip", sprječavajući da se koristi za modificiranje izvedenih klasa. Provjera grešaka je također delegirana iz metode "__setattr__", tako da tipove izuzetaka u nekim provjerama adekvatnosti treba ažurirati u skladu s tim.

izvor: opennet.ru

Dodajte komentar