JPype 1.0 väljalase, teegid Java klassidele juurdepääsuks Pythonist

Saadaval kihtidevaheline vabastamine JPype 1.0, mis võimaldab korraldada Pythoni rakenduste täielikku juurdepääsu Java klassi teegidele. Pythoni JPype abil saate kasutada Java-spetsiifilisi teeke, et luua hübriidrakendusi, mis ühendavad Java ja Pythoni koodi. Erinevalt Jythonist ei saavutata Javaga integreerimist JVM-i Pythoni variandi loomise kaudu, vaid interaktsiooni kaudu mõlema virtuaalse masina tasemel, kasutades ühismälu. Kavandatud lähenemisviis võimaldab mitte ainult saavutada head jõudlust, vaid annab juurdepääsu ka kõigile CPythoni ja Java teekidele. Projekti kood jaotatud litsentsitud Apache 2.0 alusel.

Peamised muudatused:

  • JChar on toetatud tagastustüübina. Ühilduvuse huvides on JChar tuletatud sõnast "str" ​​ja rakendab kaudset teisendamist "int". Seetõttu läbib ta lepingute kontrolli. Kuid see tähendab, et Pythonis ei peeta seda enam numbriliseks tüübiks ja seetõttu hindab isinstance(c, int) väärtuseks False, mis on kooskõlas Java tüübi teisendusreeglitega.
  • Kasutusele on võetud operaator Java tüübi Type@obj (@ – see on sisetoote Pythoni operaator, Java-s seda ei eksisteeri).
  • Lisatud märge Java massiivide loomiseks. Fikseeritud suurusega massiivide jaoks tippige [s1][s2][s3], hiljem loodavate massiivide jaoks tippige [:][:][:].
  • @FunctionalInterface võimaldab teil Pythoni objektidest Java funktoreid luua __call__ abil.
  • Eemaldati aegunud JIterator, JExceptioni tehasekasutus, get_default_jvm_path ja jpype.reflect.
  • Vaikimisi ei teisendata Java stringe Pythoni stringideks.
  • Python on "__int__" aegunud, nii et täisarvu ja ujukomatüüpide vahelised kaudsed ülekandmised tekitavad tüübivea.
  • JExceptioni kasutamine on aegunud. Kõigi erandite püüdmiseks või objekti Java erandi tüüpi kontrollimiseks järgneb java.lang.Throwable.
  • Java erandite kaskaadpõhjused kajastuvad nüüd Pythoni virnaraamides.
  • JStringi kasutamine on aegunud. Java stringi loomiseks või objekti tüübi Java string kontrollimiseks kasutage java.lang.String.
  • Java klassides on uuendatud repr-meetodeid.
  • java.util.List täidab kogude.abc.Sequence ja collections.abc.MutableSequence lepinguid.
  • java.util.Collection täidab collections.abc.Collection lepingu.
  • Java klassid on privaatsed ja Pythonist laiendamisel annavad tüübivea.
  • Käsitsege Control-C korralikult. Eelmised versioonid jooksevad kokku, kui Java töötleb Control-C signaali, kuna need lõpetavad Java kõne ajal. JPype loob nüüd Java-lt naastes InterruptedExceptioni. Control-C ei lükka välja suuri Java-rutiine nagu praegu, kuna Java-l pole selleks spetsiaalset võimalust.

Seejärel moodustati paigaversioon 1.0.1, mis lisas muudatusi Pythoni versiooni 3.8.4 väljalaskega seotud probleemide lahendamiseks. Python muutis loogikat, mis puudutab "__setattr__" kasutamist "objekti" ja "tüübi" jaoks, takistades selle kasutamist tuletatud klasside muutmiseks. Samuti on vigade kontrollimine delegeeritud meetodist "__setattr__", seega tuleb mõne mõistuse kontrolli eranditüüpe vastavalt värskendada.

Allikas: opennet.ru

Lisa kommentaar