Rilaxx ta' JPype 0.7.2, libreriji għall-aċċess għall-klassijiet Java minn Python

Disponibbli rilaxx saff JPype 0.7.2, li jippermettilek torganizza aċċess sħiħ tal-applikazzjonijiet Python għal libreriji tal-klassi Java. B'JPype minn Python, tista' tuża libreriji speċifiċi għal Java biex toħloq applikazzjonijiet ibridi li jgħaqqdu l-kodiċi Java u Python. B'differenza minn Jython, l-integrazzjoni ma 'Java tinkiseb mhux permezz tal-ħolqien ta' varjant Python għall-JVM, iżda permezz ta 'interazzjoni fil-livell taż-żewġ magni virtwali li jużaw memorja kondiviża. L-approċċ propost jippermetti mhux biss li jinkiseb prestazzjoni tajba, iżda jipprovdi wkoll aċċess għal-libreriji kollha CPython u Java. Kodiċi tal-proġett imqassma minn liċenzjat taħt Apache 2.0.

Bidliet ewlenin:

  • Eċċezzjonijiet mitfugħa fil-kodiċi C++ u Java issa jipprovdu munzell ta 'eċċezzjoni meta sseħħ eċċezzjoni fil-kodiċi Python. Għalhekk, biex tikseb informazzjoni dwar il-munzell tal-eċċezzjoni, m'għadx għandek bżonn issejjaħ stacktrace().
  • Il-veloċità tar-ritorn tas-sejħa ġiet ittriplikata.
  • B'mod sinifikanti (b'ordnijiet ta 'kobor) żdiedet il-veloċità tat-trażmissjoni fi
    buffers numpy ta' arrays multidimensjonali. Il-primittivi multidimensjonali jgħaddu kopji li jinqraw biss maħluqa ġewwa l-JVM b'tqassim C kontigwu.

  • L-interni kollha esposti ġew sostitwiti b'implimentazzjonijiet CPython, u s-simboli __javaclass__, __javavalue__ u __javaproxy__
    imħassra. Ġie miżjud slot Java dedikat mat-tipi kollha CPython li jirtu mit-tipi tal-klassi jpype. It-tabelli privati ​​kollha ġew imċaqalqa għal CPython. It-tipi Java issa jridu jirtu mill-metaklassi JClass, li tuża slots tat-tip. Mixins għal klassijiet bażi Python mhumiex permessi. It-tipi huma Oġġett, Prokura, Eċċezzjoni, Numru u Array u jirtu direttament mill-implimentazzjonijiet interni ta 'CPython.

  • Traċċar imtejjeb u ġestjoni tal-eċċezzjonijiet.
  • Array slices issa huma pproċessati bħala fehmiet li jappoġġjaw il-kitba lura għall-oriġinal, bħal numpy array. Għat-tqattigħ tal-firxa, huwa pprovdut appoġġ għall-issettjar u l-irkupru tal-valuri f'passi (porzjon (bidu, waqfien, pass)).
  • Arrays issa jappoġġjaw "__reversed__".
  • Arrays Java issa jappoġġaw l-API memoryview u neħħi d-dipendenza fuq numpy biex jgħaddi l-kontenut tal-buffer.
  • Numpy m'għadux dipendenza (extra) u t-trasferiment tal-memorja għal numpy huwa disponibbli mingħajr kumpilazzjoni b'appoġġ numpy.
  • JInterface hija mfassla bħala klassi meta. Uża isinstance(cls, JInterface) biex tiċċekkja għal interfaces.
  • Żieda TLDs nieqsa "mil", "net" u "edu" mal-importazzjonijiet default.
  • Messaġġi ta' żball imtejba għal UnsupportedClassVersion waqt l-istartjar.
  • java.util.Map issa tarmi KeyError jekk l-element ma jinstabx. Valuri li huma nulli għadhom ma jirritornaw Xejn kif mistenni. Uża get() jekk trid tittratta ċwievet vojta bħala Xejn.
  • Neħħa java.util.Collection peress li stramba tgħabbi żżejjed bejn remove(Object) u remove(int) fuq Listi. Uża l-metodu Java remove() biex taċċessa l-imġieba nattiva tal-Java, iżda l-ikkastjar tat-tip huwa rakkomandat ħafna għall-kontroll ta 'tagħbija żejda.
  • java.lang.IndexOutOfBoundsException issa tista' tinqabad billi tuża l-klassi ta' eċċezzjoni IndexError meta taċċessa l-elementi java.util.List.

Sors: opennet.ru

Żid kumment