Vydání JPype 0.7.2, knihovny pro přístup k Java třídám z Pythonu

Dostupné verze vrstvy JPype 0.7.2, která umožňuje plný přístup Python aplikací k Java knihovnám tříd. Pomocí JPype je možné využívat specifické Java knihovny z Pythonu a vytvářet hybridní aplikace kombinující kód v Java a Python. Na rozdíl od Jythonu, integrace s Java je dosažena nikoli vytvořením varianty Pythonu pro JVM, ale interakcí na úrovni obou virtuálních strojů s využitím sdílené paměti. Tento přístup nejenže poskytuje dobrou výkonnost, ale také umožňuje přístup ke všem knihovnám CPython a Java. Kód projektu distribuováno pod licencí Apache 2.0.

Hlavní změny:

  • Výjimky vyhozené v kódu C++ a Java nyní poskytují zásobník výjimek, když dojde k výjimce v kódu Python. Díky tomu již není potřeba volat stacktrace() pro získání informací o zásobníku výjimek.
  • Rychlost vracení při voláních byla třikrát zvýšena.
  • Rychlost přenosu byla podstatně (o řády) zvýšena v
    numpy bufferech vícerozměrných polí. Vícerozměrné primitivy předávají pouze pro čtení kopie vytvořené uvnitř JVM s kontinuálním uspořádáním C.
  • Všechny interně vystavené komponenty byly nahrazeny implementacemi z CPython a symboly __javaclass__, __javavalue__ a __javaproxy__
    byly odstraněny. Všechny typy CPython, které byly zděděny z typů třídy jpype, byly vybaveny vyhrazeným Java slotem. Všechny soukromé tabulky byly převedeny do CPython. Java typy nyní musí být zděděny z metaklasu JClass, který používá sloty typů. Mísení s základními Python třídami není povoleno. Typy Object, Proxy, Exception, Number a Array jsou zděděny přímo z interních implementací CPython.
  • Byla vylepšena trasování a zpracování výjimek.
  • Řezání polí (Array slices) je nyní zpracováváno jako pohledy, které podporují zpětný zápis do originálu, jako je numpy pole. Pro řezy polí byla zajištěna podpora nastavování a získávání hodnoty se skokem (slice(start, stop, step)).
  • Podpora '__reversed__' byla implementována v polích.
  • Vzory v Java polích nyní podporují API memoryview a byla odstraněna závislost na numpy pro předání obsahu bufferu.
  • Numpy již není závislostí (extra) a předání paměti do numpy je nyní dostupné bez kompilace s podporou numpy.
  • JInterface je navržen jako metaklas. Pro kontrolu rozhraní použijte isinstance(cls, JInterface).
  • Do výchozích importů byly přidány chybějící TLD 'mil', 'net' a 'edu'.
  • Během spouštění byly vylepšeny chybové zprávy pro UnsupportedClassVersion.
  • java.util.Map nyní vyvolává KeyError, pokud prvek není nalezen. Hodnoty, které jsou nulové, stále vracejí None, jak se očekává. Použijte get(), pokud je potřeba prázdné klíče zpracovávat jako None.
  • java.util.Collection byl odstraněn, protože byl podivně přetížen mezi remove(Object) a remove(int) na Listech. Pro přístup k původnímu chování Java použijte metodu remove(), ale je doporučeno přetypování pro řízení přetížení.
  • java.lang.IndexOutOfBoundsException nyní může být zachycena pomocí třídy pro výjimky IndexError při přístupu k prvkům java.util.List.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster