Udgivelse af JPype 0.7.2, biblioteket til adgang til Java-klasser fra Python

Tilgængelig udgivelsen af lag JPype 0.7.2, som muliggør fuld adgang for Python-applikationer til klassebiblioteker skrevet i Java. Med JPype kan man fra Python bruge Java-specifikke biblioteker og skabe hybride applikationer, der kombinerer kode skrevet i Java og Python. I modsætning til Jython opnås integration med Java ikke ved at skabe en variant af Python til JVM, men gennem interaktion på niveauet for begge virtuelle maskiner ved hjælp af delt hukommelse. Den foreslåede tilgang muliggør ikke kun god ydeevne, men giver også adgang til alle CPython- og Java-biblioteker. Projektkoden distribueres er under Apache 2.0-licensen.

Vigtige ændringer:

  • Undtagelser, der kastes i C++ og Java-kode, giver nu en undtagelsesstak, når der opstår en undtagelse i Python-koden. Derfor er det ikke længere nødvendigt at kalde stacktrace() for at få information om undtagelsesstakken.
  • Hastigheden for tilbagevenden ved kald er tredoblet.
  • Hastigheden for overførsel til
    numpy-buffere af multidimensionale arrays er væsentligt (flere størrelsesordener) forbedret. Multidimensionale primære typer sender nu kun-læse kopier, der er skabt inden for JVM med kontinuerlig C-layout.
  • Alle interne komponenter er blevet udskiftet med implementeringer fra CPython, og symbolerne __javaclass__, __javavalue__ og __javaproxy__
    er blevet fjernet. Alle CPython-typer, der er arvet fra jpype-klassetyper, har fået en dedikeret Java-slot. Alle private tabeller er blevet overført til CPython. Java-typer skal nu arve fra metaklassen JClass, som bruger type-slotte. Mixins for Python-basis klasser er ikke tilladt. Typerne Object, Proxy, Exception, Number og Array arves direkte fra de interne CPython-implementeringer.
  • Sporing og håndtering af undtagelser er forbedret.
  • Array slices behandles nu som visninger, der understøtter tilbageføring til originalen, såsom numpy arrays. Der er tilføjet understøttelse af at sætte og få værdier med trin (slice(start, stop, step)) for array slices.
  • Der er implementeret støtte for "__reversed__" i arrays.
  • I Java-arrays er der tilføjet støtte for memoryview API, og afhængigheden af numpy til overførsel af bufferindhold er fjernet.
  • Numpy er nu ikke længere en afhængighed (ekstra), og overførsel af hukommelse til numpy er tilgængelig uden at kompilere med numpy-understøttelse.
  • JInterface er udformet som en metaklasse. Brug isinstance(cls, JInterface) til at tjekke for interfaces.
  • De manglende TLD'er "mil", "net" og "edu" er blevet tilføjet til standardimporterne.
  • Fejlmeddelelser for UnsupportedClassVersion er forbedret under opstart.
  • java.util.Map kaster nu KeyError, hvis elementet ikke findes. Værdier, der er null, returnerer stadig None som forventet. Brug get(), hvis tomme nøgler skal behandles som None.
  • java.util.Collection er fjernet, da den underligt overbelastes mellem remove(Object) og remove(int) på lister. Brug Java-metoden remove() for at få adgang til den originale Java-adfærd, men typecasting anbefales kraftigt for at styre overbelastningen.
  • java.lang.IndexOutOfBoundsException kan nu fanges ved hjælp af klassen for undtagelser IndexError ved adgang til elementer i java.util.List.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster