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

Saadaval kihtidevaheline vabastamine JPype 0.7.2, 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:

  • C++ ja Java koodis olevad erandid pakuvad nüüd erandite virna, kui Pythoni koodis esineb erand. Seega ei pea te erandipinu kohta teabe saamiseks enam stacktrace() kutsuma.
  • Kõne tagastamise kiirus on kolmekordistunud.
  • Oluliselt (suurusjärkude võrra) suurenenud edastuskiirus
    mitmemõõtmeliste massiivide numpy puhvrid. Mitmemõõtmelised primitiivid edastavad JVM-is loodud kirjutuskaitstud koopiad külgneva C-paigutusega.

  • Kõik avalikustatud sisemised on asendatud CPythoni rakendustega ja sümbolid __javaclass__, __javavalue__ ja __javaproxy__
    kustutatud. Spetsiaalne Java pesa on lisatud kõigile CPythoni tüüpidele, mis pärivad jpype klassi tüüpidest. Kõik privaatlauad on teisaldatud CPythonisse. Java tüübid peavad nüüd pärinema JClassi metaklassist, mis kasutab tüübipesasid. Pythoni baasklasside segud pole lubatud. Tüübid on objekt, puhverserver, erand, arv ja massiiv ning pärivad otse CPythoni sisemistest rakendustest.

  • Täiustatud jälgimine ja erandite käsitlemine.
  • Massiivilõike töödeldakse nüüd vaadetena, mis toetavad originaalile tagasi kirjutamist, näiteks numpy massiiv. Massiivi viilutamiseks toetatakse väärtuste seadmist ja hankimist sammude kaupa (slice (algus, peatus, samm)).
  • Massiivid toetavad nüüd "__reversed__".
  • Java massiivid toetavad nüüd mäluvaate API-d ja eemaldavad puhvri sisu edastamiseks sõltuvuse numpyst.
  • Numpy ei ole enam sõltuvus (lisa) ja mälu ülekanne numpyle on saadaval ilma numpy toega kompileerimiseta.
  • JInterface on loodud metaklassina. Liideste kontrollimiseks kasutage isinstance (cls, JInterface).
  • Lisati vaikeimportimisele puuduvad tippdomeenid "mil", "net" ja "edu".
  • Täiustatud veateated UnsupportedClassVersionile käivitamise ajal.
  • java.util.Map annab nüüd KeyErrori, kui elementi ei leita. Väärtused, mis on null, tagastavad endiselt ootuspäraselt Puuduvad. Kasutage get(), kui soovite käsitleda tühje klahve kui None.
  • Eemaldatud java.util.Collection, kuna see koormab kummaliselt loendites eemaldamise(objekti) ja remove(int) vahel. Java loomulikule käitumisele juurdepääsuks kasutage meetodit Java remove(), kuid ülekoormuse kontrollimiseks on tungivalt soovitatav kasutada tüübi ülekandmist.
  • java.lang.IndexOutOfBoundsExceptioni saab nüüd java.util.List elementidele juurdepääsul kasutada erandiklassi IndexError abil.

Allikas: opennet.ru

Lisa kommentaar