Nûvekirina JPype 1.0.2, pirtûkxaneyek ji bo gihîştina dersên Java ji Python

Berdeste serbestberdana nû ya interlayer JPype 1.0.2, ku destûrê dide sepanên Python ku bi zimanê Java-yê bi tevahî xwedan pirtûkxaneyên polê bin. Bi JPype ji Python re, hûn dikarin pirtûkxaneyên Java-taybet bikar bînin da ku serîlêdanên hybrid ên ku koda Java û Python li hev dikin biafirînin. Berevajî Jython, entegrasyona bi Java-yê re ne bi afirandina guhertoyek Python-ê ji bo JVM-ê, lê bi pêwendiya di asta her du makîneyên virtual de ku bîranîna hevpar bikar tînin, pêk tê. Nêzîkatiya pêşniyar ne tenê dihêle ku meriv performansa baş bi dest bixe, lê di heman demê de gihîştina hemî pirtûkxaneyên CPython û Java jî peyda dike. Koda projeyê belav kirin ji hêla lîsansa di bin Apache 2.0.

Guhertinên sereke:

  • Cache li bangên rêbazê hate zêdekirin da ku ji çareseriya zêdebarkirinê dûr bixe, ku ev yek bandora performansê ya çareseriya rêbazê pir kêm dike, nemaze heke heman bargiraniyê gelek caran were gazî kirin, wekî di dema darvekirina lûkê de.
  • Ji 4 heta 100 carî, li gorî celebê daneyê, veguheztina navnîşan, tîpan û tamponan li rêzikên primitive Java-yê bileztir dibe. Veguheztin li şûna API-ya Rêzdanê, pêvajoyek xweşkirî ya tamponên bîranînê bikar tîne. Dema ku bi tamponek Python re rûbirû tê, tenê hêmana yekem ji bo veguheztinê tê kontrol kirin, ji ber ku ev tampon homojen in.
  • Karûbarên girtina pêvajoyê (di JPype 1.0.0 de hate pêkanîn, lê dema amadekirina guheztinê hate paşguh kirin). JPype naha gazî rûtîniya qutkirina JVM dike, ku hewl dide ku bi dilşewatî derkeve. Ev dibe sedema gelek guhertinên di tevgerê de. Mijarên ne-paşxane (bangên proxy) naha dikarin JVM vekirî bihêlin heya ku ew biqedin. Bangên proxy heta ku bang biqede dê sekinandinê pêvajoyê bikin, lê dê peyamek betalkirinê bistînin. Pelan naha bi rêkûpêk têne girtin û li ser dîskê têne rijandin heke xêzan wekî ku tê hêvî kirin îstîsnayê bi rê ve bibin. Çêlikên paqijkirina çavkaniyê û dawîker têne darve kirin. Dema ku thread têne avêtin, AtExit hook têne gotin. Bi navgîniya daemonê, dema ku JVM ji Python tê bikar anîn, tevlêbûna tîrêjê ya otomatîkî tête bicîh kirin. Koda xeletî ya ku nikaribe bi rêkûpêk paqijkirina mijaran bi rê ve bibe dê dema ku girtin were darve kirin dê bisekine. Belgeyên pêvek dikarin di manuala bikarhêner de werin dîtin.
  • Wrapper ji bo Throwable li şûna encama çaverêkirî ji bo Object paldanek wergirt, ku bû sedema veguhertinên xerîb ji çînên Python.
  • Di pergala importê de xeletiyên tîpan ên ku di encamê de xeletiya '»jname» nehat dîtin' hatin rastkirin.
  • Piştrast kir ku "^C" di KeyboardInterrupt de rast hate pêşve xistin.
  • Pirsgirêka sembolan ji Python 3.5.3 ve hatî rast kirin. PySlice_Unpack di serbestberdana patchê ya paşîn (3.5.4) de hate destnîşan kirin û divê neyê bikar anîn.
  • Bi numpy.linalg.inv re xeletiyek ku bû sedema qezayê rast kir. Pirsgirêk ji bo danûstendina tîrêjê di navbera JVM û hin çêjên bêkêmasî de hate şopandin. Çareseriya pêşniyar ev e ku berî destpêkirina JVM bangî numpy.linalg.inv bikin.

Source: opennet.ru

Add a comment