uus versioon vahekihist , mis vĂ”imaldab Python rakenduste tĂ€isĂŒhendust Java keele klasside teekidega. JPype abil saab Pythonis kasutada Java spetsiifilisi teeke, luues hĂŒbriidrakendusi, mis ĂŒhendavad Java ja Python koodi. Erinevalt Jython'ist saavutatakse Java integreerimine mitte JVM jaoks Python variandi loomise kaudu, vaid mĂ”lema virtuaalmasina vahelise koostöö kaudu, kasutades jagatud mĂ€lu. Pakutud lĂ€henemine vĂ”imaldab saavutada head jĂ”udlust ja pakub juurdepÀÀsu kĂ”ikidele CPython ja Java teekidele. Projekti kood lisensiga Apache 2.0.
Peamised muudatused:
- Meetodite kutsumisse on lisatud vahemĂ€lu, mis aitab vĂ€ltida ĂŒlekoormuste lahendamist, vĂ€hendades oluliselt meetodite lahendamise mĂ”ju jĂ”udlusele, eriti kui sama ĂŒlekoormust kutsutakse korduvalt, nĂ€iteks tsĂŒklite tĂ€itmisel.
- Loendite, tupletide ja Java primitiivmassidesse andmete edastamine on kiiruselt 4 kuni 100 korda kiirem, sĂ”ltuvalt andmetest. Muundamine kasutab mĂ€lu optimeeritud vahemike töötlemist, mitte Sequence API-d. Kui Python'i vahemik on kohatud, kontrollitakse muundamiseks ainult esimest elementi, kuna need andmevahemikud on ĂŒhtsed.
- Shutdown operatsioonide töötlemine (rakendatud juba JPype 1.0.0-s, kuid jĂ€i muudatuste loendis tegemata). JPype kutsub nĂŒĂŒd JVM shutdown protseduuri, mis pĂŒĂŒab korralikult vĂ€lja minna. See toob kaasa mitmeid kĂ€itumise muudatusi. Taustaniidid (proxy kutsed) vĂ”ivad nĂŒĂŒd JVM-i avatud hoida, kuni need on lĂ”petatud. Proxy kutsed töötlevad shutdown'i kuni kutsumise lĂ”petamiseni, kuid saavad katkestamise teate. Failid suletakse nĂŒĂŒd Ă”igesti ja andmed kirjutatakse kettale (flush), kui niidid töötlevad erandeid Ă”igesti. Tehakse ressurside puhastamise hooks ja finalizeerijad. Niite loomisel kutsutakse AtExit hooks. Taustprotsesside kaudu teostatakse automaatne niitide liitmine, kui JVM-i kasutatakse Pythonist. Vigane kood, mis ei suuda niidi puhastamist Ă”igesti töödelda, vĂ”ib tĂ”rkuda shutdown'i tĂ€itmisel. TĂ€iendav dokumentatsioon on kasutusjuhendis.
- Throwable'i pakend sai Object'i pakendi, mis viis ootamatute kohaletoimetamisteni Python'i klassidest.
- Impeerimise sĂŒsteemis parandus kirjavigu, mis viis '»jname» not found' vea esitlemiseni.
- Tagatud Ôige edastamine 'KeyboardInterrupt' puhul.
- Probleem Python 3.5.3 sĂŒmbolitega on lahendatud. PySlice_Unpack viidati hilisema patĆĄirelease'iga (3.5.4) ja seda ei pidanud kasutama.
- Viga numpy.linalg.inv'i osas, mis viis kokkuvarisemiseni, on lahendatud. Probleem tuvastati JVM'i ja mÔnede numpy variatsioonide vahelise lÔimevahe tÔttu. Soovitatud lahendus on kutsuda numpy.linalg.inv vÀlja enne JVM'i kÀivitamist.
Allikas: opennet.ru
