Pagpagawas sa JPype 0.7.2, mga librarya alang sa pag-access sa mga klase sa Java gikan sa Python

Magamit pagpagawas sa layer JPype 0.7.2, nga nagtugot sa mga aplikasyon sa Python nga adunay hingpit nga pag-access sa mga librarya sa klase sa pinulongang Java. Uban sa JPype gikan sa Python, mahimo nimong gamiton ang mga librarya nga espesipiko sa Java aron makahimo og hybrid nga mga aplikasyon nga naghiusa sa Java ug Python code. Dili sama sa Jython, ang integrasyon sa Java makab-ot dili pinaagi sa paghimo ug Python nga variant para sa JVM, kondili pinaagi sa interaksyon sa lebel sa duha ka virtual machine gamit ang shared memory. Ang gisugyot nga pamaagi nagtugot dili lamang sa pagkab-ot sa maayo nga performance, apan naghatag usab og access sa tanang CPython ug Java nga mga librarya. Kodigo sa proyekto giapod-apod sa lisensyado ubos sa Apache 2.0.

Panguna nga mga pagbag-o:

  • Ang mga eksepsiyon nga gilabay sa C++ ug Java code karon naghatag ug exception stack kung naay eksepsiyon mahitabo sa Python code. Busa, aron makakuha og impormasyon bahin sa exception stack, dili na nimo kinahanglan nga tawagan ang stacktrace().
  • Ang katulin sa pagbalik sa tawag na-triple.
  • Mahinungdanon (pinaagi sa mga mando sa kadako) nga nadugangan ang katulin sa transmission sa
    numpy buffers sa multidimensional arrays. Ang multidimensional nga mga primitibo nagpasa sa read-only nga mga kopya nga gihimo sulod sa JVM nga adunay magkadugtong nga C layout.

  • Ang tanan nga gibutyag nga internal gipulihan sa mga pagpatuman sa CPython, ug ang mga simbolo __javaclass__, __javavalue__ ug __javaproxy__
    gipapas. Usa ka gipahinungod nga Java slot ang gidugang sa tanan nga mga tipo sa CPython nga nakapanunod gikan sa mga klase sa klase sa jpype. Ang tanang pribadong lamesa gibalhin sa CPython. Ang mga tipo sa Java kinahanglan karon nga makapanunod gikan sa JClass metaclass, nga naggamit sa mga slot sa tipo. Ang mga mixin alang sa Python base nga mga klase dili gitugotan. Ang mga tipo mao ang Object, Proxy, Exception, Number ug Array ug direktang makapanunod gikan sa internal nga pagpatuman sa CPython.

  • Gipauswag ang pagsubay ug pagdumala sa eksepsiyon.
  • Ang mga hiwa sa array giproseso na karon isip mga panglantaw nga nagsuporta sa pagsulat balik sa orihinal, sama sa numpy array. Para sa array slicing, gihatag ang suporta para sa pag-set ug pagkuha sa mga value sa mga lakang (slice(start, stop, step)).
  • Ang mga arrays karon nagsuporta sa "__reversed__".
  • Ang Java arrays karon nagsuporta sa memoryview API ug tangtangon ang pagsalig sa numpy aron mapasa ang buffer contents.
  • Ang Numpy dili na usa ka dependency (dugang) ug ang pagbalhin sa memorya sa numpy magamit nga wala’y pag-compile sa numpy nga suporta.
  • Ang JInterface gidisenyo isip usa ka meta class. Gamita ang isinstance(cls, JInterface) aron masusi ang mga interface.
  • Gidugang ang nawala nga TLDs "mil", "net" ug "edu" sa default nga mga import.
  • Gipauswag nga mga mensahe sa sayup alang sa UnsupportedClassVersion sa panahon sa pagsugod.
  • Ang java.util.Map karon naglabay sa usa ka KeyError kung ang elemento wala makit-an. Ang mga kantidad nga null wala gihapon ibalik nga wala sama sa gipaabut. Gamita get() kung gusto nimo trataron ang mga walay sulod nga yawe isip Wala.
  • Gikuha ang java.util.Collection tungod kay kini katingad-an nga nag-overload sa taliwala sa remove(Object) ug remove(int) sa Lists. Gamita ang Java remove() nga pamaagi aron ma-access ang lumad nga Java nga kinaiya, apan ang type casting kusganong girekomendar alang sa overload control.
  • Ang java.lang.IndexOutOfBoundsException mahimo nang madakpan gamit ang IndexError exception class kung mag-access sa java.util.List nga mga elemento.

Source: opennet.ru

Idugang sa usa ka comment