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 (@ اندرونی مصنوعات کے لیے ایک ازگر آپریٹر ہے؛ جاوا کے پاس نہیں ہے)۔
  • جاوا صفوں کو بنانے کے لیے اشارے شامل کیے گئے۔ مقررہ سائز کی صفوں کے لیے ٹائپ کریں[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 کو احتیاط سے ہینڈل کریں۔ پچھلے ورژن کریش ہو جاتے ہیں جب جاوا کنٹرول-C سگنل پر کارروائی کرتا ہے کیونکہ وہ کال کے دوران جاوا کو ختم کر دیتے ہیں۔ JPype اب جاوا سے واپس آنے پر ایک InterruptedException پھینکے گا۔ کنٹرول-سی جاوا کے بڑے طریقہ کار کو نہیں پھینکے گا جیسا کہ فی الحال لاگو کیا گیا ہے، کیونکہ جاوا کے پاس اس کے لیے کوئی خاص ٹول نہیں ہے۔

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

ماخذ: opennet.ru

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