JPype 1.0.2 အပ်ဒိတ်၊ Python မှ Java အတန်းများကို ဝင်ရောက်အသုံးပြုရန် စာကြည့်တိုက်တစ်ခု

ရနိုင်ပါတယ် interlayer အသစ်ထွက်ရှိခြင်း။ JPype 1.0.2Python အပလီကေးရှင်းများသည် Java ဘာသာစကားရှိ အတန်းစာကြည့်တိုက်များသို့ အပြည့်အဝဝင်ရောက်ခွင့်ကို ခွင့်ပြုပေးသည်။ Python မှ JPype ဖြင့်၊ Java နှင့် Python ကုဒ်ကိုပေါင်းစပ်သည့် hybrid အပလီကေးရှင်းများဖန်တီးရန် Java-specific libraries ကိုသုံးနိုင်သည်။ Jython နှင့်မတူဘဲ၊ Java နှင့် ပေါင်းစည်းခြင်းသည် JVM အတွက် Python မျိုးကွဲဖန်တီးခြင်းမှမဟုတ်ဘဲ မျှဝေထားသော memory ကိုအသုံးပြုထားသော virtual machine နှစ်ခုလုံးအဆင့်တွင် အပြန်အလှန်အားဖြင့် အောင်မြင်ပါသည်။ အဆိုပြုထားသောချဉ်းကပ်မှုသည် ကောင်းမွန်သောစွမ်းဆောင်ရည်ကိုရရှိစေရုံသာမက CPython နှင့် Java libraries အားလုံးကိုလည်း ဝင်ရောက်ခွင့်ပေးပါသည်။ ပရောဂျက်ကုဒ် ဖြန့်ဝေသည် Apache 2.0 အောက်တွင် လိုင်စင်ရထားသည်။

အဓိကပြောင်းလဲမှုများ-

  • ဝန်ပိုပြတ်သားမှုကို ရှောင်ရှားရန် နည်းလမ်းခေါ်ဆိုမှုများတွင် ကက်ရှ်တစ်ခုကို ထည့်သွင်းထားသည်၊ အထူးသဖြင့် တူညီသော overload ကို အကြိမ်များစွာ ခေါ်ဆိုပါက၊ အထူးသဖြင့် တူညီသော overload ကို အကြိမ်များစွာ ခေါ်ဆိုပါက၊ overload resolution ကို ရှောင်ရှားရန်၊
  • ဒေတာအမျိုးအစားပေါ် မူတည်၍ 4 ကြိမ်မှ 100 ကြိမ်၊ စာရင်းများ၊ tuples နှင့် buffers များကို Java primitives ၏ arrays သို့ လွှဲပြောင်းခြင်းကို အရှိန်မြှင့်သည်။ Conversion သည် Sequence API အစား မန်မိုရီအတွင်းရှိ ကြားခံကြားခံများ၏ အကောင်းဆုံးလုပ်ဆောင်မှုကို အသုံးပြုသည်။ Python ကြားခံကို ကြုံတွေ့ရသောအခါ၊ ဤကြားခံများသည် တစ်သားတည်းဖြစ်နေသောကြောင့် ပြောင်းလဲခြင်းအတွက် ပထမဒြပ်စင်ကိုသာ စစ်ဆေးသည်။
  • ပိတ်ခြင်းဆိုင်ရာ လုပ်ဆောင်ချက်များကို လုပ်ဆောင်ခြင်း (JPype 1.0.0 တွင် အကောင်အထည်ဖော်ခဲ့သော်လည်း changelog ကို ပြင်ဆင်သည့်အခါ ကျော်သွားသည်)။ ယခု JPype သည် JVM shutdown routine ကို ချောမောစွာ ထွက်ရန် ကြိုးပမ်းသည်။ ဒါက အမူအကျင့် အပြောင်းအလဲများစွာကို ဖြစ်စေတယ်။ နောက်ခံမဟုတ်သော စာတွဲများ (ပရောက်စီဖုန်းခေါ်ဆိုမှုများ) သည် ယခုအခါ ၎င်းတို့ပြီးဆုံးသည်အထိ JVM ကို ဆက်လက်ဖွင့်ထားနိုင်ပါပြီ။ ပရောက်စီဖုန်းခေါ်ဆိုမှုများသည် ခေါ်ဆိုမှုပြီးသည်အထိ ပိတ်သွားမည်ဖြစ်ပြီး၊ သို့သော် ပျက်သွားသည့်မက်ဆေ့ချ်ကို လက်ခံရရှိမည်ဖြစ်သည်။ ခြွင်းချက်အား မျှော်မှန်းထားသည့်အတိုင်း အဆက်မပြတ်လုပ်ဆောင်ပါက ဖိုင်များကို ယခုအခါ ကောင်းမွန်စွာပိတ်ပြီး ဒစ်ခ်သို့ ကူးပြောင်းသွားပါပြီ။ အရင်းအမြစ်ရှင်းလင်းရေးချိတ်များနှင့် နောက်ဆုံးအဆင့်များကို လုပ်ဆောင်သည်။ thread များ ပေါက်ဖွားလာသောအခါ AtExit hooks ဟုခေါ်သည်။ daemon မှတဆင့်၊ Python မှ JVM ကိုအသုံးပြုသောအခါ အလိုအလျောက် thread attachment ကို လုပ်ဆောင်ပါသည်။ အပ်ဒြပ်ရှင်းလင်းခြင်းအား ကောင်းစွာမကိုင်တွယ်နိုင်သော ဘာဂီကုဒ်သည် ပိတ်သွားသည့်အခါတွင် ဆိုင်းငံ့သွားဖွယ်ရှိသည်။ အပိုစာရွက်စာတမ်းများကို အသုံးပြုသူလက်စွဲတွင် တွေ့နိုင်ပါသည်။
  • Throwable အတွက် wrapper သည် မျှော်လင့်ထားသော ရလဒ်အစား Object အတွက် wrapper တစ်ခုကို လက်ခံရရှိခဲ့ပြီး၊ ၎င်းသည် Python အတန်းများမှ ထူးထူးခြားခြား ပြောင်းလဲမှုများကို ဖြစ်စေသည်။
  • အမှား '»jname» ရှာမတွေ့' ဖြစ်ပေါ်စေသည့် တင်သွင်းမှုစနစ်တွင် အမှားပြင်ဆင်ထားသော စာလုံးပေါင်းများ။
  • KeyboardInterrupt တွင် "^C" ကို မှန်ကန်စွာ မြှင့်တင်ထားကြောင်း သေချာပါစေ။
  • Python 3.5.3 ကတည်းက သင်္ကေတများနှင့် ပြဿနာကို ဖြေရှင်းခဲ့သည်။ PySlice_Unpack ကို နောက်ဆက်တွဲ patch release (3.5.4) တွင် မိတ်ဆက်ခဲ့ပြီး အသုံးမပြုသင့်ပါ။
  • ပျက်စီးမှုဖြစ်စေသော numpy.linalg.inv ဖြင့် ချွတ်ယွင်းချက်တစ်ခုကို ပြင်ဆင်ခဲ့သည်။ JVM နှင့် အချို့သော အနံ့အရသာများကြားတွင် အဆိုပါပြဿနာကို ခြေရာခံခဲ့သည်။ အဆိုပြုထားသောဖြေရှင်းချက်မှာ JVM မစတင်မီ numpy.linalg.inv ကိုခေါ်ဆိုရန်ဖြစ်သည်။

source: opennet.ru

မှတ်ချက် Add