Нашри JPype 0.7.2, китобхонаҳо барои дастрасӣ ба синфҳои Java аз Python

Дастрас озод кардани қабат JPype 0.7.2, ки ба барномаҳои Python имкон медиҳад, ки ба китобхонаҳои синфӣ бо забони Java дастрасии пурра дошта бошанд. Бо JPype аз Python, шумо метавонед китобхонаҳои махсуси Java-ро барои сохтани барномаҳои гибридӣ, ки рамзи Java ва Python-ро муттаҳид мекунанд, истифода баред. Баръакси Jython, ҳамгироӣ бо Java на тавассути эҷоди варианти Python барои JVM, балки тавассути ҳамкорӣ дар сатҳи ҳарду мошини виртуалӣ бо истифода аз хотираи муштарак ба даст оварда мешавад. Усули пешниҳодшуда имкон медиҳад, ки на танҳо ба дастовардҳои хуб ноил гардад, балки дастрасиро ба ҳамаи китобхонаҳои CPython ва Java таъмин мекунад. Рамзи лоиҳа паҳн мекунад дар зери Apache 2.0 литсензия шудааст.

Тағйироти асосӣ:

  • Истисноҳое, ки дар коди C++ ва Java партофта шудаанд, ҳоло стеки истисноиро таъмин мекунанд, вақте ки истисно дар коди Python рух медиҳад. Ҳамин тариқ, барои гирифтани маълумот дар бораи стеки истисно, ба шумо дигар лозим нест, ки ба stacktrace() занг занед.
  • Суръати баргардондани занг се баробар зиёд шуд.
  • Ба таври назаррас (бо фармоиши бузургӣ) суръати интиқол дар
    буферҳои numpy массивҳои бисёрченака. Примитивҳои бисёрченака нусхаҳои танҳо барои хонданро, ки дар дохили JVM сохта шудаанд, бо тарҳбандии C ҳамбаста мегузаронанд.

  • Ҳама ҷузъҳои дохилии ошкоршуда бо татбиқи CPython ва рамзҳои __javaclass__, __javavalue__ ва __javaproxy__ иваз карда шуданд.
    нест карда шуд. Ба ҳама навъҳои CPython, ки аз навъҳои синфи jpype мерос мегиранд, як ковокии махсуси Java илова карда шудааст. Ҳама ҷадвалҳои хусусӣ ба 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-ро мепартояд. Арзишҳое, ки нул ҳастанд, то ҳол ҳеҷ кадоме аз рӯи интизорӣ бармегарданд. Агар шумо хоҳед, ки калидҳои холро ҳамчун "Ҳеҷ" ҳисоб кунед, get() -ро истифода баред.
  • Java.util.Collection хориҷ карда шуд, зеро он ба таври аҷиб байни remove(Object) ва remove(int) дар рӯйхатҳо изофабор мекунад. Усули Java remove()-ро барои дастрасӣ ба рафтори аслии Java истифода баред, аммо барои назорати изофаборӣ casting навъи сахт тавсия мешавад.
  • java.lang.IndexOutOfBoundsException акнун метавонад бо истифода аз синфи истиснои IndexError ҳангоми дастрасӣ ба унсурҳои java.util.List дастгир карда шавад.

Манбаъ: opennet.ru

Илова Эзоҳ