JPype 1.0 ၏ ဖြန့်ချိမှု၊ Python မှ Java အတန်းများကို ဝင်ရောက်ရန် စာကြည့်တိုက်များ

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

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

  • JChar ကို return type အဖြစ် ပံ့ပိုးထားသည်။ လိုက်ဖက်ညီမှုအတွက် JChar သည် "str" ​​​​မှ အမွေဆက်ခံပြီး သွယ်ဝိုက်သောဘာသာသို့ "int" သို့ ပြောင်းလဲခြင်းကို လုပ်ဆောင်သည်။ ထို့ကြောင့် စာချုပ်များကို လက်မှတ်များ ဖြတ်သည်။ သို့သော်၎င်းကို Python တွင် ဂဏန်းအမျိုးအစားအဖြစ် မသတ်မှတ်တော့ကြောင်း ဆိုလိုသည်မှာ Java အမျိုးအစားပြောင်းလဲခြင်းစည်းမျဉ်းများနှင့် ကိုက်ညီသော isinstance(c, int) သည် False သို့ အကဲဖြတ်ပါသည်။
  • Java အမျိုးအစား၊ Type@obj (@ သည် အတွင်းထုတ်ကုန်အတွက် Python အော်ပရေတာတစ်ခုဖြစ်ပြီး Java တွင် တစ်ခုမှ မပါရှိပါ) အော်ပရေတာတစ်ခုအား ကာစ်လုပ်ရန် မိတ်ဆက်ထားပါသည်။
  • Java အခင်းအကျင်းများဖန်တီးရန်အတွက် ထည့်သွင်းထားသော မှတ်သားချက်။ ပုံသေအရွယ်အစား arrays အတွက်[s1][s2][s3] ကို ရိုက်ထည့်ပါ၊ နောက်မှဖန်တီးမည့် arrays အတွက်[:][:][:] ကိုရိုက်ပါ။
  • @FunctionalInterface သည် သင့်အား __call__ ဖြင့် Python အရာဝတ္ထုများမှ Java ဖန်ရှင်များကို ဖန်တီးနိုင်စေပါသည်။
  • ကန့်ကွက်ထားသော JIterator၊ JException ကို စက်ရုံတစ်ခုအဖြစ် အသုံးပြုမှု၊ get_default_jvm_path နှင့် jpype.reflect ကို ဖယ်ရှားခဲ့သည်။
  • မူရင်းအားဖြင့်၊ Java စာကြောင်းများကို Python ကြိုးများအဖြစ်သို့ ပြောင်းလဲမည်မဟုတ်ပါ။
  • Python သည် "__int__" ကို ငြင်းပယ်ထားသောကြောင့် ကိန်းပြည့်နှင့် Floating-Point အမျိုးအစားများကြားတွင် သွယ်ဝိုက်သောကာစ်များသည် TypeError ဖြစ်လိမ့်မည်။
  • JException အသုံးပြုမှုကို ရပ်တန့်ထားသည်။ ခြွင်းချက်အားလုံးကိုဖမ်းရန် သို့မဟုတ် အရာဝတ္ထုတစ်ခုသည် Java ခြွင်းချက်အမျိုးအစားတစ်ခုဟုတ်မဟုတ် စစ်ဆေးရန် java.lang.Throwable ကိုသုံးပါ။
  • Java ခြွင်းချက်များ၏ Cascading အကြောင်းရင်းများကို ယခုအခါ Python stack frames တွင် ထင်ဟပ်နေသည်။
  • JString ကို ကန့်ကွက်ထားသည်။ Java string တစ်ခုကို ဖန်တီးရန် သို့မဟုတ် အရာဝတ္ထုတစ်ခုသည် Java string အမျိုးအစား ဟုတ်မဟုတ် စစ်ဆေးရန်၊ java.lang.String ကို အသုံးပြုပါ။
  • Repr နည်းလမ်းများကို Java အတန်းများတွင် အပ်ဒိတ်လုပ်ထားပါသည်။
  • java.util.List သည် collections.abc.Sequence နှင့် collections.abc.MutableSequence အတွက် စာချုပ်များကို လုပ်ဆောင်သည်။
  • java.util.Collection သည် collections.abc.Collection အတွက် စာချုပ်ကို လုပ်ဆောင်သည်။
  • Java အတန်းများသည် သီးသန့်ဖြစ်ပြီး Python မှ ထပ်တိုးလာသောအခါ TypeError ကို ပစ်ချမည်ဖြစ်သည်။
  • Control-C ကို ဂရုတစိုက်ကိုင်တွယ်ပါ။ ခေါ်ဆိုမှုအတွင်း Java သည် Control-C အချက်ပြမှုကို လုပ်ဆောင်သောအခါ ယခင်ဗားရှင်းများ ပျက်စီးသွားပါသည်။ JPype သည် Java မှပြန်လာသောအခါတွင် InterruptedException ကိုလွှင့်ပစ်မည်ဖြစ်သည်။ Java တွင် ၎င်းအတွက် အထူးကိရိယာတစ်ခု မပါရှိသောကြောင့် Control-C သည် လက်ရှိအသုံးပြုနေသည့် ကြီးမားသော Java လုပ်ငန်းစဉ်များကို စွန့်ပစ်မည်မဟုတ်ပါ။

ထို့နောက်၊ Python 1.0.1 ထုတ်ဝေမှုတွင် ပြဿနာများလုပ်ဆောင်ရန် အပြောင်းအလဲများကို ပေါင်းထည့်ထားသည့် မှန်ကန်သောဖြန့်ချိမှု 3.8.4 ကို ဖန်တီးခဲ့သည်။ Python သည် "object" နှင့် "type" အတွက် "__setattr__" ကို အသုံးပြုခြင်းနှင့် ပတ်သက်သော ယုတ္တိဗေဒကို ပြောင်းလဲပြီး ဆင်းသက်လာသော အတန်းများကို မွမ်းမံပြင်ဆင်ရန် အသုံးပြုခြင်းမှ ကာကွယ်ထားပါသည်။ အမှားစစ်ဆေးခြင်းကို "__setattr__" နည်းလမ်းမှလည်း လွှဲအပ်ထားပြီးဖြစ်သောကြောင့် အချို့သော လုံလောက်မှုစစ်ဆေးမှုများတွင် ခြွင်းချက်အမျိုးအစားများကို လျော်ညီစွာ အပ်ဒိတ်လုပ်သင့်ပါသည်။

source: opennet.ru

မှတ်ချက် Add