JPype 0.7.2 шығарылымы, Python-дан Java сыныптарына кіруге арналған кітапханалар

Қол жетімді қабаттың босатылуы JPype 0.7.2, бұл Python қолданбаларына Java тіліндегі сынып кітапханаларына толық қол жеткізуге мүмкіндік береді. Python ұсынған JPype көмегімен Java және Python кодын біріктіретін гибридті қолданбаларды жасау үшін Java-арнайы кітапханаларды пайдалануға болады. Jython-дан айырмашылығы, Java-мен интеграция JVM үшін Python нұсқасын жасау арқылы емес, ортақ жадты пайдаланатын екі виртуалды машина деңгейінде өзара әрекеттесу арқылы қол жеткізіледі. Ұсынылған тәсіл жақсы өнімділікке қол жеткізуге ғана емес, сонымен қатар барлық CPython және Java кітапханаларына қол жеткізуге мүмкіндік береді. Жоба коды таралады Apache 2.0 бойынша лицензияланған.

Негізгі өзгерістер:

  • C++ және Java кодтарында шығарылған ерекшеліктер енді Python кодында ерекшелік орын алған кезде ерекшелік стекін қамтамасыз етеді. Осылайша, ерекшелік стегі туралы ақпаратты алу үшін stacktrace() қызметіне қоңырау шалудың қажеті жоқ.
  • Қоңырауды қайтару жылдамдығы үш есеге артты.
  • Айтарлықтай (магнитудасы бойынша) беру жылдамдығын арттырды
    көпөлшемді массивтердің сандық буферлері. Көпөлшемді примитивтер тек оқуға арналған көшірмелерді іргелес C орналасуымен JVM ішінде жасайды.

  • Барлық ашылған ішкі элементтер CPython іске асыруларымен және __javaclass__, __javavalue__ және __javaproxy__ символдарымен ауыстырылды.
    жойылды. Арнайы Java ұясы jpype сынып түрлерінен мұрагер болатын барлық CPython түрлеріне қосылды. Барлық жеке кестелер CPython-ға жылжытылды. Java түрлері енді тип ұяшықтарын пайдаланатын JClass метасыныбынан мұрагер болуы керек. Python негізгі сыныптарына арналған миксиндерге рұқсат етілмейді. Түрлер Нысан, Прокси, Ерекшелік, Сан және Массив болып табылады және CPython ішкі іске асыруларынан тікелей мұра алады.

  • Жақсартылған бақылау және ерекше жағдайларды өңдеу.
  • Жиым кесектері енді numpy массиві сияқты түпнұсқаға қайта жазуды қолдайтын көріністер ретінде өңделеді. Массивтерді кесу үшін қадамдар бойынша мәндерді орнату және алу үшін қолдау көрсетіледі (кесінді (бастау, тоқтату, қадам)).
  • Енді массивтер "__reversed__" функциясын қолдайды.
  • Java массивтері енді жадты қарау API интерфейсін қолдайды және буфер мазмұнын өткізу үшін numpy-ге тәуелділікті жояды.
  • Numpy енді тәуелділік емес (қосымша) және numpy-ге жадты тасымалдау numpy қолдауымен компиляциясыз қол жетімді.
  • JInterface мета класс ретінде жасалған. Интерфейстерді тексеру үшін isinstance (cls, JInterface) пайдаланыңыз.
  • Әдепкі импортқа жетіспейтін TLD "mil", "net" және "edu" қосылды.
  • Іске қосу кезінде UnsupportedClassVersion үшін жақсартылған қате туралы хабарлар.
  • Java.util.Map енді элемент табылмаса, KeyError жібереді. Нөл болатын мәндер күткендей ешқайсысын қайтармайды. Бос кілттерді None ретінде қарастырғыңыз келсе get() пайдаланыңыз.
  • Java.util.Collection жойылды, себебі ол Тізімдердегі remove(Object) және remove(int) арасында біртүрлі шамадан тыс жүктеледі. Жергілікті Java әрекетіне қол жеткізу үшін Java remove() әдісін пайдаланыңыз, бірақ шамадан тыс жүктеуді басқару үшін типті трансляциялау ұсынылады.
  • java.lang.IndexOutOfBoundsException енді java.util.List элементтеріне қатынасу кезінде IndexError ерекшелік сыныбы арқылы ұсталуы мүмкін.

Ақпарат көзі: opennet.ru

пікір қалдыру