Izdanje JPype 0.7.2, biblioteke za pristup Java klasama iz Pythona

Dostupno oslobađanje sloja JPype 0.7.2, što omogućava Python aplikacijama da imaju pun pristup bibliotekama klasa na jeziku Java. Uz JPype iz Pythona, možete koristiti biblioteke specifične za Javu za kreiranje hibridnih aplikacija koje kombinuju Java i Python kod. Za razliku od Jythona, integracija sa Javom se ne postiže kreiranjem Python varijante za JVM, već interakcijom na nivou obje virtuelne mašine koristeći zajedničku memoriju. Predloženi pristup omogućava ne samo postizanje dobrih performansi, već i omogućava pristup svim CPython i Java bibliotekama. Šifra projekta distribuira licenciran pod Apache 2.0.

Glavne promjene:

  • Izuzeci u C++ i Java kodu sada pružaju stog izuzetaka kada se dogodi izuzetak u Python kodu. Stoga, da biste dobili informacije o steku izuzetaka, više ne morate pozivati ​​stacktrace().
  • Brzina povratnog poziva je utrostručena.
  • Značajno (po redovima veličine) povećana brzina prijenosa u
    numpy baferi višedimenzionalnih nizova. Višedimenzionalni primitivi prenose kopije samo za čitanje kreirane unutar JVM-a sa neprekidnim C rasporedom.

  • Svi izloženi interni elementi su zamijenjeni CPython implementacijama, a simboli __javaclass__, __javavalue__ i __javaproxy__
    obrisano. Namjenski Java slot je dodat svim CPython tipovima koji nasljeđuju tipove jpype klasa. Sve privatne tabele su premještene u CPython. Java tipovi sada moraju naslijediti od JClass metaklase, koja koristi utore tipa. Miksovi za Python osnovne klase nisu dozvoljeni. Tipovi su Object, Proxy, Exception, Number i Array i nasleđuju se direktno iz internih implementacija CPython-a.

  • Poboljšano praćenje i rukovanje izuzetcima.
  • Isječci niza se sada obrađuju kao pogledi koji podržavaju upisivanje natrag u original, kao što je niz numpy. Za rezanje niza, pruža se podrška za postavljanje i preuzimanje vrijednosti u koracima (slice(start, stop, step)).
  • Nizovi sada podržavaju "__reversed__".
  • Java nizovi sada podržavaju API za prikaz memorije i uklanjaju ovisnost o numpyju za prosljeđivanje sadržaja bafera.
  • Numpy više nije zavisnost (ekstra) i prijenos memorije na numpy je dostupan bez kompajliranja s podrškom za numpy.
  • JIinterface je dizajniran kao meta klasa. Koristite isinstance(cls, JInterface) za provjeru sučelja.
  • Dodani nedostajući TLD-ovi "mil", "net" i "edu" za podrazumevani uvoz.
  • Poboljšane poruke o grešci za UnsupportedClassVersion tokom pokretanja.
  • java.util.Map sada baca KeyError ako element nije pronađen. Vrijednosti koje su null i dalje vraćaju Ništa kao što se očekivalo. Koristite get() ako želite da prazne ključeve tretirate kao Ništa.
  • Uklonjena java.util.Collection jer se čudno preopterećuje između remove(Object) i remove(int) na listama. Koristite metodu Java remove() za pristup izvornom Java ponašanju, ali se preporuča uvođenje tipova za kontrolu preopterećenja.
  • java.lang.IndexOutOfBoundsException sada može biti uhvaćen korištenjem klase izuzetka IndexError kada se pristupa elementima java.util.List.

izvor: opennet.ru

Dodajte komentar