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

K dispozícii uvoľnenie vrstvy JPype 0.7.2, ktorý umožňuje aplikáciám Python plný prístup ku knižniciam tried v jazyku Java. S JPype od Pythonu môžete použiť knižnice špecifické pre Java na vytváranie hybridných aplikácií, ktoré kombinujú kód Java a Python. Na rozdiel od Jythonu sa integrácia s Javou nedosahuje vytvorením variantu Pythonu pre JVM, ale interakciou na úrovni oboch virtuálnych strojov využívajúcich zdieľanú pamäť. Navrhovaný prístup umožňuje nielen dosiahnuť dobrý výkon, ale poskytuje aj prístup ku všetkým knižniciam CPython a Java. Kód projektu distribuovaný licencovaný pod Apache 2.0.

Hlavné zmeny:

  • Výnimky vyvolané v kóde C++ a Java teraz poskytujú zásobník výnimiek, keď sa v kóde Pythonu vyskytne výnimka. Ak teda chcete získať informácie o zásobníku výnimiek, už nemusíte volať stacktrace().
  • Rýchlosť návratu hovoru sa strojnásobila.
  • Výrazne (rádovo) zvýšená prenosová rýchlosť v
    numpy buffery viacrozmerných polí. Multidimenzionálne primitíva odovzdávajú kópie iba na čítanie vytvorené vo vnútri JVM so súvislým rozložením C.

  • Všetky vystavené interné prvky boli nahradené implementáciami CPythonu a symbolmi __javaclass__, __javavavalue__ a __javaproxy__
    vymazané. Vyhradený Java slot bol pridaný do všetkých typov CPython, ktoré dedia z typov triedy jpype. Všetky súkromné ​​tabuľky boli presunuté do CPythonu. Typy Java musia teraz dediť z metatriedy JClass, ktorá používa typové sloty. Mixiny pre základné triedy Pythonu nie sú povolené. Typy sú Object, Proxy, Exception, Number a Array a dedia sa priamo z interných implementácií CPythonu.

  • Vylepšené sledovanie a spracovanie výnimiek.
  • Rezy poľa sú teraz spracované ako pohľady, ktoré podporujú spätný zápis do originálu, ako napríklad numpy pole. Pre segmentovanie poľa je poskytovaná podpora pre nastavenie a načítanie hodnôt v krokoch (slice(start, stop, step)).
  • Polia teraz podporujú "__reversed__".
  • Polia Java teraz podporujú rozhranie memoryview API a odstraňujú závislosť na numpy pri odovzdávaní obsahu vyrovnávacej pamäte.
  • Numpy už nie je závislosť (extra) a prenos pamäte do numpy je dostupný bez kompilácie s podporou numpy.
  • JInterface je navrhnutý ako meta trieda. Na kontrolu rozhraní použite isinstance(cls, JInterface).
  • Do predvolených importov boli pridané chýbajúce TLD „mil“, „net“ a „edu“.
  • Vylepšené chybové hlásenia pre UnsupportedClassVersion počas spúšťania.
  • java.util.Map teraz vyvolá chybu KeyError, ak sa prvok nenájde. Hodnoty, ktoré sú null, stále vracajú žiadne, ako sa očakávalo. Ak chcete prázdne kľúče považovať za žiadne, použite get().
  • Odstránená java.util.Collection, pretože sa čudne preťažuje medzi remove(Object) a remove(int) v zoznamoch. Na prístup k natívnemu správaniu Java použite metódu Java remove(), ale na kontrolu preťaženia sa dôrazne odporúča pretypovanie.
  • java.lang.IndexOutOfBoundsException je teraz možné zachytiť pomocou triedy výnimky IndexError pri prístupe k prvkom java.util.List.

Zdroj: opennet.ru

Pridať komentár