February 5, 2012

NIO2 ဆိုသည်မှာ

Java 7 သည် အဓိကအားဖြင့်၊ ဘာသာရပ်ပိုင်းဆိုင်ရာ ၊ API နှင့် Framework ပိုင်းဆိုင်ရာနှင့် Java ဒြပ်မဲ့စက် (JVM) ပိုင်းဆိုင်ရာ အစရှိသည့် ၃နေရာကို အဓိကထား၍ ပြုပြင်ပြောင်းလည်းမှု့ကို ပြုလုပ်လာခဲ့သည်ဟု "Java 7 ဖြင့် အနာဂတ် Java အား သုံးသပ်ခြင်း"ခေါင်းစဉ်ဖြင့် ဖော်ပြခဲ့၏။

တဖန် ဘာသာရပ်ပိုင်းဆိုင်ရာ ပြောင်းလည်းချက်များ အနေဖြင့် Project Coin ၏ ပြုပြင်ပြောင်းလည်းမှု့များကို အခန်း၂ခန်း ခွဲ၍ ဖော်ပြခဲ့၏။ ယခုတစ်ခေါက်တွင် API ပိုင်းရှိ ပြုပြင်ပြောင်းလည်းမှု့များကို ဆက်လက်၍ တင်ပြသွားပါဦးမည်။

Java သည် Java 7 အရောက်တွင် ယနေ့တိုင်အသုံးပြုလာခဲ့သော ဖိုင် IO နှင့် ပတ်သက်၍ အစစအရာရာ အသစ်ပြုပြင်လာခဲ့၏။ တဖန် ယနေ့တိုင်းအသုံးပြုခဲ့သော File မှတဆင့် NIO2 ၏ File များကို အပြန်အလှန် အလွယ်တကူ ပြောင်းလည်းနိုင်အောင်လည်း ပြင်ဆင်ထား၏။ ဆိုလိုသည်မှာ အသစ်ဖန်တီးရေးသားသည့် စစ္စတမ်အသစ်များသာမက၊ လက်ရှိ စစ္စတမ်အဟောင်းများကိုလည်း အလွယ်တကူ ပြုပြင် ပြောင်းလည်း လာနိုင်စေသလို၊ စစ္စတမ်အဟောင်းမှ စစ္စတမ်အသစ်ကိုခေါ်ယူခြင်း၊ စစ္စတမ်အသစ်မှ အဟောင်းကိုခေါ်ယူခြင်း အပြန်အလှန်အသုံးပြုနိုင်မည် ဖြစ်သည်။

အတိုဆုံးဆိုရမည် ဆိုလျှင် Java ပရိုဂရမ်မာတစ်ယောက်အနေဖြင့် NIO2 ကို မဖြစ်မနေ လေ့လာ ထားသင့်ပါသည်။


NIO2 ၏ အစ

NIO2၏ ဇာစ်မြစ်သည် J2SE 1.4 မှ စသည်ဟု ဆိုရမည် ဖြစ်သည်။ JSR 51 New I/O APIs for Java Platform သည် NIO ၏ အမည် ဖြစ်ပေသည်။ NIO သည် java.io ၏ လိုအပ်ချက်များကို ဖြည့်စွက်ရန် အတွက် Input Output များကို အဓိကထားသော Buffer များ၊ Stream ထက်ပို၍ အားကောင်းသော Channel များနှင့် Non Blocking I/O တို့ကို ပံ့ပိုးလာခဲ့၏။ သို့ရာတွင် NIO အား သာမန် အပလီကေးရှင်းများတွင်မှု သိပ်ပြီးအသုံးမပြုခဲ့ကြပေ။ Tomcat နှင့် Glassfish အစရှိသော အပလီကေးရှင်း ဆာဗာများနှင့် Framework အချို့တွင်မှု NIO ကို အသုံးပြုထားသည်ကို တွေ့ရပါသည်။

သို့ရာတွင် J2SE 1.4 တွင် ရေးသားရန်ရည်ရွယ်ခဲ့သော်လည်း ကျန်နေရစ်ခဲ့သော အရာများလည်းရှိခဲ့ပါသည်။ Socket Channel ၊ Asynchronous I/O နှင့်New File System Interface တို့ဖြစ်ကြ၏။ J2SE 1.4 ထုတ်ပြန်ပြီးနောက်တွင် JSR 203 ဖြင့် အထက်ပါ ဖန်ရှင်များကို NIO2အနေဖြင့် ဖြည့်စွက်ရန် စီစဉ်ခဲ့၏။ Java SE 5 တွင် ထုတ်ပြန်နိုင်ရန်စီစဉ်ခဲ့သော်လည်း အကြောင်းကြောင်းကြောင့် Java SE 7 အထိနောက်ကျနေခဲ့ရခြင်း ဖြစ်ပါသည်။

ဖိုင်စစ္စတမ် အသစ် အကြောင်း မစသေးခင် ဘာကြောင့်ဖိုင်စစ္စတမ်အသစ်ကို လိုအပ်တာလည်းဆိုသည်ကို စဉ်းစားကြည့်ပါမည်။ လက်ရှိတွင်လည်း java.io.File ကလပ်စ်ကို အသုံးပြုခြင်းအားဖြင့် ဖိုင်အတွင်းမှ အကြောင်းအရာများကို ဖတ်ရှုနိုင်ခြင်း၊ ရေးသားနိုင်ခြင်းများ ပြုလုပ်နိုင်၏။ သို့ရာတွင် ဖိုင်၏ Metadata များဖြစ်ကြသော၊ ဖိုင်၏ ပိုင်ရှင်၊ ဖိုင်အားရေးသားချိန်၊ များကို ပြောင်းလည်းလိုသည့်အခါ၊ Symbolic link များကို အသုံးပြုလိုသည့်အခါ၊ Directory များကို စောင့်ကြည့်လိုသည့် အခါများတွင် java.io.File တစ်ခုတည်းဖြင့် ပြုလုပ်နိုင်စွမ်းမရှိပေ။

ထိုအခက်အခဲများကို ဖြေရှင်းရန်အတွက် JSR 203 ဖြင့် NIO2 ကို ထုတ်ပြန်ခဲ့ခြင်း ဖြစ်ပါသည်။


NIO2 တွင်ပါဝင် သောအကြောင်းအရာများ

NIO2 သည် ဖိုင်စစ္စတမ် အသစ်ဆိုသော်လည်း ထင်သလောက်ကြီးမားသော API တစ်ခုမဟုတ်ပါ။ NIO2 တွင်ပါဝင်သော အဓိက Class နှင့် Interface များမှာ အောက်ပါအတိုင်းဖြစ်၏။


ယခု ဖိုင်စစ္စတမ်အသစ်၏ အဓိကကျသော ကလပ်စ်မှာ java.nio.file.FileSystem ကလပ်စ် ဖြစ်ပါသည်။ java.nio.file.FileSystems သည် FileSystem ၏ Factory Class ဖြစ်ပြီး၊ FileSystem Object ကို ခေါ်ယူရာတွင် အသုံးပြုနိုင်ပါသည်။

တဖန် လက်ရှိ java.io.File ၏ နေရာတွင် တည်ရှိသည်က java.nio.file.Path အင်တာဖေစ် ဖြစ်၏။ Path အင်တာဖေစ် အားအသုံးပြုရန် အတွက် လုပ်ဆောင်ချက်များကို စုစည်းထားသည်က java.nio.file.Files ကလပ်စ် ဖြစ်ပါသည်။ ဖိုင်တစ်ခု၏ Metadata များမှာမူ java.nio.file.attribute.AttributeView အင်တာဖေစ်၏ sub interface များအနေဖြင့် Path အင်တာဖေစ်မှ အသုံးပြုနိုင်မည် ဖြစ်၏။

java.nio.file.FileVisitor အင်တာဖေစ်သည် Visitor Pattern ကို အသုံးပြုထားသော အင်တာဖေစ် ဖြစ်ပြီး၊ ဖိုင်စစ္စတမ်အတွင်းရှိ ဖိုင်များကို ရှာဖွေရာတွင် အသုံးပြုနိုင်ပါသည်။ java.nio.file.WatchService အင်တာဖေစ်သည် ဖိုင်စစ္စတမ်အား စောင့်ကြည့်နိုင်သော အင်တာဖေစ် ဖြစ်ပါသည်။ ဖိုင်စစ္စအား စောင့်ကြည့်နိုင်ခြင်းဖြင့် အခြားသော ပရိုဂရမ်တစ်ခုခုမှ စောင့်ကြည့်နေသော ဖိုင်အား ပြုပြင်ပြောင်းလည်းမှု့များကို ပြုလုပ်ပါက အလိုအလျှောက်သိရှိနိုင်မည် ဖြစ်ပါသည်။

ယခုတစ်ကြိမ်တွင် Java 7 တွင် ဖြည့်စွက်လာသော NIO2 အကြောင်းကို အကြမ်းဖျဉ်း လေ့လာခဲ့၏။ နောက်အပါတ်များတွင် အသေးစိတ် အသုံးပြုပုံတို့ကို ဆက်လက်လေ့လာသွားပါမည်။


ကိုးကား
http://itpro.nikkeibp.co.jp/article/COLUMN/20110725/362803/?ST=develop&mkjb&P=2


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

No comments:

Post a Comment