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

Dostupný uvolnění vrstvy JPype 0.7.2, který umožňuje organizovat plný přístup aplikací Pythonu ke knihovnám tříd Java. S JPype z Pythonu můžete použít knihovny specifické pro Java k vytváření hybridních aplikací, které kombinují kód Java a Python. Na rozdíl od Jythonu je integrace s Javou dosaženo nikoli vytvořením varianty Pythonu pro JVM, ale interakcí na úrovni obou virtuálních strojů využívajících sdílenou paměť. Navrhovaný přístup umožňuje nejen dosáhnout dobrého výkonu, ale také poskytuje přístup ke všem knihovnám CPython a Java. Kód projektu distribuovány licencováno pod Apache 2.0.

Hlavní změny:

  • Výjimky vyvolané v kódu C++ a Java nyní poskytují zásobník výjimek, když dojde k výjimce v kódu Pythonu. Chcete-li tedy získat informace o zásobníku výjimek, již nemusíte volat stacktrace().
  • Rychlost zpětného volání se ztrojnásobila.
  • Výrazně (řádově) narostla přenosová rychlost v
    numpy buffery vícerozměrných polí. Vícerozměrná primitiva předávají kopie pouze pro čtení vytvořené uvnitř JVM se souvislým rozložením C.

  • Všechny vystavené vnitřní části byly nahrazeny implementacemi CPythonu a symboly __javaclass__, __javavavalue__ a __javaproxy__
    smazáno. Ke všem typům CPython, které dědí z typů třídy jpype, byl přidán vyhrazený slot Java. Všechny soukromé tabulky byly přesunuty do CPythonu. Typy Java musí nyní dědit z metatřídy JClass, která používá typové sloty. Mixiny pro základní třídy Pythonu nejsou povoleny. Typy jsou Object, Proxy, Exception, Number a Array a dědí se přímo z interních implementací CPythonu.

  • Vylepšené trasování a zpracování výjimek.
  • Řezy pole jsou nyní zpracovány jako pohledy, které podporují zápis zpět do originálu, jako je numpy pole. Pro segmentování pole je poskytována podpora pro nastavení a načítání hodnot v krocích (slice(start, stop, step)).
  • Pole nyní podporují "__reversed__".
  • Pole Java nyní podporují memoryview API a odstraňují závislost na numpy pro předávání obsahu vyrovnávací paměti.
  • Numpy již není závislost (extra) a přenos paměti do numpy je dostupný bez kompilace s podporou numpy.
  • JInterface je navržen jako meta třída. 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“.
  • Vylepšené chybové zprávy pro UnsupportedClassVersion během spouštění.
  • java.util.Map nyní vyvolá chybu KeyError, pokud není prvek nalezen. Hodnoty, které jsou null, podle očekávání stále vracejí Žádné. Pokud chcete prázdné klíče považovat za žádné, použijte get().
  • Odstraněno java.util.Collection, protože se podivně přetěžuje mezi remove(Object) a remove(int) v seznamech. Pro přístup k nativnímu chování Java použijte metodu Java remove(), ale pro kontrolu přetížení se důrazně doporučuje přetypování.
  • java.lang.IndexOutOfBoundsException lze nyní zachytit pomocí třídy výjimky IndexError při přístupu k prvkům java.util.List.

Zdroj: opennet.ru

Přidat komentář