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

Tilgjengelig utgivelse av laget JPype 1.0, som gir full tilgang til Python-applikasjoner for Java-biblioteker. Med JPype kan Python bruke Java-spesifikke biblioteker, og lage hybride applikasjoner som kombinerer kode fra Java og Python. I motsetning til Jython oppnås integrasjon med Java ikke ved å lage en versjon av Python for JVM, men ved interaksjon på nivået til begge virtuelle maskiner, med delt minne. Den foreslåtte tilnærmingen gjør det mulig å oppnå god ytelse og gir tilgang til alle CPython- og Java-biblioteker. Koden for prosjektet distribueres under Apache 2.0-lisensen.

Hovedendringer:

  • JChar støttes som returtype. For kompatibilitet er JChar arvet fra «str» og implementerer implisitt konvertering til «int». Derfor går det gjennom sjekker i kontrakter. Men dette betyr at det ikke lenger blir betraktet som en numerisk type i Python, og derfor vil isinstance(c, int) være False, noe som er i samsvar med typekonverteringsreglene i Java.
  • Det er innført en operator for å tilpasse Java-typen Type@obj (@ er Python-operatoren for indre produkt, som ikke finnes i Java).
  • Notasjon for å opprette Java-arrays er lagt til. Type[s1][s2][s3] for faste størrelser, Type[:][:][:] for arrays som skal opprettes senere.
  • @FunctionalInterface gjør det mulig å lage Java-funktorer fra Python-objekter med __call__.
  • Utdaterte JIterator, bruken av JException som fabrikk, get_default_jvm_path og jpype.reflect er fjernet.
  • Som standard konverteres ikke Java-strenger til Python-strenger.
  • Python har erklært «__int__» som ikke anbefalt, derfor vil implisitte konverteringer mellom heltall og flyttall resultere i TypeError.
  • Bruken av JException er erklært utdaterte. For å fange alle unntak, eller for å sjekke at et objekt er en Java-unntakstype, bør man bruke java.lang.Throwable.
  • Kaskadeårsaker fra Java-unntak gjenspeiles nå i Python-stakkspor.
  • Bruken av JString er erklært utdaterte. For å lage en Java-streng, eller for å sjekke at et objekt har Java-strengtype, bruk java.lang.String.
  • repr-metoder er oppdatert i Java-klasser.
  • java.util.List implementerer kontrakter for collections.abc.Sequence og collections.abc.MutableSequence.
  • java.util.Collection oppfyller kontrakten for collections.abc.Collection.
  • Java-klasser er lukket og vil kaste TypeError ved utvidelse fra Python.
  • Behandling av Control-C er nå mer presis. Tidligere versjoner krasjet når Java håndterte Control-C-signalet, da de ville avslutte Java under anropet. Nå vil JPype opprette en InterruptedException når den returnerer fra Java. Control-C vil ikke avbryte store Java-prosedyrer, som implementert i dag, ettersom Java ikke har noen spesiell mekanisme for dette.

En korrektiv utgivelse 1.0.1 er nå tilgjengelig, med endringer for å omgå problemene med utgivelsen av Python 3.8.4. Python endret logikken angående bruken av «__setattr__» for «object» og «type», og forhindret dens bruk for å endre avledede klasser. Feilsjekking ble også delegert fra metoden «__setattr__», så unntakstyper i noen datavalideringskontroller må oppdateres deretter.

Kilde: opennet.ru

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster