JPype 1.0.2 اپ ڈیٹ، Python سے جاوا کلاسز تک رسائی کے لیے لائبریریاں

دستیاب انٹرلیئر کی نئی ریلیز JPype 1.0.2، جو Python ایپلی کیشنز کو جاوا زبان میں کلاس لائبریریوں تک مکمل رسائی کی اجازت دیتا ہے۔ Python سے JPype کے ساتھ، آپ جاوا اور Python کوڈ کو یکجا کرنے والی ہائبرڈ ایپلی کیشنز بنانے کے لیے جاوا کے لیے مخصوص لائبریریوں کا استعمال کر سکتے ہیں۔ Jython کے برعکس، جاوا کے ساتھ انضمام JVM کے لیے Python ویرینٹ بنانے کے ذریعے نہیں، بلکہ مشترکہ میموری کا استعمال کرتے ہوئے دونوں ورچوئل مشینوں کی سطح پر بات چیت کے ذریعے حاصل کیا جاتا ہے۔ مجوزہ نقطہ نظر نہ صرف اچھی کارکردگی کو حاصل کرنے کی اجازت دیتا ہے بلکہ تمام CPython اور Java لائبریریوں تک رسائی بھی فراہم کرتا ہے۔ پروجیکٹ کوڈ نے بانٹا اپاچی 2.0 کے تحت لائسنس یافتہ۔

اہم تبدیلیاں:

  • اوورلوڈ ریزولوشن سے بچنے کے لیے میتھڈ کالز میں ایک کیش شامل کیا گیا ہے، جس سے میتھڈ ریزولوشن کی کارکردگی کا اثر بہت کم ہوجاتا ہے، خاص طور پر اگر ایک ہی اوورلوڈ کو کئی بار کال کیا جاتا ہے، جیسا کہ لوپ کے عمل کے دوران ہوتا ہے۔
  • 4 سے 100 بار تک، ڈیٹا کی قسم پر منحصر ہے، جاوا پرائمیٹوز کی صفوں میں فہرستوں، ٹیپلز اور بفرز کی منتقلی تیز ہوتی ہے۔ تبادلوں میں Sequence API کے بجائے، ان میموری بفرز کی آپٹمائزڈ پروسیسنگ کا استعمال ہوتا ہے۔ جب ایک Python بفر کا سامنا ہوتا ہے، تو تبدیلی کے لیے صرف پہلا عنصر چیک کیا جاتا ہے، کیونکہ یہ بفر یکساں ہوتے ہیں۔
  • پروسیسنگ شٹ ڈاؤن آپریشنز (JPype 1.0.0 میں لاگو کیا گیا، لیکن چینج لاگ تیار کرتے وقت چھوڑ دیا گیا)۔ JPype اب JVM شٹ ڈاؤن روٹین کو کال کرتا ہے، جو خوبصورتی سے باہر نکلنے کی کوشش کرتا ہے۔ یہ رویے میں کئی تبدیلیوں کی طرف جاتا ہے. نان بیک گراؤنڈ تھریڈز (پراکسی کالز) اب JVM کو اس وقت تک کھلا رکھ سکتے ہیں جب تک کہ وہ مکمل نہ ہو جائیں۔ پراکسی کالز کال مکمل ہونے تک شٹ ڈاؤن پر کارروائی کریں گی، لیکن اسقاط کا پیغام موصول ہوگا۔ فائلوں کو اب مناسب طریقے سے بند کر دیا گیا ہے اور اگر تھریڈز توقع کے مطابق استثنا کو ہینڈل کرتے ہیں تو ڈسک پر فلش کر دیا جاتا ہے۔ ریسورس کلین اپ ہکس اور فائنلائزرز کو پھانسی دی جاتی ہے۔ جب دھاگے پیدا ہوتے ہیں تو AtExit ہکس کہلائے جاتے ہیں۔ ڈیمون کے ذریعے، Python سے JVM استعمال کرتے وقت خودکار دھاگے کا اٹیچمنٹ لاگو ہوتا ہے۔ بگی کوڈ جو دھاگے کی صفائی کو صحیح طریقے سے ہینڈل نہیں کرسکتا ہے جب شٹ ڈاؤن عمل میں لایا جائے گا تو ممکنہ طور پر لٹک جائے گا۔ اضافی دستاویزات صارف دستی میں مل سکتی ہیں۔
  • تھرو ایبل کے لیے ریپر کو متوقع نتیجے کے بجائے آبجیکٹ کے لیے ایک ریپر موصول ہوا، جس کی وجہ سے Python کلاسز سے عجیب و غریب تبدیلیاں ہوئیں۔
  • درآمدی نظام میں ٹائپ کی غلطیاں جن کے نتیجے میں '»jname» نہیں ملا' غلطی ہوئی۔
  • یقینی بنایا کہ "^C" کو KeyboardInterrupt میں درست طریقے سے فروغ دیا گیا تھا۔
  • Python 3.5.3 کے بعد سے علامتوں کے ساتھ حل شدہ مسئلہ۔ PySlice_Unpack کو بعد کے پیچ ریلیز (3.5.4) میں متعارف کرایا گیا تھا اور اسے استعمال نہیں کیا جانا چاہیے تھا۔
  • numpy.linalg.inv کے ساتھ ایک بگ کو ٹھیک کیا جس کی وجہ سے کریش ہوا۔ اس مسئلے کا پتہ JVM اور کچھ numpy ذائقوں کے درمیان تھریڈ مواصلت پر لگایا گیا ہے۔ تجویز کردہ حل JVM شروع کرنے سے پہلے numpy.linalg.inv پر کال کرنا ہے۔

ماخذ: opennet.ru

نیا تبصرہ شامل کریں