JPype 1.0 کی ریلیز، Python سے جاوا کلاسز تک رسائی کے لیے لائبریریاں

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

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

  • JChar واپسی کی قسم کے طور پر تعاون یافتہ ہے۔ مطابقت کے لیے، JChar "str" ​​سے وراثت میں ملتا ہے اور "int" میں مضمر تبدیلی لاگو کرتا ہے۔ لہذا، یہ معاہدہ چیک پاس کرتا ہے. تاہم، اس کا مطلب یہ ہے کہ اب اسے Python میں عددی قسم نہیں سمجھا جاتا ہے، اور اس لیے isinstance(c، int) False کی تشخیص کرتا ہے، جو جاوا کے قسم کے تبادلوں کے اصولوں سے مطابقت رکھتا ہے۔
  • جاوا کی قسم کاسٹ کرنے کے لیے ایک آپریٹر، Type@obj، متعارف کرایا گیا ہے (@ اندرونی مصنوعات کے لیے Python کا آپریٹر ہے، جو جاوا میں موجود نہیں ہے)۔
  • جاوا صفوں کو بنانے کے لیے اشارے شامل کیے گئے۔ فکسڈ سائز کی صفوں کے لیے ٹائپ کریں[s1][s2][s3]، ٹائپ کریں[:][:][:] ان صفوں کے لیے جو بعد میں بنائی جائیں گی۔
  • @FunctionalInterface آپ کو __call__ کے ساتھ Python آبجیکٹ سے جاوا فنیکٹر بنانے کی اجازت دیتا ہے۔
  • فرسودہ JIterator کو ہٹا دیا، JException کا بطور فیکٹری استعمال، get_default_jvm_path اور jpype.reflect۔
  • پہلے سے طے شدہ طور پر، جاوا سٹرنگز Python سٹرنگز میں تبدیل نہیں ہوتے ہیں۔
  • Python نے "__int__" کو فرسودہ کر دیا ہے، لہذا انٹیجر اور فلوٹنگ پوائنٹ کی قسموں کے درمیان مضمر کاسٹ ایک TypeError پیدا کرے گا۔
  • JException کے استعمال کو فرسودہ کر دیا گیا ہے۔ تمام مستثنیات کو پکڑنے یا یہ چیک کرنے کے لیے کہ کوئی شے جاوا کی استثنائی قسم ہے، java.lang.Throwable استعمال کریں۔
  • جاوا مستثنیات کی جھڑپوں کی وجوہات اب Python اسٹیک فریموں میں ظاہر ہوتی ہیں۔
  • JString کے استعمال کو فرسودہ کر دیا گیا ہے۔ جاوا سٹرنگ بنانے یا چیک کرنے کے لیے کہ کوئی آبجیکٹ جاوا سٹرنگ کی قسم کا ہے، java.lang.String استعمال کریں۔
  • جاوا کلاسز میں Repr طریقوں کو اپ ڈیٹ کر دیا گیا ہے۔
  • java.util.List collections.abc.Sequence اور collections.abc.MutableSequence کے معاہدوں کو پورا کرتا ہے۔
  • java.util.Collection collections.abc.Collection کے معاہدے کو پورا کرتا ہے۔
  • جاوا کلاسز پرائیویٹ ہیں اور Python سے بڑھنے پر TypeError پھینک دیں گے۔
  • کنٹرول سی ہینڈلنگ اب درست ہے۔ پچھلے ورژن کریش ہو گئے جب جاوا نے Control-C سگنل کو سنبھالا، کیونکہ وہ کال کے دوران جاوا کو ختم کر دیں گے۔ اب، JPype جاوا سے واپس آنے پر ایک InterruptedException پھینکے گا۔ Control-C کو جاوا کے بڑے طریقہ کار سے نہیں پھینکا جائے گا، جیسا کہ فی الحال لاگو کیا گیا ہے، کیونکہ جاوا کے پاس اس کے لیے کوئی خاص طریقہ کار نہیں ہے۔

اگلی ریلیز، 1.0.1، ایک فکس تھی، جس میں Python 3.8.4 کے ساتھ مسائل کو حل کرنے کے لیے تبدیلیاں شامل تھیں۔ ازگر نے "آبجیکٹ" اور "ٹائپ" کے لیے "__setattr__" کو استعمال کرنے کی منطق کو تبدیل کر دیا، اسے اخذ کردہ کلاسوں میں ترمیم کرنے کے لیے استعمال ہونے سے روک دیا۔ غلطی کی جانچ پڑتال بھی "__setattr__" طریقہ سے سونپی گئی تھی، لہذا کچھ سنٹی چیکس میں استثناء کی قسموں کو اسی کے مطابق اپ ڈیٹ کرنے کی ضرورت ہے۔

ماخذ: opennet.ru

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