vahekihte väljaanne , mis võimaldab Python-i rakendustel täielikku juurdepääsu Java keele klasside libraritele. JPype abil saab Pythonis kasutada Java-spetsiifilisi teeke, luues hübriidrakendusi, mis ühendavad Java ja Python koodi. Erinevalt Jythonist saavutatakse Java integreerimine mitte JVM-i jaoks Python variandi loomise kaudu, vaid kahe virtuaalmasina tasandil, kasutades jagatud mälu. Pakutud lähenemine võimaldab mitte ainult head jõudlust saavutada, vaid annab ka juurdepääsu kõigile CPython ja Java teekidele. Projekti kood ainekood on litsentsitud Apache 2.0 all.
Peamised muudatused:
- C++ ja Java koodis esinevad erandid pakuvad nüüd erandi tekkimisel Pythonis erandi jälgimist. Seega ei ole enam vajalik stacktrace() kutsuda, et saada teavet erandi jälgimise kohta.
- Tagastamise kiirus väljakutsetel on kolmekordistunud.
- Andmeedastuskiirus on oluliselt (korduvalt) suurenenud
numpy mitmemõõtmeliste massiivide puhversüsteemides. Mitmemõõtmelised primitiivid edastavad ainult lugemiseks mõeldud koopiaid, mis on loodud JVM-is pidevas C järjekorras. - Kõik välja pakutud sisekomponendid on asendatud CPythoni teostustega ja sümbolid __javaclass__, __javavalue__ ning __javaproxy__
on eemaldatud. Kõik CPythoni klassi tüüpide alusel pärandatud tüübid on varustatud spetsiaalse Java slotiga. Kõik privaatseid tabelid on viidud CPythonisse. Java tüübid peavad nüüd pärinema JClassi meta klassist, mis kasutab tüüpide slote. Python alusk lastele ei luba juurdekasvu. Tüübid Object, Proxy, Exception, Number ja Array pärinevad otse CPythoni siseteostustest. - Tõrke jälgimine ja käitlemine on paranenud.
- Massiivide lõike (Array slices) töötlemine toimub nüüd vaatenäidetes, mis toetavad originaali tagasi kirjutamist, nagu numpy massiiv. Lõike jaoks on tagatud toe seadmine ja väärtuse saamine sammuga (slice(start, stop, step)).
- Massiividesse on implementeeritud toetuse "__reversed__".
- Java massiivides on tagatud API memoryview tugi ja eemaldatud numpy sõltuvus bufferi sisu edastamiseks.
- Numpy ei ole enam sõltuvus (extra) ning mälu edastamine numpy-sse on saadaval ilma numpy toega kompileerimiseta.
- JInterface on kujundatud meta-klassi kujul. Kasutage isinstance(cls, JInterface), et kontrollida liideseid.
- Vaikimisi impordid on täiendatud puuduva TLD-ga "mil", "net" ja "edu".
- Käivitamise ajal on parendatud veateateid UnsupportedClassVersion'i jaoks.
- java.util.Map annab nüüd KeyError'i, kui elementi ei leitud. Nullina vaatev väärtused tagastavad endiselt None, nagu oodatud. Kasutage get(), kui tühju võtmeid tuleb käsitleda kui None.
- Eemaldatud java.util.Collection, kuna see ülekoormab kummaliselt remove(Object) ja remove(int) List-ides. Kasutage Java meetodit remove(), et pääseda juurde algsele Java käitumisele, kuid tüübimuutmine on rangelt soovitatav ülekoormuse juhtimiseks.
- java.lang.IndexOutOfBoundsException nüüd saab püüda IndexError klassi abil elementidele java.util.List-is ligipääsemisel.
Allikas: opennet.ru
