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

Боломжтой давхаргыг гаргах JPype 1.0, энэ нь Python програмуудыг Java ангиллын номын санд бүрэн нэвтрэх боломжийг зохион байгуулах боломжийг олгодог. Python-ийн JPype-ийн тусламжтайгаар та Java-д зориулсан номын сангуудыг ашиглан Java болон Python кодыг хослуулсан эрлийз програмуудыг үүсгэж болно. 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 string төрлийн эсэхийг шалгахын тулд java.lang.String ашиглана уу.
  • Java ангиудад Repr аргууд шинэчлэгдсэн.
  • 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__" аргаас хуваарилагдсан тул зарим хангалттай байдлын шалгалтын онцгой байдлын төрлийг зохих ёсоор шинэчлэх шаардлагатай.

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

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