JPype 1.0 väljaanne, teek, mis võimaldab juurdepääsu Java klassidele Pythonist

Saadaval vahekihte väljaanne JPype 1.0, mis võimaldab Python-i rakendustel täielikku juurdepääsu Java keele klasside libraritele. JPype abil saab Pythonis kasutada Java-spetsiifilisi teeke, luues hübriidrakendusi, mis ühendavad Java ja Python koodi. Erinevalt Jythonist saavutatakse Java integreerimine mitte JVM-i jaoks Python variandi loomise kaudu, vaid kahe virtuaalmasina tasandil, kasutades jagatud mälu. Pakutud lähenemine võimaldab mitte ainult head jõudlust saavutada, vaid annab ka juurdepääsu kõigile CPython ja Java teekidele. Projekti kood GNU Üldine Avaliku litsentsi alusel. ainekood on litsentsitud Apache 2.0 all.

Peamised muudatused:

  • JChar toetab tagastatavat tüüpi. Ühilduvuse tagamiseks on JChar pärinud «str» ja teostab varjatud teisendamise «int» tüüpi. Seega läbib see lepingute kontrollid. Kuid see tähendab, et see ei loeta enam numbriliseks tüübiks Pythonis ja seega isinstance(c, int) annab False, mis on kooskõlas Java tüübi teisendamise reeglitega.
  • Juhtivtüübi Java-tüübi Type@obj ( @ on Pythonis sisemise korrutamise operaator, Java-s seda ei ole) toomise operaator.
  • Java massiivide loomise süntaks on lisatud. Type[s1][s2][s3] fikseeritud suurusega massiivide jaoks, Type[:][:][:] massiivide jaoks, mis luuakse hiljem.
  • @FunctionalInterface võimaldab luua Java funktsioone Python-objektidest __call__ abil.
  • Vanad JIterator-id on eemaldatud, JException'i kasutamine tehase funktsioonina, get_default_jvm_path ja jpype.reflect.
  • Java strings ei konverteerita vaikimisi Python strings'iteks.
  • Python on deklareerinud '.__int__' kui soovitamata, mistõttu impulsiivne konverteerimine täisarvude ja ujuvpunktiliste tüüpide vahel põhjustab TypeError'i.
  • JException'i kasutamine on deklareeritud vananenuks. Kõikide erandite püüamiseks või kontrollimiseks, kas objekt on Java erandi tüüp, tuleks kasutada java.lang.Throwable.
  • Java erandite kaskaadseid põhjuseid peegeldatakse nüüd Python'i stack frame'ides.
  • JString'i kasutamine on deklareeritud vananenuks. Java stringi loomiseks või kontrollimiseks, kas objekt on Java stringi tüüpi, kasutage java.lang.String.
  • Java klassides on uuendatud repr meetodeid.
  • java.util.List täidab collections.abc.Sequence ja collections.abc.MutableSequence lepingud.
  • java.util.Collection täidab collections.abc.Collection lepingut.
  • Java klassid on suletud ja viskavad TypeError'i, kui Pythonist laiendatakse.
  • Control-C töötlemine on nüüd sujuvam. Varasemad versioonid katkestavad, kui Java käsitleb Control-C signaali, kuna nad lõpetavad Java kutsumise ajal. Nüüd loob JPype InterruptedException'i, kui see naaseb Java-st. Control-C ei katkesta enam suuri Java-protseduure, nagu praegu on rakendatud, kuna Javac ei pakku erimeetodit selleks.

Järgnev on välja antud parandav versioon 1.0.1, mis sisaldab muudatusi Python 3.8.4 väljaande probleemide vältimiseks. Python on muutnud loogikat "__setattr__" kasutamise osas "object" ja "type" jaoks, takistades selle kasutamist loodud klasside muutmiseks. Samuti on vigade kontrol delegatud "__setattr__" meetodist, seega peavad tõkked teatud kontrollides olema vastavalt ajakohastatud.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster