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ā iekļautie izņēmumi tagad nodrošina izņēmumu kopu, ja Python kodā rodas izņēmums. Tādējādi, lai iegūtu informāciju par izņēmuma steku, vairs nav jāizsauc stacktrace().
  • Zvana atgriešanas ātrums ir trīskāršots.
  • Ievērojami (pēc lieluma kārtām) palielināts pārraides ātrums
    daudzdimensiju masīvu neskaitāmie buferi. Daudzdimensiju primitīvi nodod tikai lasāmas kopijas, kas izveidotas JVM iekšienē ar blakus esošo C izkārtojumu.

  • Visi atklātie iekšējie elementi ir aizstāti ar CPython implementācijām un simboliem __javaclass__, __javavalue__ un __javaproxy__
    dzēsts. Īpašs Java slots ir pievienots visiem CPython tipiem, kas mantoti no jpype klases veidiem. Visas privātās tabulas ir pārvietotas uz CPython. Java tipiem tagad ir jābūt mantotiem no JClass metaklases, kas izmanto tipa slotus. Python bāzes klašu maisījumi nav atļauti. Veidi ir objekts, starpniekserveris, izņēmums, numurs un masīvs, un tie tiek mantoti 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ā skati, kas atbalsta rakstīšanu atpakaļ uz oriģinālu, piemēram, masīvs, kas ir neparasts. Masīva sagriešanai tiek nodrošināts atbalsts vērtību iestatīšanai un izgūšanai pa soļiem (šķēlums (sākums, beigas, solis)).
  • Masīvi tagad atbalsta "__reversed__".
  • Java masīvi tagad atbalsta memoryview API un noņem atkarību no numpy, lai nodotu bufera saturu.
  • Numpy vairs nav atkarība (papildus), un atmiņas pārsūtīšana uz numpy ir pieejama bez kompilēšanas ar numpy atbalstu.
  • JInterface ir veidota kā meta klase. Izmantojiet isinstance (cls, JInterface), lai pārbaudītu saskarnes.
  • Trūkstošie TLD “mil”, “net” un “edu” pievienoti noklusējuma importēšanai.
  • Uzlaboti kļūdu ziņojumi UnsupportedClassVersion startēšanas laikā.
  • java.util.Map tagad izdod KeyError, ja elements netiek atrasts. Vērtības, kas ir nulles, joprojām atgriež Nav, kā paredzēts. Izmantojiet get(), ja vēlaties apstrādāt tukšas atslēgas kā Nav.
  • Noņemta java.util.Collection, jo tā dīvainā kārtā pārslogojas starp Remove(Object) un Remove(int) sarakstos. Izmantojiet Java remove() metodi, lai piekļūtu Java vietējai darbībai, taču pārslodzes kontrolei ļoti ieteicams izmantot tipa apraidi.
  • java.lang.IndexOutOfBoundsException tagad var tikt uztverts, izmantojot IndexError izņēmuma klasi, piekļūstot java.util.List elementiem.

Avots: opennet.ru

Pievieno komentāru