Verze JPype 1.0, knihovny pro přístup k Java třídám z Pythonu

Dostupné verze vrstvy JPype 1.0, 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:

  • JChar je podporován jako návratový typ. Pro kompatibilitu JChar dědí ze „str“ a implementuje implicitní převod na „int“. Proto prochází kontrolami v kontraktech. To však znamená, že již není považován za číselný typ v Pythonu a proto isinstance(c, int) vrací hodnotu False, což je v souladu s pravidly převodu typů v Java.
  • Byl zaveden operátor pro převod Java typu Type@obj (@ — to je operátor Pythonu pro vnitřní vynásobení, v Java neexistuje).
  • Byla přidána notace pro vytváření Java polí. Type[s1][s2][s3] pro pole pevných velikostí, Type[:][:][:] pro pole, která budou vytvořena později.
  • @FunctionalInterface umožňuje vytvářet Java funkce z Python objektů s __call__.
  • Byly odstraněny zastaralé JIterator, použití JException jako továrny, get_default_jvm_path a jpype.reflect.
  • Ve výchozím nastavení k převodu Java řetězců na Python řetězce nedochází.
  • Python označil „__int__“ jako nedoporučovaný, takže implicitní převody mezi celými a plovoucími typy budou vyvolávat TypeError.
  • Použití JException bylo označeno jako zastaralé. Aby bylo možné zachytit všechna výjimky, nebo zkontrolovat, že objekt je typ Java výjimky, měli byste použít java.lang.Throwable.
  • Kaskádové příčiny Java výjimek jsou nyní odráženy v zásobnících Python.
  • Použití JString bylo označeno jako zastaralé. Chcete-li vytvořit Java řetězec, nebo zkontrolovat, že objekt má typ Java řetězce, použijte java.lang.String.
  • V Java třídách byly aktualizovány repr metody.
  • java.util.List plní kontrakty pro collections.abc.Sequence a collections.abc.MutableSequence.
  • java.util.Collection plní kontrakt pro collections.abc.Collection.
  • Java třídy jsou uzavřené a při rozšiřování z Pythonu vyvolávají TypeError.
  • Zpracování Control-C probíhá opatrně. Předchozí verze selhaly, když Java zpracovávala signál Control-C, protože ukončily Javu během volání. Nyní JPype vytvoří InterruptedException, když se vrátí z Javy. Control-C nebude přeskakovat z velkých Java procedur, jak je nyní implementováno, protože Java nemá žádný speciální prostředek pro tento účel.

Bylo vydáno korekční vydání 1.0.1, které obsahuje změny pro obcházení problémů s verzí Pythonu 3.8.4. Python změnil logiku týkající se používání „__setattr__“ pro „object“ a „type“, což brání jeho použití pro změnu odvozených tříd. Další kontroly chyb byly delegovány z metody „__setattr__“, takže typy výjimek v některých validacích musí být příslušně aktualizovány.

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