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

Боломжтой давхаргыг гаргах JPype 1.0, энэ нь Python програмуудад Java ангиллын номын санд бүрэн хандах боломжийг олгодог. JPype-г ашигласнаар Python нь 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-г дуусгах тул Java нь Control-C дохиог удирдах үед гацсан. Одоо JPype Java-ээс буцаж ирэхдээ InterruptedException шидэх болно. Java-д үүнд зориулсан тусгай механизм байхгүй тул Control-C нь одоогоор хэрэгжиж байгаа Java-ийн том процедураас хасагдахгүй.

Дараагийн хувилбар болох 1.0.1 нь засвар байсан бөгөөд үүнд Python 3.8.4-тэй холбоотой асуудлуудыг шийдвэрлэх өөрчлөлтүүд багтсан. Python нь "объект" болон "төрөл"-д "__setattr__"-г ашиглах логикийг өөрчилснөөр үүссэн ангиудыг өөрчлөхөд ашиглахаас сэргийлсэн. Алдаа шалгах нь мөн "__setattr__" аргаас хуваарилагдсан тул зарим эрүүл ахуйн шалгалтын онцгой байдлын төрлийг зохих ёсоор шинэчлэх шаардлагатай болсон.

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

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