Vrystelling van JPype 0.7.2, biblioteke vir toegang tot Java-klasse vanaf Python

Beskikbaar tussenlaag vrystelling JPype 0.7.2, wat jou toelaat om volle toegang van Python-toepassings tot Java-klasbiblioteke te organiseer. Met JPype van Python kan jy Java-spesifieke biblioteke gebruik om hibriede toepassings te skep wat Java- en Python-kode kombineer. Anders as Jython, word integrasie met Java nie bereik deur die skepping van 'n Python-variant vir die JVM nie, maar deur interaksie op die vlak van beide virtuele masjiene wat gedeelde geheue gebruik. Die voorgestelde benadering laat nie net toe om goeie werkverrigting te behaal nie, maar bied ook toegang tot alle CPython- en Java-biblioteke. Projek Kode versprei deur gelisensieer onder Apache 2.0.

Belangrikste veranderinge:

  • Uitsonderings wat in C++ en Java-kode gegooi word, bied nou 'n uitsonderingsstapel wanneer 'n uitsondering in Python-kode voorkom. Dus, om inligting oor die uitsonderingsstapel te bekom, hoef jy nie meer stacktrace() te roep nie.
  • Die oproep terugkeer spoed is verdriedubbel.
  • Aansienlik (volgens grootteordes) verhoogde transmissiespoed in
    nommerige buffers van multidimensionele skikkings. Multidimensionele primitiewe slaag leesalleen-kopieΓ« wat binne die JVM geskep is met 'n aaneenlopende C-uitleg.

  • Alle blootgestelde internals is vervang met CPython-implementerings, en die simbole __javaclass__, __javavalue__ en __javaproxy__
    geskrap. 'n Toegewyde Java-gleuf is bygevoeg by alle CPython-tipes wat van jpype-klastipes erf. Alle private tafels is na CPython geskuif. Java-tipes moet nou van die JClass-metaklas erf, wat tipegleuwe gebruik. Mengsels vir Python-basisklasse word nie toegelaat nie. Die tipes is Object, Proxy, Exception, Number en Array en erf direk van CPython se interne implementerings.

  • Verbeterde opsporing en uitsonderingshantering.
  • Skikkingskywe word nou verwerk as aansigte wat terugskryf na die oorspronklike ondersteun, soos 'n numpy skikking. Vir skikkingsny word ondersteuning verskaf vir die opstel en herwinning van waardes in stappe (sny (begin, stop, stap)).
  • Skikkings ondersteun nou "__reversed__".
  • Java-skikkings ondersteun nou die memoryview API en verwyder die afhanklikheid van numpy om die bufferinhoud deur te gee.
  • Numpy is nie meer 'n afhanklikheid (ekstra) nie en geheue-oordrag na numpy is beskikbaar sonder om met numpy-ondersteuning saam te stel.
  • JInterface is ontwerp as 'n metaklas. Gebruik isinstance(cls, JInterface) om te kyk vir koppelvlakke.
  • Het ontbrekende TLD's "mil", "net" en "edu" by verstek invoere gevoeg.
  • Verbeterde foutboodskappe vir UnsupportedClassVersion tydens opstart.
  • java.util.Map gooi nou 'n KeyError as die element nie gevind word nie. Waardes wat nul is, keer steeds terug Geen soos verwag nie. Gebruik get() as jy leΓ« sleutels as Geen wil behandel.
  • Verwyder java.util.Collection aangesien dit vreemd genoeg oorlaai tussen verwyder(Object) en remove(int) op Lists. Gebruik die Java remove()-metode om toegang tot inheemse Java-gedrag te verkry, maar tipe casting word sterk aanbeveel vir oorladingsbeheer.
  • java.lang.IndexOutOfBoundsException kan nou gevang word deur die IndexError-uitsonderingsklas te gebruik wanneer toegang tot java.util.List-elemente verkry word.

Bron: opennet.ru

Voeg 'n opmerking