tarpsluoksnio išleidimas , kuri leidžia organizuoti visą Python programų prieigą prie Java klasės bibliotekų. Naudodami JPype iš Python, galite naudoti Java specifines bibliotekas, kad sukurtumėte hibridines programas, kurios derina Java ir Python kodus. Skirtingai nuo „Jython“, integracija su „Java“ pasiekiama ne kuriant „Python“ variantą JVM, o sąveikaujant abiejų virtualių mašinų lygiu, naudojant bendrą atmintį. Siūlomas metodas leidžia ne tik pasiekti gerą našumą, bet ir suteikia prieigą prie visų CPython ir Java bibliotekų. Projekto kodas licencijuota pagal Apache 2.0.
Pagrindiniai pakeitimai:
- JChar palaikomas kaip grąžinimo tipas. Dėl suderinamumo JChar paveldi iš „str“ ir įgyvendina numanomą konvertavimą į „int“. Todėl ji praeina sutarčių patikras. Bet tai reiškia, kad Python jis nebelaikomas skaitiniu tipu, todėl isinstance(c, int) įvertina kaip False, o tai atitinka Java tipo konvertavimo taisykles.
- Buvo įdiegtas operatorius, skirtas perduoti Java tipą Type@obj (@ yra Python operatorius vidiniam produktui; Java jo neturi).
- Pridėtas žymėjimas „Java“ masyvų kūrimui. Įveskite [s1][s2][s3] fiksuoto dydžio masyvams, įveskite [:][:][:] masyvams, kurie bus sukurti vėliau.
- @FunctionalInterface leidžia sukurti „Java“ funkcijas iš Python objektų su __call__.
- Pašalintas pasenęs JIterator, JException naudojimas kaip gamykla, get_default_jvm_path ir jpype.reflect.
- Pagal numatytuosius nustatymus Java eilutės nėra konvertuojamos į Python eilutes.
- „Python“ nebenaudoja „__int__“, todėl netiesiogiai perduodant sveikuosius skaičius ir slankiojo kablelio tipus, bus rodoma „TypeError“.
- JException naudojimas buvo pasenęs. Jei norite užfiksuoti visas išimtis arba patikrinti, ar objektas yra „Java“ išimties tipo, naudokite java.lang.Throwable.
- Kaskadinės Java išimčių priežastys dabar atsispindi Python dėklo rėmeliuose.
- JString buvo nebenaudojamas. Norėdami sukurti „Java“ eilutę arba patikrinti, ar objektas yra „Java“ eilutės tipo, naudokite java.lang.String.
- Repr metodai buvo atnaujinti Java klasėse.
- java.util.List vykdo sutartis dėl collections.abc.Sequence ir collections.abc.MutableSequence.
- java.util.Collection vykdo kolekcijų sutartį.abc.Collection.
- „Java“ klasės yra privačios ir išskleis „TypeError“, kai bus išplėsta iš „Python“.
- Atsargiai elkitės su Control-C. Ankstesnės versijos sugenda, kai „Java“ apdoroja „Control-C“ signalą, nes jos nutrauks „Java“ skambučio metu. JPype dabar išmes InterruptedException grįžęs iš Java. „Control-C“ neišmes didelių „Java“ procedūrų, kaip šiuo metu įdiegta, nes „Java“ neturi tam specialaus įrankio.
Tada buvo sukurta korekcinė 1.0.1 versija, kuri pridėjo pakeitimų, siekiant išspręsti Python 3.8.4 leidimo problemas. „Python“ pakeitė „__setattr__“ naudojimo „objektui“ ir „tipui“ logiką, neleidžiant jos naudoti išvestinėms klasėms modifikuoti. Klaidų tikrinimas taip pat buvo perduotas naudojant „__setattr__“ metodą, todėl kai kurių tinkamumo patikrų išimčių tipai turėtų būti atitinkamai atnaujinti.
Šaltinis: opennet.ru
