slÄÅa atbrÄ«voÅ”ana , kas ļauj Python lietojumprogrammÄm pilnÄ«bÄ piekļūt klaÅ”u bibliotÄkÄm Java valodÄ. Izmantojot Python JPype, varat izmantot Java specifiskas bibliotÄkas, lai izveidotu hibrÄ«da lietojumprogrammas, kas apvieno Java un Python kodu. AtŔķirÄ«bÄ no Jython, integrÄcija ar Java tiek panÄkta, nevis izveidojot Python variantu JVM, bet gan mijiedarbojoties abu virtuÄlo maŔīnu lÄ«menÄ«, izmantojot koplietojamo atmiÅu. PiedÄvÄtÄ pieeja ļauj ne tikai sasniegt labu veiktspÄju, bet arÄ« nodroÅ”ina piekļuvi visÄm CPython un Java bibliotÄkÄm. Projekta kods licencÄts saskaÅÄ ar Apache 2.0.
GalvenÄs izmaiÅas:
- C++ un Java kodÄ izmestie izÅÄmumi tagad nodroÅ”ina izÅÄmumu steku, kad Python kodÄ rodas izÅÄmums. Tas nozÄ«mÄ, ka vairs nav jÄizsauc stacktrace(), lai iegÅ«tu izÅÄmumu steka informÄciju.
- Zvanu atgrieÅ”anas Ätrums ir trÄ«skÄrÅ”ojies.
- PÄrraides Ätrums ir ievÄrojami (par vairÄkiem lielumiem) palielinÄjies.
NumPy daudzdimensiju masÄ«vu buferi. Daudzdimensiju primitÄ«viem tiek nodotas tikai lasÄmas kopijas, kas izveidotas JVM iekÅ”ienÄ ar nepÄrtrauktu C izkÄrtojumu. - Visas atklÄtÄs iekÅ”ÄjÄs komponentes ir aizstÄtas ar CPython implementÄcijÄm, un simboli __javaclass__, __javavalue__ un __javaproxy__
NoÅemts. Visiem CPython tipiem, kas manto no jpype klases tipiem, ir pievienota Ä«paÅ”a Java slota. Visas privÄtÄs tabulas ir migrÄtas uz CPython. Java tipiem tagad ir jÄpÄrmanto no JClass metaklases, kas izmanto tipu slotus. Python bÄzes klaÅ”u miksÄ«ni nav atļauti. Objekta, Proxy, Exception, Number un Array tipi pÄrmanto tieÅ”i no CPython iekÅ”ÄjÄm implementÄcijÄm. - Uzlabota izsekoÅ”ana un izÅÄmumu apstrÄde.
- MasÄ«va ŔķÄles tagad tiek apstrÄdÄtas kÄ reprezentÄcijas, kas atbalsta ierakstīŔanu atpakaļ uz oriÄ£inÄlu, piemÄram, NumPy masÄ«vs. MasÄ«va ŔķÄles tagad atbalsta vÄrtÄ«bu iestatīŔanu un iegūŔanu ar pieaugumu (slice(start, stop, step)).
- Masīvi tagad atbalsta "__reversed__".
- Java masÄ«vi tagad atbalsta memoryview API un novÄrÅ” atkarÄ«bu no numpy bufera satura nodoÅ”anai.
- Numpy vairs nav papildu atkarÄ«ba, un atmiÅas pÄrsÅ«tīŔana uz numpy ir pieejama bez kompilÄÅ”anas ar numpy atbalstu.
- JInterface ir ieviesta kÄ metaklase. SaskarÅu pÄrbaudei izmantojiet isinstance(cls, JInterface).
- NoklusÄjuma importam ir pievienoti trÅ«kstoÅ”ie augstÄkÄ lÄ«meÅa domÄni "mil", "net" un "edu".
- Uzlaboti kļūdu ziÅojumi par UnsupportedClassVersion startÄÅ”anas laikÄ.
- java.util.Map tagad met KeyError, ja elements netiek atrasts. Null vÄrtÄ«bas joprojÄm atgriež None, kÄ paredzÄts. Izmantojiet get(), ja vÄlaties tukÅ”as atslÄgas apstrÄdÄt kÄ None.
- NoÅemts java.util.Collection, jo tas dÄ«vaini pÄrslogo sarakstus starp remove(Object) un remove(int). Izmantojiet Java remove() metodi, lai piekļūtu vietÄjai Java darbÄ«bai, taÄu pÄrslodzes pÄrvaldÄ«bai stingri ieteicams izmantot translÄciju.
- java.lang.IndexOutOfBoundsException tagad var notvert, izmantojot klasi IndexError izÅÄmumiem, piekļūstot java.util.List elementiem.
Avots: opennet.ru
