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

Tilgjengelig frigjøring av mellomlag JPype 0.7.2, 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:

  • Unntak kastet i C++ og Java-kode gir nå en unntaksstabel når et unntak oppstår i Python-kode. For å få informasjon om unntaksstakken trenger du derfor ikke lenger kalle stacktrace().
  • Anropsreturhastigheten er tredoblet.
  • Betydelig (etter størrelsesordener) økt overføringshastighet i
    nummige buffere av flerdimensjonale arrays. Flerdimensjonale primitiver sender skrivebeskyttede kopier opprettet inne i JVM med en sammenhengende C-layout.

  • Alle eksponerte interne deler er erstattet med CPython-implementeringer, og symbolene __javaclass__, __javavalue__ og __javaproxy__
    slettet. En dedikert Java-spor er lagt til alle CPython-typer som arver fra jpype-klassetyper. Alle private bord har blitt flyttet til CPython. Java-typer må nå arve fra JClass-metaklassen, som bruker typespor. Mixins for Python-baseklasser er ikke tillatt. Typene er Object, Proxy, Exception, Number og Array og arver direkte fra CPythons interne implementeringer.

  • Forbedret sporing og unntakshåndtering.
  • Matriseskiver blir nå behandlet som visninger som støtter skriving tilbake til originalen, for eksempel en numpy matrise. For array-slicing gis det støtte for å angi og hente verdier i trinn (slice(start, stop, step)).
  • Matriser støtter nå "__reversed__".
  • Java-matriser støtter nå memoryview API og fjerner avhengigheten av numpy for å sende bufferinnholdet.
  • Numpy er ikke lenger en avhengighet (ekstra) og minneoverføring til numpy er tilgjengelig uten kompilering med numpy-støtte.
  • JInterface er designet som en metaklasse. Bruk isinstance(cls, JInterface) for å se etter grensesnitt.
  • Lagt til manglende TLD-er "mil", "net" og "edu" til standardimporter.
  • Forbedrede feilmeldinger for UnsupportedClassVersion under oppstart.
  • java.util.Map kaster nå en KeyError hvis elementet ikke blir funnet. Verdier som er null returnerer fortsatt Ingen som forventet. Bruk get() hvis du vil behandle tomme nøkler som Ingen.
  • Fjernet java.util.Collection da det merkelig nok overbelaster mellom remove(Object) og remove(int) på Lists. Bruk Java remove()-metoden for å få tilgang til innebygd Java-atferd, men typecasting anbefales sterkt for overbelastningskontroll.
  • java.lang.IndexOutOfBoundsException kan nå fanges opp ved å bruke unntaksklassen IndexError når du får tilgang til java.util.List-elementer.

Kilde: opennet.ru

Legg til en kommentar