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

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

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

  • C++ နှင့် Java ကုဒ်တွင် ထည့်သွင်းထားသော ခြွင်းချက်များသည် ယခု Python ကုဒ်တွင် ခြွင်းချက်တစ်ခု ဖြစ်ပေါ်သောအခါတွင် ခြွင်းချက်အစုတစ်ခုကို ပေးပါသည်။ ထို့ကြောင့်၊ ခြွင်းချက် stack နှင့်ပတ်သက်သောအချက်အလက်များကိုရယူရန်၊ သင်သည် stacktrace() ကိုခေါ်ဆိုရန်မလိုအပ်တော့ပါ။
  • ခေါ်ဆိုမှုပြန်အမြန်နှုန်းကို သုံးဆတိုးထားသည်။
  • သိသာထင်ရှားစွာ (ပြင်းအား၏အမိန့်အားဖြင့်) ဂီယာမြန်နှုန်းတိုးမြှင့်
    multidimensional arrays ၏ numpy buffers Multidimensional primitives များသည် တစ်ဆက်တည်း C အပြင်အဆင်ဖြင့် JVM အတွင်း ဖန်တီးထားသော ဖတ်သာမိတ္တူများကို ဖြတ်သန်းပါသည်။

  • ထိတွေ့ထားသော အတွင်းပိုင်းအားလုံးကို CPython အကောင်အထည်ဖော်မှုများနှင့် သင်္ကေတများ __javaclass__၊ __javavalue__ နှင့် __javaproxy__ တို့ဖြင့် အစားထိုးထားပါသည်။
    ဖျက်လိုက်ပြီ။ သီးသန့် Java slot တစ်ခုအား jpype အတန်းအမျိုးအစားများမှ အမွေဆက်ခံသော CPython အမျိုးအစားများအားလုံးတွင် ထည့်သွင်းထားပါသည်။ သီးသန့်ဇယားအားလုံးကို CPython သို့ ရွှေ့လိုက်ပါပြီ။ Java အမျိုးအစားများသည် အမျိုးအစား slot များကိုအသုံးပြုသည့် JClass metaclass မှ အမွေဆက်ခံရမည်ဖြစ်သည်။ Python အခြေခံအတန်းများအတွက် Mixins များကို ခွင့်မပြုပါ။ အမျိုးအစားများသည် Object၊ Proxy၊ Exception၊ Number နှင့် Array များဖြစ်ပြီး CPython ၏ internal implementations များမှ တိုက်ရိုက်အမွေဆက်ခံပါသည်။

  • ခြေရာခံခြင်းနှင့် ခြွင်းချက် ကိုင်တွယ်ခြင်းတို့ကို ပိုမိုကောင်းမွန်စေသည်။
  • numpy array ကဲ့သို့သော မူရင်းသို့ ပြန်လည်ရေးသားခြင်းကို ပံ့ပိုးပေးသည့် မြင်ကွင်းများအဖြစ် ယခု Array အချပ်များကို စီမံဆောင်ရွက်ထားပါသည်။ array slicing အတွက်၊ အဆင့်များ (slice(စတင်၊ ရပ်၊ အဆင့်))) တွင် တန်ဖိုးများကို သတ်မှတ်ခြင်းနှင့် ပြန်လည်ရယူခြင်းအတွက် ပံ့ပိုးပေးပါသည်။
  • ယခု Array များသည် "__reversed__" ကို ပံ့ပိုးပေးပါသည်။
  • Java အခင်းအကျင်းများသည် ယခု memoryview API ကို ပံ့ပိုးပေးပြီး buffer contents များကိုဖြတ်သန်းရန်အတွက် numpy ပေါ်တွင်မှီခိုမှုကို ဖယ်ရှားလိုက်ပါ။
  • Numpy သည် မှီခိုမှု (အပိုဆောင်း) မဟုတ်တော့ဘဲ numpy ပံ့ပိုးမှုဖြင့် စုစည်းခြင်းမပြုဘဲ မှတ်ဉာဏ်လွှဲပြောင်းခြင်းအား numpy သို့ ရရှိနိုင်မည်ဖြစ်သည်။
  • JInterface ကို meta class တစ်ခုအနေနဲ့ ဒီဇိုင်းထုတ်ထားပါတယ်။ အင်တာဖေ့စ်များကိုစစ်ဆေးရန် isinstance(cls၊ JInterface) ကိုသုံးပါ။
  • ပျောက်ဆုံးနေသော TLDs "mil", "net" နှင့် "edu" ကို မူရင်းတင်သွင်းမှုများတွင် ထည့်ထားသည်။
  • စတင်ချိန်တွင် UnsupportedClassVersion အတွက် ပိုမိုကောင်းမွန်သော အမှားအယွင်းစာတိုများ
  • java.util.Map သည် ဒြပ်စင်ကို ရှာမတွေ့ပါက ယခုအခါ KeyError တစ်ခု လွှတ်တင်မည်ဖြစ်သည်။ တန်ဖိုးများသည် null ဖြစ်နေဆဲဖြစ်ပြီး မျှော်လင့်ထားသည့်အတိုင်း None ကို ပြန်ပေးသည်။ ဗလာသော့များကို None အဖြစ်ကုသလိုပါက get() ကိုသုံးပါ။
  • java.util.Collection သည် စာရင်းများပေါ်တွင် remove(Object) နှင့် remove(int) ကြားတွင် ထူးထူးခြားခြား လွန်နေသဖြင့် ဖယ်ရှားလိုက်ပါသည်။ မူရင်း Java အပြုအမူကို အသုံးပြုရန် Java remove() နည်းလမ်းကို အသုံးပြုပါ၊ သို့သော် overload ထိန်းချုပ်ရန်အတွက် အမျိုးအစားကာစ်တ်ကို ပြင်းပြင်းထန်ထန် အကြံပြုထားသည်။
  • java.lang.IndexOutOfBoundsException သည် java.util.List အစိတ်အပိုင်းများကို ဝင်ရောက်သည့်အခါ IndexError ခြွင်းချက်အဆင့်ကို အသုံးပြု၍ ယခုဖမ်းမိနိုင်ပါပြီ။

source: opennet.ru

မှတ်ချက် Add