JPype 1.0 väljalaskmine, teek Java klasside juurde pääsemiseks Pythonist

Saadaval vahekihtide väljalaskmine JPype 1.0, mis võimaldab Python rakenduste täisühendust Java keele klasside teekidega. JPype abil saab Pythonis kasutada Java spetsiifilisi teeke, luues hübriidrakendusi, mis ühendavad Java ja Python koodi. Erinevalt Jython'ist saavutatakse Java integreerimine mitte JVM jaoks Python variandi loomise kaudu, vaid mõlema virtuaalmasina vahelise koostöö kaudu, kasutades jagatud mälu. Pakutud lähenemine võimaldab saavutada head jõudlust ja pakub juurdepääsu kõikidele CPython ja Java teekidele. Projekti kood levitatakse lisensiga Apache 2.0.

Peamised muudatused:

  • JChar on toetav tagastustüüp. JChar pärandatakse ‘str’-st, et tagada ühilduvus ning rakendab vaikimisi teisendamist ‘int’-i. Seetõttu läbib see lepingute tõendid. Kuid see tähendab, et see ei loeta enam numbriliseks tüübiks Pythonis ja seetõttu isinstance(c, int) on False, mis on kooskõlas Java tüübitüübivahetuse reeglitega.
  • Sisestatud operaator Java tüübi Type@obj ( @ on Pythonis sisemise korrutamise operaator, Java-s pole seda).
  • Lisatud anotatsioon Java massiivide loomiseks. Type[s1][s2][s3] fikseeritud suurustega massiivide jaoks, Type[:][:][:] massiivide jaoks, mis luuakse hiljem.
  • @FunctionalInterface võimaldab luua Java funktsioone Python objektidest, millel on __call__.
  • Eemaldatud aegunud JIterator, JException'i kasutamine tehase funksioonina, get_default_jvm_path ja jpype.reflect.
  • Vaikimisi ei toimu Java stringide teisendamist Python stringideks.
  • Python on kuulutanud ‘__int__’ soovitamatuks, seega vaikesuunamised täisarvu ja ujukomaarvude tüüpide vahel tekitavad TypeError.
  • Aegunud on kasutada JException'i. Kõikide erandite püüdmise või objekti Java eranditüübiks kontrollimise jaoks tuleks kasutada java.lang.Throwable.
  • Java erandite kaskaadsete põhjuste peegeldamine toimub nüüd Python stack'i raames.
  • Aegunud on kasutada JString'i. Java stringi loomiseks või objekti Java stringi tüübiks kontrollimiseks kasutage java.lang.String.
  • Java klassides on uuendatud repr meetodeid.
  • java.util.List täidab lepingud collections.abc.Sequence ja collections.abc.MutableSequence.
  • java.util.Collection täidab lepingud collections.abc.Collection.
  • Java klassid on suletud ja viskavad TypeError'i, kui neid laiendatakse Pythonist.
  • Control-C töötlemine toimub kiiresti. Eelmised versioonid kukuvad, kui Java töötleb Control-C signaali, kuna need lõpetavad Java kutsumise ajal. Nüüd loob JPype InterruptedException'i, kui see tagastatakse Java-st. Control-C ei viska suurtest Java protseduuridest välja, nagu praegu on rakendatud, kuna Java-l pole sellist võimalust.

Seejärgnevalt on loodud parandav väljaanne 1.0.1, mis sisaldab muudatusi probleemide ületamiseks Python 3.8.4 väljaandmisega. Python on muutnud loogikat seoses '.__setattr__' kasutamisega 'object' ja 'type' jaoks, takistades selle kasutamist pärandatud klasside muutmiseks. Lisaks on vigade kontrollimine delegeeritud '.__setattr__' meetodist, seega peab teatud tõhususe kontrollide eranditüübid olema vastavalt uuendatud.

Allikas: opennet.ru

Osta usaldusväärne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid 🔥 Osta usaldusväärne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid - ProHoster