Serbestberdana JPype 1.0, pirtûkxane ji bo gihîştina dersên Java ji Python

Berdeste berdana qatê JPype 1.0, 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:

  • JChar wekî celebek vegerê tê piştgirî kirin. Ji bo hevahengiyê, JChar ji "str" ​​mîras digire û veguherînek nepenî ya "int" pêk tîne. Ji ber vê yekê, ew di peymanan de kontrol dike. Lê ev tê vê wateyê ku ew êdî di Python de wekî celebek hejmarî nayê hesibandin û ji ber vê yekê nimûne (c, int) bi False dinirxîne, ku bi qaîdeyên veguheztina celebê Java-yê re hevaheng e.
  • Operatorek hate destnîşan kirin ku celebek Java-yê biavêje, Type@obj (@ ji bo hilbera hundurîn operatorek Python e; Java yek tune).
  • Ji bo afirandina rêzikên Java-ê nîşanek zêde kir. Ji bo rêzikên mezinahiya sabît [s1][s2][s3], ji bo rêzikên ku dê paşê werin çêkirin Binivîsin[:][:][:].
  • @FunctionalInterface dihêle hûn bi __call__ ji tiştên Python fonksiyonên Java-yê biafirînin.
  • JIteratorê kevinbûyî rakirin, JException wekî kargehek bikar anîn, get_default_jvm_path û jpype.reflect.
  • Ji hêla xwerû, rêzikên Java-yê veguherî rêzikên Python.
  • Python "__int__" paşxistiye, ji ber vê yekê avêtinên nepenî yên di navbera celebên hejmar û xala herikîn de dê TypeError çêbike.
  • Bikaranîna JException hate betal kirin. Ji bo girtina hemî îstîsnayan, an jî kontrol bikin ku tiştek celebek îstîsna Java ye, java.lang.Throwable bikar bînin.
  • Sedemên berbiçav ên îstîsnayên Java naha di çarçoveyên stackê yên Python de têne xuyang kirin.
  • JString hate betal kirin. Ji bo afirandina rêzika Java-yê, an jî ji bo kontrolkirina ku tiştek ji tîpek Java-yê ye, java.lang.String bikar bînin.
  • Rêbazên Repr di dersên Java de hatine nûve kirin.
  • java.util.List peymanên ji bo collections.abc.Sequence û collections.abc.MutableSequence pêk tîne.
  • java.util.Collection peymana ji bo collections.abc.Collection pêk tîne.
  • Dersên Java taybet in û dema ku ji Python dirêj bibin dê TypeError bavêjin.
  • Control-C-ê bi baldarî tevbigerin. Guhertoyên berê dema ku Java sînyalek Control-C pêvajoyê dike têk diçin ji ber ku ew ê Java-yê di dema bangê de biqedînin. JPype dê naha dema ku ji Java vedigere InterruptedException bavêje. Control-C dê prosedurên Java-ya mezin ên ku niha têne bicîh kirin dernekeve, ji ber ku Java ji bo vê amûrek taybetî tune.

Dûv re, serbestberdanek rastker 1.0.1 hate afirandin, ku guheztinan zêde kir da ku li ser pirsgirêkên bi berdana Python 3.8.4 bixebite. Python di derbarê karanîna "__setattr__" ya ji bo "objekt" û "type" de mantiq guhertiye, nehiştiye ku ew ji bo guheztina çînên jêderkirî were bikar anîn. Kontrolkirina xeletiyê jî ji rêbaza "__setattr__" hatiye veguheztin, ji ber vê yekê celebên îstîsnayê di hin kontrolên têra xwe de divê li gorî wê werin nûve kirin.

Source: opennet.ru

Add a comment