Utgivelse av JPype 1.0, biblioteker for tilgang til Java-klasser fra Python

Tilgjengelig frigjøring av mellomlag JPype 1.0, som lar deg organisere full tilgang til Python-applikasjoner til Java-klassebiblioteker. Med JPype fra Python kan du bruke Java-spesifikke biblioteker til å lage hybridapplikasjoner som kombinerer Java- og Python-kode. I motsetning til Jython, oppnås integrering med Java ikke gjennom å lage en Python-variant for JVM, men gjennom interaksjon på nivået til begge virtuelle maskiner som bruker delt minne. Den foreslåtte tilnærmingen tillater ikke bare å oppnå god ytelse, men gir også tilgang til alle CPython- og Java-biblioteker. Prosjektkode distribuert av lisensiert under Apache 2.0.

Hovedendringer:

  • JChar støttes som en returtype. For kompatibilitet er JChar avledet fra "str" ​​og implementerer en implisitt konvertering til "int". Derfor passerer den kontroller i kontrakter. Men dette betyr at den ikke lenger regnes som en numerisk type i Python, og derfor evalueres isinstance(c, int) til False, som er i samsvar med Javas typekonverteringsregler.
  • En operatør har blitt introdusert for å støpe Java-typen Type@obj (@ - dette er en Python-operator for det indre produktet, den finnes ikke i Java).
  • Lagt til notasjon for å lage Java-matriser. Type[s1][s2][s3] for matriser med faste størrelser, Type[:][:][:] for matriser som skal opprettes senere.
  • @FunctionalInterface lar deg lage Java-funksjoner fra Python-objekter med __call__.
  • Fjernet avviklet JIterator, JException fabrikkbruk, get_default_jvm_path og jpype.reflect.
  • Som standard konverteres ikke Java-strenger til Python-strenger.
  • Python har avviklet "__int__", så implisitte kast mellom heltalls- og flytetyper vil produsere en TypeError.
  • Utdatert bruk av JException. For å fange opp alle unntak, eller for å sjekke at et objekt er en Java-unntakstype, følger java.lang.Throwable.
  • Cascading Java-unntaksårsaker gjenspeiles nå i Python-stabelrammer.
  • Utdatert bruk av JString. For å lage en Java-streng, eller sjekke at et objekt er av typen Java-streng, bruk java.lang.String.
  • Repr-metoder er oppdatert i Java-klasser.
  • java.util.List oppfyller kontraktene for collections.abc.Sequence og collections.abc.MutableSequence.
  • java.util.Collection oppfyller kontrakten til for collections.abc.Collection.
  • Java-klasser er private og vil gi en TypeError når de utvides fra Python.
  • Håndter Control-C pent. Tidligere versjoner krasjer når Java behandler et Control-C-signal, da de vil avslutte Java under samtalen. JPype vil nå kaste en InterruptedException når den kommer tilbake fra Java. Control-C vil ikke sparke ut store Java-rutiner slik den gjør for øyeblikket, siden Java ikke har en spesiell funksjon for det.

En oppdateringsutgivelse av 1.0.1 ble deretter dannet, som la til endringer for å omgå problemer med utgivelsen av Python 3.8.4. Python endret logikken angående bruken av "__setattr__" for "objekt" og "type", og forhindret at den ble brukt til å endre avledede klasser. Dessuten har feilkontroll blitt delegert fra "__setattr__"-metoden, så unntakstypene i enkelte tilregnelighetskontroller må oppdateres tilsvarende.

Kilde: opennet.ru

Legg til en kommentar