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

Dostupný uvolnění vrstvy JPype 1.0, 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:

  • JChar je podporován jako návratový typ. Kvůli kompatibilitě JChar dědí z "str" ​​​​a implementuje implicitní konverzi na "int". Proto prochází kontrolami ve smlouvách. To však znamená, že již není v Pythonu považován za číselný typ, a proto se isinstance(c, int) vyhodnotí jako False, což je v souladu s pravidly pro převod typu Java.
  • Byl zaveden operátor pro přetypování typu Java Type@obj (@ je operátor Pythonu pro vnitřní produkt; Java žádný nemá).
  • Přidán zápis pro vytváření polí Java. Type[s1][s2][s3] pro pole s pevnou velikostí, Type[:][:][:] pro pole, která budou vytvořena později.
  • @FunctionalInterface vám umožňuje vytvářet funktory Java z objektů Pythonu pomocí __call__.
  • Odstraněn zastaralý JIterator, použití JException jako továrny, get_default_jvm_path a jpype.reflect.
  • Ve výchozím nastavení se řetězce Java nepřevádějí na řetězce Python.
  • Python zavrhl "__int__", takže implicitní přetypování mezi typy typu integer a floating-point vytvoří TypeError.
  • Použití JException bylo zastaralé. Chcete-li zachytit všechny výjimky nebo zkontrolovat, zda je objekt typu výjimky Java, použijte java.lang.Throwable.
  • Kaskádové příčiny výjimek jazyka Java se nyní odrážejí v rámcích zásobníku Pythonu.
  • JString byl zastaralý. Chcete-li vytvořit řetězec Java nebo zkontrolovat, zda je objekt typu Java string, použijte java.lang.String.
  • Metody Repr byly aktualizovány ve třídách Java.
  • java.util.List provádí kontrakty pro collections.abc.Sequence a collections.abc.MutableSequence.
  • java.util.Collection provede smlouvu pro collections.abc.Collection.
  • Třídy Java jsou soukromé a při rozšíření z Pythonu vyvolají TypeError.
  • S Control-C zacházejte opatrně. Předchozí verze havarují, když Java zpracuje signál Control-C, protože během volání ukončí Java. JPype nyní při návratu z Javy vyvolá InterruptedException. Control-C nebude vyhazovat velké Java procedury, jak jsou v současnosti implementovány, protože Java pro to nemá speciální nástroj.

Dále bylo vytvořeno opravné vydání 1.0.1, které přidalo změny k vyřešení problémů s vydáním Pythonu 3.8.4. Python změnil logiku týkající se použití „__setattr__“ pro „objekt“ a „typ“, čímž zabránil jeho použití k úpravě odvozených tříd. Kontrola chyb byla také delegována z metody "__setattr__", takže typy výjimek v některých kontrolách přiměřenosti by měly být odpovídajícím způsobem aktualizovány.

Zdroj: opennet.ru

Přidat komentář