slāņa izlaišana , kas ļauj Python lietotnēm nodrošināt pilnu piekļuvi Java valodas bibliotēku klasēm. Izmantojot JPype, Python var izmantot Java specifiskās bibliotēkas, izveidojot hibrīdas lietotnes, kas apvieno gan Java, gan Python kodu. Atšķirībā no Jython, integrācija ar Java tiek panākta nevis, izveidojot Python versiju JVM, bet gan, sadarbojoties abām virtuālajām mašīnām, izmantojot kopīgu atmiņu. Ieteiktais pieejas veids ļauj ne tikai sasniegt labu veiktspēju, bet arī nodrošina piekļuvi visām CPython un Java bibliotēkām. Projekta kods ir licencēts saskaņā ar Apache 2.0.
Galvenās izmaiņas:
- Izņēmumi, kas izmesti C++ un Java kodā, tagad sniedz izņēmumu steka informāciju, kad rodas izņēmums Python kodā. Tādējādi, lai iegūtu informāciju par izņēmumu steku, vairs nav nepieciešams izsaukt stacktrace().
- Trīs reizes palielināts atgriešanas ātrums izsaukumos.
- Ievērojami (vairākas reizes) palielināts pārraides ātrums
numpy daudzdimensionālo masīvu buferos. Daudzdimensionālie primitīvi pārsūta tikai lasāmas kopijas, kas izveidotas JVM ar nepārtrauktu C izkārtojumu. - Visi iekšējie komponenti ir aizvietoti ar CPython īstenojumiem, un simboli __javaclass__, __javavalue__ un __javaproxy__
ir izņemti. Visi CPython klasē mantojošie tipi saņēmuši speciālu Java slotu. Visas privātās tabulas ir pārceltas uz CPython. Java tipi tagad jāmanto no metaklases JClass, kas izmanto tipu slotus. Python bāzes klasēm piejaukumi nav atļauti. Objektu, Proxy, Exception, Number un Array tipi tieši mantoti no CPython iekšējām īstenojumiem. - Uzlabota izsekošana un izņēmumu apstrāde.
- Masīvu griezumi tagad tiek apstrādāti kā attēlojumi, kas atbalsta atpakaļrakstīšanu oriģinālā, piemēram, numpy masīvu. Griezumiem masīvos nodrošināta atbalsts vērtību iestatīšanai un iegūšanai ar soli (slice(start, stop, step)).
- Masīvos ir ieviesta atbalsts «__reversed__».
- Java masīvos nodrošināts API memoryview atbalsts un noņemta numpy atkarība bufera satura pārsūtīšanai.
- Numpy tagad nav atkarība (extra) un atmiņas pārsūtīšana uz numpy pieejama bez kompilācijas ar numpy atbalstu.
- JInterface noformēts kā metaklase. Lietojiet isinstance(cls, JInterface), lai pārbaudītu uz interfeisiem.
- Piedāvātajiem importiem ir pievienoti trūkstošie TLD «mil», «net» un «edu».
- Palaides laikā uzlaboti kļūdu ziņojumi UnsupportedClassVersion.
- java.util.Map tagad dod KeyError, ja elements nav atrasts. Vērtības, kas ir null, joprojām atgriež None, kā gaidīts. Izmantojiet get(), ja tukšus atslēgas ir jāpārvalda kā None.
- Noņemts java.util.Collection, jo tas dīvaini tiek pārpārslogots starp remove(Object) un remove(int) List-ā. Izmantojiet Java metodi remove(), lai piekļūtu oriģinālās Java uzvedības, bet tipa konversija ir stingri ieteicama pārslodzes pārvaldībai.
- java.lang.IndexOutOfBoundsException tagad var tikt noķerts, izmantojot IndexError izņēmumu klasi, piekļūstot elementiem java.util.List.
Avots: opennet.lv
