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

Ledig lag frigivelse JPype 0.7.2, som giver dig mulighed for at organisere fuld adgang til Python-applikationer til Java-klassebiblioteker. Med JPype fra Python kan du bruge Java-specifikke biblioteker til at skabe hybride applikationer, der kombinerer Java og Python-kode. I modsætning til Jython opnås integration med Java ikke gennem oprettelsen af ​​en Python-variant til JVM, men gennem interaktion på niveau med begge virtuelle maskiner, der bruger delt hukommelse. Den foreslåede tilgang giver ikke kun mulighed for at opnå god ydeevne, men giver også adgang til alle CPython- og Java-biblioteker. Projektkode distribueret af licenseret under Apache 2.0.

Vigtigste ændringer:

  • Undtagelser kastet i C++ og Java-kode giver nu en undtagelsesstak, når der opstår en undtagelse i Python-kode. For at få information om undtagelsesstakken behøver du således ikke længere kalde stacktrace().
  • Opkaldsreturhastigheden er blevet tredoblet.
  • Betydeligt (i størrelsesordener) øget transmissionshastighed i
    numpy buffere af flerdimensionelle arrays. Multidimensionelle primitiver videregiver skrivebeskyttede kopier oprettet inde i JVM med et sammenhængende C-layout.

  • Alle synlige interne elementer er blevet erstattet med CPython-implementeringer, og symbolerne __javaclass__, __javavalue__ og __javaproxy__
    slettet. En dedikeret Java-slot er blevet tilføjet til alle CPython-typer, der arver fra jpype-klassetyper. Alle private borde er blevet flyttet til CPython. Java-typer skal nu arve fra JClass metaclass, som bruger type slots. Mixins til Python-basisklasser er ikke tilladt. Typerne er Object, Proxy, Exception, Number og Array og arver direkte fra CPythons interne implementeringer.

  • Forbedret sporing og undtagelseshåndtering.
  • Array-udsnit behandles nu som visninger, der understøtter skrivning tilbage til originalen, såsom en numpy-array. Til array-slicing ydes der støtte til at indstille og hente værdier i trin (slice(start, stop, step)).
  • Arrays understøtter nu "__reversed__".
  • Java-arrays understøtter nu memoryview API og fjerner afhængigheden af ​​numpy for at videregive bufferindholdet.
  • Numpy er ikke længere en afhængighed (ekstra), og hukommelsesoverførsel til numpy er tilgængelig uden kompilering med numpy-understøttelse.
  • JInterface er designet som en metaklasse. Brug isinstance(cls, JInterface) til at tjekke for grænseflader.
  • Tilføjede manglende TLD'er "mil", "net" og "edu" til standardimporter.
  • Forbedrede fejlmeddelelser for UnsupportedClassVersion under opstart.
  • java.util.Map kaster nu en KeyError, hvis elementet ikke findes. Værdier, der er null, returnerer stadig Ingen som forventet. Brug get() hvis du vil behandle tomme nøgler som Ingen.
  • Fjernet java.util.Collection, da det mærkeligt nok overbelaster mellem remove(Object) og remove(int) på Lists. Brug Java remove()-metoden til at få adgang til indbygget Java-adfærd, men typecasting anbefales kraftigt til overbelastningskontrol.
  • java.lang.IndexOutOfBoundsException kan nu fanges ved hjælp af IndexError-undtagelsesklassen ved adgang til java.util.List-elementer.

Kilde: opennet.ru

Tilføj en kommentar