Kutulutsidwa kwa JPype 1.0, laibulale yopezera makalasi a Java kuchokera ku Python

Ipezeka kumasulidwa kosanjikiza JPype 1.0, zomwe zimalola mapulogalamu a Python kukhala ndi mwayi wofikira ku malaibulale am'kalasi muchilankhulo cha Java. Ndi JPype yochokera ku Python, mutha kugwiritsa ntchito malaibulale apadera a Java kuti mupange mapulogalamu osakanizidwa omwe amaphatikiza ma code a Java ndi Python. Mosiyana ndi Jython, kuphatikiza ndi Java kumatheka osati popanga mtundu wa Python wa JVM, koma polumikizana pamlingo wa makina onse awiri omwe amagwiritsa ntchito kukumbukira kwawo. Njira yomwe ikuperekedwa imalola osati kungochita bwino, komanso imapereka mwayi wopezeka ku malaibulale onse a CPython ndi Java. Project kodi wogawidwa ndi zololedwa pansi pa Apache 2.0.

Zosintha zazikulu:

  • JChar imathandizidwa ngati mtundu wobwerera. Kuti zigwirizane, JChar amatenga cholowa kuchokera ku "str" ​​​​ndikugwiritsa ntchito kutembenuka kwathunthu kukhala "int". Chifukwa chake, imadutsa macheke mumakontrakitala. Koma izi zikutanthauza kuti sichikuganiziridwanso ngati mtundu wa manambala mu Python ndipo chifukwa chake isinstance(c, int) imayang'ana ku False, zomwe zimagwirizana ndi malamulo osinthira mtundu wa Java.
  • Wogwiritsa wadziwitsidwa kuti apange mtundu wa Java, Type@obj (@ ndi wogwiritsa ntchito Python wazinthu zamkati; Java ilibe).
  • Mawu owonjezera popanga ma Java arrays. Lembani[s1][s2][s3] pamagulu osasunthika, Type[:][:][:] pazotsatira zomwe zidzapangidwe pambuyo pake.
  • @FunctionalInterface imakupatsani mwayi wopanga ma Java functors kuchokera ku zinthu za Python ndi __call__.
  • Kuchotsa JIterator yochotsedwa, kugwiritsa ntchito JException ngati fakitale, get_default_jvm_path ndi jpype.reflect.
  • Mwachikhazikitso, zingwe za Java sizisinthidwa kukhala zingwe za Python.
  • Python yasiya "__int__", kotero kuti zosamveka pakati pa mitundu yonse ndi zoyandama zidzatulutsa TypeError.
  • Kugwiritsa ntchito JException kwatsitsidwa. Kuti mugwire zotsalira zonse, kapena onetsetsani kuti chinthucho ndi mtundu wa Java, gwiritsani ntchito java.lang.Throwable.
  • Zomwe zimayambitsa kuchotsera kwa Java tsopano zikuwonetsedwa muzithunzi za Python.
  • JString yachotsedwa ntchito. Kuti mupange chingwe cha Java, kapena kuti muwone ngati chinthucho ndi chamtundu wa Java, gwiritsani ntchito java.lang.String.
  • Njira za repr zasinthidwa m'makalasi a Java.
  • java.util.List imapanga makontrakitala a zosonkhanitsira.abc.Sequence and collections.abc.MutableSequence.
  • java.util.Collection imagwira ntchito yosonkhanitsa.abc.Collection.
  • Makalasi a Java ndi achinsinsi ndipo amaponya TypeError akafutukulidwa kuchokera ku Python.
  • Gwiritsani ntchito Control-C mosamala. Mabaibulo am'mbuyomu amawonongeka pomwe Java ikonza chizindikiro cha Control-C chifukwa amathetsa Java panthawi yoyimba. JPype tsopano iponya InterruptedException pobwerera kuchokera ku Java. Control-C sidzataya njira zazikulu za Java monga momwe zakhalira pano, popeza Java ilibe chida chapadera cha izi.

Kenaka, kumasulidwa kokonzekera 1.0.1 kunapangidwa, komwe kunawonjezera kusintha kuti athetse mavuto ndi kumasulidwa kwa Python 3.8.4. Python yasintha malingaliro okhudzana ndi kugwiritsa ntchito "__setattr__" pa "chinthu" ndi "mtundu", kuletsa kuti isagwiritsidwe ntchito kusintha makalasi otengedwa. Kuwona zolakwika kwaperekedwanso kuchokera ku njira ya "__setattr__", kotero mitundu yosiyanitsidwa mumacheke ena oyenera iyenera kusinthidwa moyenerera.

Source: opennet.ru

Kuwonjezera ndemanga