JPype 0.7.2 хувилбар, Python-оос Java ангиудад хандах номын сангууд

Боломжтой давхаргыг гаргах JPype 0.7.2, энэ нь Python програмуудыг Java ангиллын номын санд бүрэн нэвтрэх боломжийг зохион байгуулах боломжийг олгодог. Python-ийн JPype-ийн тусламжтайгаар та Java-д зориулсан номын сангуудыг ашиглан Java болон Python кодыг хослуулсан эрлийз програмуудыг үүсгэж болно. Jython-ээс ялгаатай нь Java-тэй интеграцчилал нь JVM-д зориулсан Python хувилбарыг бий болгосноор бус, харин хуваалцсан санах ойг ашиглан виртуал машинуудын түвшинд харилцан үйлчлэлцэх замаар хийгддэг. Санал болгож буй арга нь зөвхөн сайн гүйцэтгэлд хүрэх боломжийг олгодог төдийгүй бүх CPython болон Java номын санд хандах боломжийг олгодог. Төслийн код тараасан Apache 2.0 дагуу лицензтэй.

Үндсэн өөрчлөлтүүд:

  • C++ болон Java код дээр хаяглагдсан үл хамаарах зүйлүүд нь Python кодонд үл хамаарах зүйл тохиолдоход одоо онцгой байдлын стекийг өгдөг. Тиймээс, онцгой байдлын стекийн талаар мэдээлэл авахын тулд та stacktrace() руу залгах шаардлагагүй болсон.
  • Дуудлага буцаах хурд гурав дахин нэмэгдсэн.
  • Дамжуулах хурдыг мэдэгдэхүйц (хэмжээгээр) нэмэгдүүлсэн
    олон хэмжээст массивуудын тоон буфер. Олон хэмжээст командууд нь JVM дотор үүсгэгдсэн зөвхөн уншигдах хуулбаруудыг залгаа C байрлалтай дамжуулдаг.

  • Ил гарсан бүх дотоод хэсгүүдийг CPython хэрэгжүүлэлтүүд болон __javaclass__, __javavalue__ болон __javaproxy__ тэмдэгтүүдээр сольсон.
    устгасан. jpype ангиллын төрлөөс удамшсан бүх CPython төрлүүдэд зориулалтын Java оролт нэмэгдсэн. Бүх хувийн хүснэгтүүдийг CPython руу зөөсөн. Одоо Java төрлүүд нь төрлийн слот ашигладаг JClass мета ангиас өвлөх ёстой. Python-ийн үндсэн ангиудад зориулсан холигчийг зөвшөөрөхгүй. Эдгээр төрлүүд нь Object, Proxy, Exception, Number болон Array бөгөөд CPython-ийн дотоод хэрэгжүүлэлтээс шууд удамшдаг.

  • Мөшгих болон онцгой тохиолдлуудыг зохицуулах сайжруулсан.
  • Массивын зүсмэлүүдийг одоо numpy массив гэх мэт эх рүү буцаан бичихийг дэмждэг харагдац болгон боловсруулж байна. Массивыг зүсэхийн тулд утгыг алхам алхмаар (зүсмэл (эхлэх, зогсоох, алхам)) тохируулах, сэргээхэд дэмжлэг үзүүлдэг.
  • Массивууд одоо "__reversed__"-г дэмждэг.
  • Жава массивууд одоо санах ойг харах API-г дэмжиж, буферийн агуулгыг дамжуулахын тулд numpy-ийн хамаарлыг арилгадаг.
  • Numpy нь хамаарал байхаа больсон (нэмэлт) бөгөөд numpy дэмжлэгтэйгээр хөрвүүлэхгүйгээр numpy руу санах ойг шилжүүлэх боломжтой.
  • JInterface нь мета анги хэлбэрээр бүтээгдсэн. Интерфэйсүүдийг шалгахын тулд isinstance(cls, JInterface) ашиглана уу.
  • Өгөгдмөл импортод алга болсон TLD "mil", "net" болон "edu"-г нэмсэн.
  • Ачаалах үед UnsupportedClassVersion-д зориулсан сайжруулсан алдааны мэдэгдлүүд.
  • Хэрэв элемент олдохгүй бол java.util.Map одоо KeyError шиддэг. Боловсруулсан утгууд нь хүлээгдэж буй байдлаар байхгүй хэвээр байна. Хэрэв та хоосон түлхүүрүүдийг None гэж үзэхийг хүсвэл get()-г ашиглана уу.
  • Жагсаалт дээрх remove(Object) болон remove(int) хоёрын хооронд хачирхалтай ачаалал ихтэй байдаг тул java.util.Collection-ыг устгасан. Java remove() аргыг ашиглан уугуул Java үйлдлийн системд хандах боловч хэт ачааллыг хянахын тулд төрөл дамжуулахыг зөвлөж байна.
  • java.lang.IndexOutOfBoundsException одоо java.util.List элементүүдэд хандах үед IndexError онцгой байдлын анги ашиглан барьж болно.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх