Kutolewa kwa JPype 1.0, maktaba za kupata madarasa ya Java kutoka Python

Inapatikana kutolewa kwa safu JPype 1.0, ambayo inaruhusu programu za Python kupata ufikiaji kamili wa maktaba za darasa katika lugha ya Java. Ukiwa na JPype kutoka Python, unaweza kutumia maktaba mahususi ya Java kuunda programu mseto zinazochanganya msimbo wa Java na Python. Tofauti na Jython, ujumuishaji na Java haupatikani kwa kuunda lahaja ya Python kwa JVM, lakini kupitia mwingiliano katika kiwango cha mashine zote mbili kwa kutumia kumbukumbu iliyoshirikiwa. Njia iliyopendekezwa inaruhusu sio tu kufikia utendaji mzuri, lakini pia hutoa upatikanaji wa maktaba yote ya CPython na Java. Msimbo wa mradi kusambazwa na leseni chini ya Apache 2.0.

Mabadiliko kuu:

  • JChar inatumika kama aina ya kurudi. Kwa utangamano, JChar hurithi kutoka "str" ​​​​na kutekeleza ubadilishaji kamili hadi "int". Kwa hiyo, hupita hundi katika mikataba. Lakini hii inamaanisha kuwa haizingatiwi tena kuwa aina ya nambari katika Python na kwa hivyo isinstance(c, int) inatathmini kuwa Uongo, ambayo inaambatana na sheria za ubadilishaji wa aina ya Java.
  • Opereta ametambulishwa ili kutuma aina ya Java, Type@obj (@ ni opereta wa Python kwa bidhaa ya ndani; Java haina moja).
  • Aliongeza nukuu ya kuunda safu za Java. Andika[s1][s2][s3] kwa safu za ukubwa usiobadilika, Aina[:][:][:] kwa safu zitakazoundwa baadaye.
  • @FunctionalInterface hukuruhusu kuunda viboreshaji vya Java kutoka kwa vitu vya Python na __call__.
  • Imeondoa JIterator iliyoacha kutumika, matumizi ya JException kama kiwanda, get_default_jvm_path na jpype.reflect.
  • Kwa msingi, kamba za Java hazibadilishwa kuwa kamba za Python.
  • Python imeacha kutumia "__int__", kwa hivyo uwasilishaji kamili kati ya nambari kamili na aina zinazoelea zitatoa TypeError.
  • Matumizi ya JException yameacha kutumika. Ili kupata vighairi vyote, au kuangalia kuwa kitu ni cha aina ya Java, tumia java.lang.Throwable.
  • Sababu zinazosababisha kutokuwepo kwa Java sasa zinaonyeshwa kwenye fremu za rafu za Python.
  • JString imeacha kutumika. Ili kuunda mfuatano wa Java, au kuangalia kuwa kitu ni cha aina ya mfuatano wa Java, tumia java.lang.String.
  • Njia za repr zimesasishwa katika madarasa ya Java.
  • java.util.List hutekeleza kandarasi za makusanyo.abc.Mfuatano na makusanyo.abc.MutableSequence.
  • java.util.Collection hutekeleza mkataba wa makusanyo.abc.Collection.
  • Madarasa ya Java ni ya kibinafsi na yatatupa TypeError ikipanuliwa kutoka Python.
  • Shikilia Control-C kwa uangalifu. Matoleo ya awali huacha kufanya kazi wakati Java huchakata mawimbi ya Control-C kwa sababu yatasitisha Java wakati wa simu. JPype sasa itatupa InterruptedException wakati wa kurudi kutoka Java. Control-C haitatupa taratibu kubwa za Java kama inavyotekelezwa sasa, kwani Java haina zana maalum ya hii.

Ifuatayo, toleo la kurekebisha 1.0.1 liliundwa, ambalo liliongeza mabadiliko ili kusuluhisha shida na toleo la Python 3.8.4. Python amebadilisha mantiki kuhusu matumizi ya "__setattr__" kwa "kitu" na "aina", na kuizuia kutumiwa kurekebisha madarasa yanayotokana. Kuangalia hitilafu pia kumekabidhiwa kutoka kwa mbinu ya "__setattr__", kwa hivyo aina zisizofuata kanuni katika baadhi ya ukaguzi wa utoshelevu zinapaswa kusasishwa ipasavyo.

Chanzo: opennet.ru

Kuongeza maoni