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

K dispozícii uvoľnenie vrstvy JPype 1.0, 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:

  • JChar je podporovaný ako návratový typ. Kvôli kompatibilite JChar dedí z "str" ​​​​a implementuje implicitnú konverziu na "int". Preto prechádza kontrolami v zmluvách. To však znamená, že sa už v Pythone nepovažuje za číselný typ, a preto sa isinstance(c, int) vyhodnotí ako False, čo je v súlade s pravidlami konverzie typu Java.
  • Bol zavedený operátor na pretypovanie typu Java, Type@obj (@ je operátor Pythonu pre vnútorný produkt; Java ho nemá).
  • Pridaný zápis pre vytváranie polí Java. Typ[s1][s2][s3] pre polia s pevnou veľkosťou, Typ[:][:][:] pre polia, ktoré sa vytvoria neskôr.
  • @FunctionalInterface vám umožňuje vytvárať Java funktory z objektov Pythonu pomocou __call__.
  • Odstránený zastaraný JIterator, použitie JException ako továrne, get_default_jvm_path a jpype.reflect.
  • V predvolenom nastavení sa reťazce Java nekonvertujú na reťazce Pythonu.
  • Python zastaral "__int__", takže implicitné pretypovanie medzi celočíselnými typmi a typmi s pohyblivou rádovou čiarkou vytvorí TypeError.
  • Použitie JException bolo zastarané. Ak chcete zachytiť všetky výnimky alebo skontrolovať, či je objekt typu výnimky Java, použite java.lang.Throwable.
  • Kaskádové príčiny výnimiek Java sa teraz odrážajú v rámcoch zásobníka Pythonu.
  • JString je zastaraný. Ak chcete vytvoriť reťazec Java alebo skontrolovať, či je objekt typu reťazec Java, použite java.lang.String.
  • Metódy Repr boli aktualizované v triedach Java.
  • java.util.List vykonáva zmluvy pre kolekcie.abc.Sequence a kolekcie.abc.MutableSequence.
  • java.util.Collection vykoná zmluvu o kolekciách.abc.Collection.
  • Triedy Java sú súkromné ​​a pri rozšírení z Pythonu vyvolajú TypeError.
  • S Control-C manipulujte opatrne. Predchádzajúce verzie zlyhávajú, keď Java spracuje signál Control-C, pretože počas hovoru ukončia Java. JPype teraz pri návrate z Java vyvolá InterruptedException. Control-C nevyhodí veľké Java procedúry, ako sú v súčasnosti implementované, pretože Java na to nemá špeciálny nástroj.

Ďalej bolo vytvorené opravné vydanie 1.0.1, ktoré pridalo zmeny na obídenie problémov s vydaním Pythonu 3.8.4. Python zmenil logiku týkajúcu sa použitia „__setattr__“ pre „objekt“ a „typ“, čím zabránil jeho použitiu na úpravu odvodených tried. Kontrola chýb bola tiež delegovaná z metódy "__setattr__", takže typy výnimiek v niektorých kontrolách primeranosti by sa mali zodpovedajúcim spôsobom aktualizovať.

Zdroj: opennet.ru

Pridať komentár