Liberasyon JPype 0.7.2, bibliyotèk pou jwenn aksè nan klas Java nan Python

Disponib lage kouch JPype 0.7.2, ki pèmèt aplikasyon Python yo gen aksè konplè nan bibliyotèk klas nan lang Java. Avèk JPype ki soti nan Python, ou ka itilize bibliyotèk espesifik Java pou kreye aplikasyon ibrid ki konbine kòd Java ak Python. Kontrèman ak Jython, entegrasyon ak Java reyalize pa atravè kreye yon variant Python pou JVM a, men atravè entèraksyon nan nivo tou de machin vityèl lè l sèvi avèk memwa pataje. Apwòch yo pwopoze a pèmèt non sèlman reyalize bon pèfòmans, men tou bay aksè a tout bibliyotèk CPython ak Java. Kòd pwojè distribiye pa ki gen lisans anba Apache 2.0.

Chanjman prensipal yo:

  • Eksepsyon yo jete nan kòd C++ ak Java kounye a bay yon pil eksepsyon lè yon eksepsyon rive nan kòd Python. Kidonk, pou w jwenn enfòmasyon sou pil eksepsyon an, ou pa bezwen rele stacktrace().
  • Vitès retounen apèl la te triple.
  • Siyifikativman (pa lòd nan grandè) ogmante vitès transmisyon nan
    numpy tanpon nan etalaj miltidimansyon. Primitif miltidimansyon yo pase kopi lekti sèlman ki te kreye andedan JVM la ak yon layout C vwazen.

  • Tout entèn ekspoze yo te ranplase ak aplikasyon CPython, ak senbòl __javaclass__, __javavalue__ ak __javaproxy__
    efase. Yon plas Java dedye te ajoute nan tout kalite CPython ki eritye nan kalite klas jpype. Tout tab prive yo te deplase nan CPython. Kalite Java yo dwe kounye a eritye de metaklas JClass la, ki sèvi ak fant tip. Mixins pou klas baz Python yo pa pèmèt. Kalite yo se objè, prokurasyon, eksepsyon, nimewo ak etalaj epi eritye dirèkteman nan aplikasyon entèn CPython yo.

  • Amelyore trase ak manyen eksepsyon.
  • Tranch etalaj yo kounye a trete kòm opinyon ki sipòte ekri tounen nan orijinal la, tankou yon etalaj numpy. Pou tranche etalaj, yo bay sipò pou mete ak rekipere valè nan etap (tranch (kòmanse, sispann, etap)).
  • Etalaj kounye a sipòte "__ranvèse__".
  • Etalaj Java kounye a sipòte API memoryview a epi retire depandans sou numpy pou pase kontni tanpon yo.
  • Numpy se pa yon depandans ankò (anplis) ak transfè memwa nan numpy ki disponib san yo pa konpile ak sipò numpy.
  • JInterface fèt kòm yon klas meta. Sèvi ak isinstance (cls, JInterface) pou tcheke interfaces.
  • Te ajoute TLD ki manke "mil", "net" ak "edu" nan enpòtasyon default.
  • Amelyore mesaj erè pou UnsupportedClassVersion pandan demaraj.
  • java.util.Map kounye a voye yon KeyError si eleman an pa jwenn. Valè ki nil toujou retounen Okenn jan yo espere. Sèvi ak get() si ou vle trete kle vid kòm None.
  • Retire java.util.Collection kòm li etranj surcharge ant retire (Objè) ak retire (int) sou Lis. Sèvi ak Java remove() metòd pou jwenn aksè nan konpòtman Java natif natal, men yo rekòmande pou depoze kalite pou kontwòl surcharge.
  • Kounye a ka jwenn java.lang.IndexOutOfBoundsException lè l sèvi avèk klas eksepsyon IndexError lè w ap jwenn aksè nan eleman java.util.List.

Sous: opennet.ru

Add nouvo kòmantè