JPype 0.7.2, bibliotekos, skirtos pasiekti Java klases iš Python, leidimas

Galima tarpsluoksnio išleidimas JPype 0.7.2, kuri leidžia organizuoti visą Python programų prieigą prie Java klasės bibliotekų. Naudodami JPype iš Python, galite naudoti Java specifines bibliotekas, kad sukurtumėte hibridines programas, kurios derina Java ir Python kodus. Skirtingai nuo „Jython“, integracija su „Java“ pasiekiama ne kuriant „Python“ variantą JVM, o sąveikaujant abiejų virtualių mašinų lygiu, naudojant bendrą atmintį. Siūlomas metodas leidžia ne tik pasiekti gerą našumą, bet ir suteikia prieigą prie visų CPython ir Java bibliotekų. Projekto kodas išplatino licencijuota pagal Apache 2.0.

Pagrindiniai pakeitimai:

  • Išimtys, pateiktos C++ ir Java koduose, dabar suteikia išimčių krūvą, kai išimtis atsiranda Python kode. Taigi, norint gauti informacijos apie išimties krūvą, nebereikia skambinti stacktrace().
  • Skambučio grąžinimo greitis padidintas tris kartus.
  • Žymiai (didumo tvarka) padidėjo perdavimo greitis
    daugiamačių masyvų buferiai. Daugiamačiai primityvai perduoda tik skaitomas kopijas, sukurtas JVM viduje su gretimu C išdėstymu.

  • Visi atviri vidiniai elementai buvo pakeisti CPython diegimais ir simboliais __javaclass__, __javavalue__ ir __javaproxy__
    ištrintas. Skirtas Java lizdas buvo pridėtas prie visų CPython tipų, kurie paveldimi iš jpype klasės tipų. Visi privatūs stalai buvo perkelti į CPython. Java tipai dabar turi būti paveldimi iš JClass metaklasės, kuri naudoja tipo lizdus. „Python“ bazinių klasių mišiniai neleidžiami. Tipai yra objektas, tarpinis serveris, išimtis, skaičius ir masyvas ir paveldimi tiesiogiai iš CPython vidinių diegimų.

  • Patobulintas sekimas ir išimčių tvarkymas.
  • Masyvo skiltys dabar apdorojamos kaip rodiniai, palaikantys rašymą atgal į originalą, pvz., numbruotas masyvas. Masyvo pjaustymui palaikomas reikšmių nustatymas ir gavimas žingsniais (slice (pradžia, sustabdymas, žingsnis)).
  • Masyvai dabar palaiko „__reversed__“.
  • „Java“ masyvai dabar palaiko „Memoryview“ API ir pašalina priklausomybę nuo numpy, kad būtų perduodamas buferio turinys.
  • Numpy nebėra priklausomybė (papildoma), o atminties perkėlimas į numpy galimas be kompiliavimo naudojant numpy palaikymą.
  • JInterface sukurta kaip meta klasė. Norėdami patikrinti sąsajas, naudokite isinstance (cls, JInterface).
  • Prie numatytojo importavimo pridėti trūkstami ALD „mil“, „net“ ir „edu“.
  • Patobulinti klaidų pranešimai UnsupportedClassVersion paleidžiant.
  • java.util.Map dabar pateikia KeyError, jei elementas nerastas. Nulinės reikšmės vis tiek grąžina Nėra, kaip tikėtasi. Naudokite get(), jei norite laikyti tuščius klavišus kaip Nėra.
  • Pašalintas java.util.Collection, nes keistai perkraunamas tarp pašalinimo (objekto) ir pašalinimo (int) sąrašuose. Naudokite „Java remove()“ metodą, kad pasiektumėte savąją „Java“ elgseną, tačiau norint valdyti perkrovą primygtinai rekomenduojama naudoti tipo perdavimą.
  • java.lang.IndexOutOfBoundsException dabar gali būti užfiksuota naudojant IndexError išimties klasę, kai pasiekiami java.util.List elementai.

Šaltinis: opennet.ru

Добавить комментарий