May 24, 2013

Properties

Java သည် ကွန်ပိုင်းလုပ်ရန် လိုအပ်သော ပရိုဂရမ်မင်းဘာသာရပ် တစ်မျိုးဖြစ်၏။ ရေးသားထားသော ပရိုဂရမ်အား Byte Code အဖြစ် ကွန်ပိုင်းလုပ်ပြီး JVM အပေါ်တွင် အလုပ်လုပ်စေခြင်း ဖြစ်သည်။ အချို့သော သူများက ပြောကြပါလိမ့်မည်။ Java ဟာ အရမ်းလေးတာပဲ။ Java Applet အပလီဆိုရင် တော်ရုံနဲ့ အလုပ်မလုပ်ဘူးဟု။ အဲ့ဒီလိုပြောလာလျှင် ထိုသူသည် အတော်လေးကို ခေတ်နောက်ကျသော Java ကို သာသိရှိခဲ့သူဟု မှတ်ယူလိုက်ပါ။

Java ဟုဆိုလျင် အခြေခံအားဖြင့် JRE ကို ဆိုလိုပါသည်။ JRE တွင် Java အား အလုပ်လုပ်စေနိုင်သော Java Virtual Machine နှင့် အသုံးဝင်သော API တို့ ပါဝင်ကြ၏။ ၁၉၉၅ခုကတည်းက စတင်ခဲ့သော Java သည် ယနေ့ ၂၀၁၂ခု တွင် Java SE 7 ကို ရောက်ရှိပြီး၊ နောက်နှစ်ဆိုလျှင် Java SE 8 ကို ရောက်ရှိမည် ဖြစ်သည်။ Version များအား Update လုပ်လာသည်နှင့် အတူ ပြုပြင်ပြောင်းလည်းလာခဲ့ခြင်း ဖြစ်၏။ ဤကဲ့သို့ပြုပြင် ပြောင်းလည်း ရာတွင် API ကိုသာအသိများသော်လည်း၊ JVM အပိုင်းကိုပါ ပြောင်းလည်းလာခဲ့၏။

Interpreter အဖြစ်စတင်ခဲ့သော Java သည်၊ JRockit နှင့် Hotspot အစရှိသည့် JIT Compiler များလက်ထက် အရောက်တွင် သိသိသာသာသာ မြန်ဆန်လာခဲ့၏။ Just In Time (JIT) Compiler များသည် လက်ရှိ အလုပ်လုပ်နေသည့် CPU အပေါ်မှုတည်၍ အသင့်အတော်ဆုံး အနေအထားဖြင့် အလုပ်လုပ်စေနိုင်သောကြောင့် ကြိုတင် ကွန်ပိုင်းလုပ်ရန်လိုအပ်သော C ကဲ့သို့သော Native ဘာသာရပ်များထက် ပိုမိုကောင်းမွန်လာခဲ့၏။ ထိုနည်းတူစွာပင် Version Up လုပ်တိုင်း API များကိုလည်း ပြုပြင်မွန်းမံလာခဲ့၏။ Java SE 7 အရောက်တွင် Nio 2 အစရှိသည့် Input Output API များ၊ for each ဝါကျများ၏ အတွင်းပိုင်းပြုပြင် ပြောင်းလည်းမှု့များကြောင့် Java 6 ပေါ်တွင် အလုပ်လုပ်သော ပရိုဂရမ်တစ်ခုသည် Java 7 အပေါ်တွင် ပို၍လျှင်မြန်စွာ အလုပ်လုပ်လာနိုင်ခဲ့ခြင်း ဖြစ်၏။ ထိုကြောင့် Java သည် နှေးကွေးသည်ဟု လှေနံဓားထစ် ပြောနေသူများသည် သူတို့၏ ဟောင်းနွမ်းသော ဗဟုသုတများဖြင့် ပြောဆိုနေခြင်း သာဖြစ်၏။

ဘလောဂ်တစ်ခုတွင် Java သည် အလွန်လေးလံသော ပရိုဂရမ်မင်းဘာသာရပ်တစ်ခုဖြစ်သည်ဟု ရေးထားသည်ကို တွေ့၍ ပေါက်ကွဲနေခြင်း ဖြစ်သည်။ ဤတစ်ခေါက်ရေးသားမည်မှာ Java API ၏ Utility တစ်ခုဖြစ်သော Properties အကြောင်း ဖြစ်ပါသည်။

Properties ဆိုသည်မှာ

Java ဘာသာရပ်တွင် Key နှင့် Value တန်ဖိုးများအား Manage ပြုလုပ်နိုင်ရန်အတွက် java.util.Properties Class အား အသုံးပြုနိုင်ပါသည်။ ထို Class သည် Properties များအား Manage လုပ်နိုင်ရုံသာမက Streams များအား အသုံးပြု၍ File များအနေဖြင့် Input Output ပြုလုပ်နိုင်ပါသေးသည်။ ဤနည်းအားဖြင့် File အတွင်းမှ Properties များအား Read လုပ်ခြင်း၊ Program အတွင်း အသုံးပြုသော Properties များအား File အဖြစ် သိမ်းဆည်းခြင်းတို့အား ပြုလုပ်နိုင်ခြင်း ဖြစ်ပါသည်။ တဖန် Properties သည် HashTable ၏ Sub Class ဖြစ်သောကြောင့် Key နှင့် Value ကို တွဲကာ အချက်အလက်များအား သိမ်းဆည်းအသုံးပြု နိုင်ပါသည်။

Properties အတွင်း အချက်အလက်များအား ဖြည့်စွက်ရာတွင် Properties#setProperties ကို၎င်း၊ အချက်အလက်များအား ရယူရာတွင် Properties#getProperties ကို၎င်း အသုံးပြုနိုင်ပါသည်။

Properties File များ

Properties ဖိုင်များအား ရေးသားရာတွင် Format များအား ကရုပြုရန် လိုအပ်ပါသည်။

  • အခြေခံအားဖြင့် စာကြောင်းတစ်ကြောင်း တွင် key နှင့် value အား ပူးတွဲ၍ ရေးသားရန် လိုအပ်ပါသည်။ သို့ရာတွင် နောက်ဆုံးစာလုံး၌ \ ဖြင့် ပြီးဆုံးပါက နောက်တစ်ကြောင်းကိုလည်း ယခင်စာကြောင်း၏ အဆက်အဖြစ် ဆက်လက် ဖတ်ယူမည် ဖြစ်ပါသည်။ ဤကဲ့သို့ ဖတ်ယူရာတွင် နောက်စာကြောင်း၏ ရှေ့ဆုံးမှာ Blank စာလုံးများအား Trim လုပ်၍ ဖတ်ယူသွားမည် ဖြစ်ပါသည်။
  • Key နှင့် Value များအား = ဖြင့် သော်၎င်း : ဖြင့် သော်၎င်း ခွဲခြားရေးသားရန် လိုအပ်ပါသည်။ key ၏ ရှေ့မှ Blank စာလုံးများကိုသော်၎င်း၊ ခွဲခြား စာလုံးများ၏ ရှေ့နောက်မှ Blank စာလုံးများကို သော်၎င်း Trim လုပ်သွားမည် ဖြစ်ပါသည်။ 
  • Value အား မရေးသားထားသည့် အခါများတွင်သို့မဟုတ်၊ Key တစ်ခုတည်းသာ ရေးသားထားသည့် အခါများတွင် Value သည် Null ဖြစ်မည် ဖြစ်ပါသည်။
နမှုနာအနေဖြင့် အောက်ပါ အတိုင်း Properties ဖိုင်အား ရေးသားထားပါမည်။
title = sample title
sub.title : sample sub title
sql : select * from user \
      where userid = ?
nothing
၎င်း၏ တန်ဖိုးမှာ အောက်ပါအတိုင်းဖြစ်ပါသည်။
KeyValue
title sample title
sub.title sample sub title
sql select * from user where userid = ?
nothing null

Properties များအား ဖတ်ယူခြင်း

Properties အား အသုံးပြု၍ Properties File များမှ အချက်အလက်များအား ဖတ်ယူ အသုံးပြုပုံမှာ အောက်ပါအတိုင်းဖြစ်ပါသည်။
Properties prop = new Properties();
prop.load(new FileInputStream("sample.properties");

String value = prop.getProperty(key);
Properties#load Method အား အသုံးပြု၍ File အတွင်းရှိ အချက်အလက်များအား ရယူ အသုံးပြုနိုင်၏။ သို့ရာတွင် ၎င်းတွင် အသုံးပြုမည့် Format အား ကရုပြုရန် လိုအပ်ပါသည်။ ယခင်က ASCII ကုဒ်တစ်မျိုးတည်းသာ အသုံးပြုနိုင်ခဲ့သော်လည်း၊ Java 6 နောက်ပိုင်းတွင် Reader ကို ပါအသုံးပြုလာနိုင်ပြီး၊ နှစ်သက်ရာ Encoding ကို သတ်မှတ်၍ ရေးသားလာနိုင်ပါသည်။ ယူနီကုဒ်ကို အသုံးပြုပါက မြန်မာစာကိုလည်း Properties အဖြစ်အသုံးပြုနိုင်မည် ဖြစ်ပါသည်။
    public static void main(String[] args) {
        Properties prop = new Properties();
        try {
            prop.load(new InputStreamReader(new FileInputStream("file"), "utf-8"));
            System.out.println(prop.getProperty("samp"));
        } catch (IOException e) {
            e.printStackTrace();
        } 
    }
ထို့ အပြင် Java 5 အရောက်တွင် XML ဖိုင်များကိုပါ အသုံးပြုလာနိုင်ပြီး၊ Properties#loadFromXML အား အသုံးပြုပါက XML ပုံစံဖြင့် ရေးသားထားသော Properties ဖိုင်များအားလည်း အသုံးပြုနိုင်ပါသည်။


Properties ဖိုင်များအား သိမ်းဆည်းခြင်း

ပရိုဂရမ်အတွင်း Properties တွင် သိမ်းဆည်းထားသော အချက်အလက်များအားလည်း ဖိုင်များ အဖြစ် သိမ်းဆည်းနိုင်ပါသည်။ သိမ်းဆည်းရာတွင် properties ဖိုင်များအပြင် XML ဖိုင်အနေဖြင့်လည်း သိမ်းဆည်းနိုင်ပါသည်။ Properties#save သို့မဟုတ် Properties#store အား အသုံးပြုပါက Properties ဖိုင်များအနေဖြင့်၎င်း၊ Properties#storeToXML အား အသုံးပြုပါက XML ဖိုင်အဖြစ်၎င်း သိမ်းဆည်းနိုင်ပါသည်။ နမှုနာ အဖြစ် XML ဖိုင် အဖြစ် သိမ်းဆည်းပုံကို ရေးသားကြည့်ပါမည်။
    public static void main(String[] args) {
        Properties prop = new Properties();
        try {
            prop.setProperty("samp", "Sample Data");
            prop.setProperty("samp.hello", "Sample Hello Data");
            prop.storeToXML(new FileOutputStream("prop.xml"), "samp");
        } catch (IOException e) {
            e.printStackTrace();
        } 
    }
အထက်ပါ ပရိုဂရမ်အား Run ကြည့်သောအခါ အောက်ပါအတိုင်း XML ဖိုင်အား ရေးသိမ်းနိုင်သည်ကို တွေ့ရမည် ဖြစ်ပါသည်။

samp
Sample Hello Data
Sample Data

ဆက်ပါဦးမည်။ နောက်တစ်ခေါက်တွင် ResourceBundle အကြောင်းကို ရေးသားသွားမည် ဖြစ်ပါသည်။

ကိုးကား
http://docs.oracle.com/javase/6/docs/api/java/util/Properties.html

လေးစားစွာဖြင့်
မင်းလွင်

No comments:

Post a Comment