Vydanie JPype 0.7.2, knižnice na prístup k Java triedam z Pythonu

Dostupný uvedenie vrstvy JPype 0.7.2, ktoré umožňuje plný prístup Python aplikácií k Java knižniciam. S JPype môžu Python aplikácie využívať špecifické Java knižnice a vytvárať hybridné aplikácie kombinujúce kód v Jave a Pythone. Na rozdiel od Jythonu, integrácia s Javou sa dosahuje nie cez vytvorenie verzie Pythonu pre JVM, ale cez interakciu na úrovni oboch virtuálnych strojov, pričom sa využíva zdieľaná pamäť. Navrhovaný prístup umožňuje nielen dosiahnuť dobrý výkon, ale aj poskytuje prístup ku všetkým knižniciam CPython a Javy. Kód projektu distribuovaný pod licenciou Apache 2.0.

Hlavné zmeny:

  • Výnimky vyhadzované v C++ a Java kóde teraz poskytujú zásobník výnimiek pri vzniku výnimky v Pythone. Takže na získanie informácií o zásobníku výnimiek už nie je potrebné volať stacktrace().
  • Rýchlosť vrátenia pri výzvach sa zvýšila tri krát.
  • Podstatne (o poriadky) sa zvýšila rýchlosť prenosu v
    numpy búferoch viacrozmerných polí. Viacrozmerné primitívy prenášajú iba na čítanie dostupné kópie, vytvorené vnútri JVM s kontinuálnym rozložením C.
  • Všetky vyžadované vnútorné komponenty boli nahradené implementáciami z CPythonu, a symboly __javaclass__, __javavalue__ a __javaproxy__
    boli odstránené. Všetkým typom CPython, dedičným od typov triedy jpype, bol pridaný vyhradený Java-slot. Všetky súkromné tabuľky boli presunuté do CPythonu. Java typy teraz musia dedične pochádzať od metaklasy JClass, ktorá používa sloty typov. Prímiesky pre základné triedy Pythonu nie sú povolené. Typy Object, Proxy, Exception, Number a Array sa dedične pochádzajú priamo z vnútorných implementácií CPython.
  • Zlepšilo sa trasovanie a spracovanie výnimiek.
  • Rezy polí (Array slices) sa teraz spracovávajú ako zobrazenia podporujúce spätné zapisovanie do originálu, ako je numpy pole. Pre rezy polí je zabezpečená podpora nastavovania a získavania hodnoty so skokom (slice(start, stop, step)).
  • V poliach bola implementovaná podpora „__reversed__“.
  • V Java poliach je zabezpečená podpora API memoryview a bola odstránená závislosť od numpy pri prenose obsahu búfera.
  • Numpy už nie je závislosťou (extra) a prenos pamäte do numpy je dostupný bez kompilácie so podporou numpy.
  • JInterface je zobrazený ako metaklas. Na kontrolu rozhraní použite isinstance(cls, JInterface).
  • Do predvolených importov boli pridané vynechané TLD „mil“, „net“ a „edu“.
  • Počas spúšťania boli vylepšené správy o chybách pre UnsupportedClassVersion.
  • java.util.Map teraz vyvoláva KeyError, ak prvok nie je nájdený. Hodnoty, ktoré sú null, naďalej vracajú None ako sa očakáva. Použite get(), ak treba spracovávať prázdne kľúče ako None.
  • java.util.Collection bola odstránená, pretože sa zvláštne preťažuje medzi remove(Object) a remove(int) na zoznamoch. Použite Java metódu remove() na prístup k pôvodnému Java správaniu, ale typovanie je prísne odporúčané na správu preťaženia.
  • java.lang.IndexOutOfBoundsException teraz môže byť zachytená pomocou triedy na výnimky IndexError pri prístupe k prvkom java.util.List.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster