катмар чыгаруу , бул сизге Python тиркемелеринин Java класстарынын китепканаларына толук кирүү мүмкүнчүлүгүн уюштурууга мүмкүндүк берет. Python'дон JPype менен Java жана Python кодун айкалыштырган гибриддик тиркемелерди түзүү үчүн Java үчүн атайын китепканаларды колдоно аласыз. Jythonдон айырмаланып, Java менен интеграция JVM үчүн Python вариантын түзүү аркылуу эмес, жалпы эстутумду колдонгон эки виртуалдык машинанын деңгээлинде өз ара аракеттенүү аркылуу ишке ашат. Сунушталган ыкма жакшы көрсөткүчтөргө жетишүүгө гана мүмкүндүк бербестен, бардык CPython жана Java китепканаларына кирүү мүмкүнчүлүгүн берет. Долбоор коду Apache 2.0 астында лицензияланган.
Негизги өзгөрүүлөр:
- JChar кайтаруу түрү катары колдоого алынат. Шайкештик үчүн, JChar "str" дан мурастап, "int" дегенге кыйыр түрдө өзгөртүүнү ишке ашырат. Ошондуктан контракттарда текшерүүдөн өтөт. Бирок бул Pythonдо ал мындан ары сандык тип катары каралбай калгандыктан isinstance(c, int) False деп баалайт, бул Java түрүн өзгөртүү эрежелерине шайкеш келет.
- Java түрүн чыгаруу үчүн оператор киргизилген, Type@obj (@ ички продукт үчүн Python оператору; Javaда андай эмес).
- Java массивдерин түзүү үчүн кошумча белгилер. Белгиленген өлчөмдөгү массивдер үчүн [s1][s2][s3] түрүн, кийинчерээк түзүлө турган массивдер үчүн [:][:][:] түрүн жазыңыз.
- @FunctionalInterface __call__ менен Python объекттеринен Java функторлорун түзүүгө мүмкүндүк берет.
- Эскирген JIterator алынып салынды, JException фабрика катары колдонулушу, get_default_jvm_path жана jpype.reflect.
- Демейки боюнча, Java саптары Python саптарына айландырылбайт.
- Python "__int__" эскирген, андыктан бүтүн жана калкыма чекиттүү типтердин ортосундагы имплициттүү чыгаруулар TypeError чыгарат.
- JException колдонуу эскирген. Бардык өзгөчөлүктөрдү кармоо же объекттин Java өзгөчө түрү экенин текшерүү үчүн java.lang.Throwable колдонуңуз.
- Java өзгөчөлүктөрүнүн каскаддык себептери азыр Python стек алкактарында чагылдырылган.
- JString жокко чыгарылган. Java сабын түзүү же объекттин Java сап тибинде экенин текшерүү үчүн java.lang.String колдонуңуз.
- Repr ыкмалары Java класстарында жаңыртылган.
- java.util.List collections.abc.Sequence жана collections.abc.MutableSequence үчүн келишимдерди аткарат.
- java.util.Collection коллекциялар.abc.Collection келишимин аткарат.
- Java класстары жеке жана Python'дон узартылганда TypeError ыргытат.
- Control-Cти кылдаттык менен колдонуңуз. Мурунку версиялар Java Control-C сигналын иштеткенде бузулат, анткени алар чалуу учурунда Javaны токтотот. JPype эми Javaдан кайтып келгенде InterruptedException ыргытат. Control-C учурда ишке ашырылып жаткан чоң Java процедураларын чыгарбайт, анткени Javaда бул үчүн атайын курал жок.
Андан кийин, түзөтүүчү релиз 1.0.1 түзүлдү, ал Python 3.8.4 релизиндеги көйгөйлөрдү чечүү үчүн өзгөртүүлөрдү киргизди. Python "объект" жана "тип" үчүн "__setattr__" колдонуу логикасын өзгөртүп, аны туунду класстарды өзгөртүү үчүн колдонууга жол бербейт. Ката текшерүү да "__setattr__" ыкмасынан өткөрүлүп берилген, андыктан айрым адекваттуу текшерүүлөрдөгү өзгөчөлүк түрлөрү ошого жараша жаңыртылышы керек.
Source: opennet.ru
