Ukukhishwa kwe-JPype 1.0, umtapo wolwazi wokufinyelela amakilasi e-Java ku-Python

Iyatholakala ukukhululwa kwesendlalelo I-JPype 1.0, okuvumela izinhlelo zokusebenza zePython ukuthi zibe nokufinyelela okugcwele emitapweni yolwazi yekilasi ngolimi lwe-Java. Nge-JPype evela ku-Python, ungasebenzisa imitapo yolwazi eqondene ne-Java ukuze udale izinhlelo zokusebenza eziyingxube ezihlanganisa ikhodi ye-Java ne-Python. Ngokungafani ne-Jython, ukuhlanganiswa ne-Java akufinyelelwa ngokwakha okuhlukile kwe-Python ye-JVM, kodwa ngokusebenzisana ezingeni layo yomibili imishini ebonakalayo esebenzisa inkumbulo eyabiwe. Indlela ehlongozwayo ayivumeli kuphela ukufeza ukusebenza kahle, kodwa futhi inikeza ukufinyelela kuyo yonke imitapo yolwazi ye-CPython ne-Java. Ikhodi yephrojekthi isatshalaliswa ngu ilayisensi ngaphansi kwe-Apache 2.0.

Izinguquko eziyinhloko:

  • I-JChar isekelwa njengohlobo lokubuyisela. Ngokuhambisana, i-JChar ithola ifa kusuka ku-"str" ​​​​futhi isebenzisa ukuguqulwa okucacile kuya ku-"int". Ngakho-ke, idlulisa amasheke ezinkontileka. Kodwa lokhu kusho ukuthi ayisabhekwa njengohlobo lwezinombolo ku-Python ngakho-ke i-isinstance(c, int) ihlola kuya ku-False, ehambisana nemithetho yokuguqulwa kohlobo lwe-Java.
  • Umsebenzisi wethuliwe ukuze asakaze uhlobo lwe-Java, Type@obj (@ iyi-opharetha ye-Python yomkhiqizo wangaphakathi; i-Java ayinayo).
  • Isaziso esingeziwe sokudala amalungu afanayo e-Java. Uhlobo[s1][s2][s3] losayizi olungisiwe, Uhlobo[:][:][:] lwamalungu afanayo azodalwa kamuva.
  • I-@FunctionalInterface ikuvumela ukuthi udale imisebenzi ye-Java ezintweni ze-Python nge-__call__.
  • Kukhishwe i-JIterator eyehlisiwe, ukusetshenziswa kwe-JException njengemboni, get_default_jvm_path kanye ne-jpype.reflect.
  • Ngokuzenzakalelayo, izintambo ze-Java aziguqulwa zibe izintambo zePython.
  • I-Python ihoxise okuthi "__int__", ngakho-ke ukusakaza okungacacile phakathi kwenombolo ephelele kanye nezinhlobo zamaphoyinti antantayo kuzokhiqiza i-TypeError.
  • Ukusetshenziswa kwe-JException kuhoxisiwe. Ukuze ubambe konke okuhlukile, noma uhlole ukuthi into iwuhlobo oluhlukile lwe-Java, sebenzisa i-java.lang.Throwable.
  • Izimbangela ezikhulayo zokungatholakali kwe-Java manje sezibonakala kuzimele zesitaki ze-Python.
  • I-JString yehlisiwe. Ukwakha iyunithi yezinhlamvu ye-Java, noma ukuhlola ukuthi into iwuchungechunge lwe-Java, sebenzisa i-java.lang.String.
  • Izindlela ze-Repr zibuyekeziwe kumakilasi e-Java.
  • I-java.util.List yenza izinkontileka zokuqoqa.abc.Ukulandelana kanye nokuqoqwa.abc.MutableSequence.
  • I-java.util.Collection isebenzisa inkontileka yokuqoqwa.abc.Collection.
  • Amakilasi e-Java ayimfihlo futhi azophonsa i-TypeError uma inwetshiwe isuka kuPython.
  • Bamba i-Control-C ngokucophelela. Izinguqulo zangaphambilini ziyaphahlazeka lapho i-Java icubungula isignali ye-Control-C ngoba izonqamula i-Java phakathi nocingo. I-JPype manje izophonsa i-InterruptedException lapho ibuya isuka ku-Java. I-Control-C ngeke ilahle izinqubo ezinkulu ze-Java njengoba zisetshenziswa njengamanje, ngoba i-Java ayinalo ithuluzi elikhethekile lalokhu.

Okulandelayo, ukukhululwa kokulungisa okungu-1.0.1 kwadalwa, okwengeze izinguquko ukuze kusetshenzwe ngezinkinga ngokukhululwa kwePython 3.8.4. I-Python iguqule ukucabanga okuphathelene nokusetshenziswa kwe-"__setattr__" kokuthi "into" kanye "nohlobo", ivimbele ukuthi isetshenziselwe ukulungisa amakilasi atholiwe. Ukuhlola iphutha kuphinde kwathunyelwa endleleni ethi "__setattr__", ngakho-ke izinhlobo ezihlukile kokunye ukuhlola kokufaneleka kufanele zibuyekezwe ngokufanele.

Source: opennet.ru

Engeza amazwana