JPype 0.7.2, bibliotēkas piekļuvei Java klasēm no Python, izlaidums

Pieejams slāņa atbrÄ«voÅ”ana JPype 0.7.2, 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 izplata 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