fbpx

JavaFx vs Swing

JavaFx vs Swing

Java Programming ရဲ့ နာမည်ကျော် GUI API နှစ်ခုဖြစ်တဲ့ JavaFX နဲ့ Swingတို့ရဲ့ ကွဲပြားတဲ့အချက်(၁၀)ချက်Java Programming ကို အသုံးပြုတာကြာနေတဲ့သူတွေဆိုရင် Swing နဲ့ GUI APPတေွဖန်တီးဖူးမှာ သေချာပါတယ်။ Java ရဲ့ ပိုင်ရှင် Oracle ကလည်း Swing ကို လုံးဝကြီးမပယ်ထုတ်သေးပါဘူး။ ဘာလို့ဆို သက်တမ်းရင့်တဲ့ language ဖြစ်တာနဲ့အညီ Swing နဲ့ရေးထားတဲ့software တွေက အခုချိန်ထိ run နေတုန်းမို့လို့ပါ။ ဒါပေမဲ့လို့ Swing ကို ဘာ update မှOracle က လုပ်မပေးတော့ပါဘူး၊ အနာဂတ်မှာ javaFx ပဲအသုံးပြုမယ်ဆိုတာကို ရှင်းရှင်းလင်းကြေငြာထားပါတယ်။အခုပြောပြမှာတွေကတော့ သူတို့နှစ်ခုကြားက အခြေခံကွဲပြားချက် ၁၀ ခုပါ။1️⃣JavaFX မှာ အရာအားလုံးသည် stage ဆိုတဲ့ class ကနေစပါတယ်။

swing မှာ UI components တွေကို ထည့်လို့ရတဲ့ class ကို frame လို့ခေါ်ပြီးJFrame class ကနေ define လုပ်ပါတယ်။ နောက်ထပ် UI element တွေထပ်ထဲ့လို့ရတဲ့panel တွေကို အသုံးပြုဖို့ frame တစ်ခုမဖြစ်မနေလို့ပါတယ်။ panel ကို JPanel classကနေ define လုပ်ပါတယ်။Swing application ဆိုတာ တကယ်တော့ JFrame class ကို extend လုပ်ထားတဲ့class တစ်ခုပါပဲ။ UI component တွေကို ပြဖို့အတွက် ကျနော်တို့ JPanel ထဲကို componentတွေထဲ့ပြီး ပြီးမှ Panel ကို frame မှာသွားထဲ့ရတာပါ။JavaFx မှာတော့ အဲ့လို GUI တွေပြဖို့အတွက် ပြဇာတ်တစ်ခုကို ဥပမာထားပြီး ဖွဲ့စည်းတည်ဆောက်ထားပါတယ်။အပြင်ပြဇာတ်မှာဆို ပြဇာတ်အစိတ်အပိုင်းတွေပြဖို့ ပထမဆုံးလိုတာ စတိတ်စင်ပါပဲ၊ အဲ့လိုပဲ GUI componentအားလုံးရဲ့ top-level container ဟာ Stage class ကနေ define လုပ်ရတဲ့stage ပါပဲ။ အပြင်စတိတ်စင်မှာ ဆိုင်ရာပြကွက်တွေကို ထန်းချုပ်ကပြသလို JavaFX မှာလည်းအခြား UI component တွေကို ထိန်းချုပ်ဖို့ Scene ဆိုတဲ့ class ရှိပါတယ်။Application တစ်ခုမှာ Scene တစ်ခုမက ထည့်လို့ရပါတယ်။ stage ထဲမှာတော့ တစ်ချိန်မှာ scene တစ်ခုပဲပြနိင်ပါတယ်။Scene တစ်ခုမှာ scene graph တစ်ခုပါတယ်၊ scence graph ဆိုတဲ့ သဘောတရားကို JavaFx မှာ နားလည်ဖို့အရေးကြီးဆုံးပါပဲ။Scene graph ဆိုတာ groups, layouts, controls, shapes စတဲ့ UI အစိတ်ပိုင်းအားလုံးကို စုပေါင်းထားခြင်းပါ။အဲ့ UI object အားလုံးကို javafx မှာ nodes လို့ခေါပြီး Node class ကနေ extends လုပ်ထားတာပါ။Node class မှာ အသုံးဝင်တဲ့ methods ‌တွေပါပါတယ်။ ဥပမာ အနေနဲ့ node class မှာပါတဲ့ setRotate method နဲ့scene graph မှာပါတဲ့ node တိုင်းကို rotate လုပ်လို့ရပါတယ်။2️⃣ JavaFx မှာ layout ချဖို့အတွက် node တွေကို သုံးပါတယ်။Swing မှာ layout တစ်ခုတိုင်းအတွက် JPanel တစ်ခုလိုပါတယ်။ top-level JPanelတစ်ခုဟာ frame တစ်ခုအတွက် အခြေခံအကျဆုံး layout ပါ။ top-level layout ထဲမှာနောက်ထပ် layout တွေထပ်ထဲ့ချင်တယ်ဆိုရင် နောက်ထပ် JPanel တွေ ထပ်ထည့်ရမှာပါ။JavaFx မှာတော့ layout တွေဟာ control, shape တွေလိုပဲ Node class ရဲ့subclasses တွေပါ။ layout node တွေမှာ အခြား node အစုအဝေးတွေပါပါတယ်။layout node တွေထဲမှာကိုပဲ အခြား layout node တွေထည့်လို့ရပါသေးတယ်။ ဒီလိုတွေကြောင့်ပဲswing ရဲ့ panel layout တွေထက်ပိုပြီး လွယ်ကူစေပါတယ်။3️⃣ event handling ပိုင်းမှာ JavaFX က ပိုကောင်းတယ်user input တွေကို respond လုပ်ဖို့အတွက် FX ရော Swing ရော နှစ်ခုလုံးကevent handling ကို သုံးကြပါတယ်။ ဒါပေမဲ့ Swing ထက် javaFx က ပိုသွက်ပါတယ်။ဘာလို့သွက်တာလဲဆိုတေ့ JavaFxက သူ့ရဲ့ properties ပေါ်မှာ မှီခိုနေလို့ပါ။4️⃣ JavaFX မှာတော်တော် အသုံးဝင်တဲ့ property and binding API ပါပါတယ်JavaFX မှာ property သဘောတရားများကို support လုပ်ပြီးတော့ သူ့ရဲ့ class တိုင်းမှာကိုပဲproperty တွေကို ကျယ်ကျယ်ပြန့်ပြန့် အသုံးပြုထားပါတယ်။ နားလည်အောင်ပြောရရင် property ဆိုတာသူ့ရဲ့ value တွေကို စောင့်ကြည့်နိုင်တဲ့ variable တစ်ခုပါပဲ။ property variableတိုင်းမှာ သူ့တို့တန်ဖိုးတွေပြောင်းသွားတိုင်း အလိုအလျောက် run တဲ့ ကုဒ်တွေရေးဖို့ listener codeတွေရေးထားလို့ရပါတယ်။ နောက်ပြီး property variable အချင်းချင်းကိုလည်း တစ်ခုတန်ဖိုးပြောင်းရင်နောက်တစ်ခုလလည်းလိုက်ပြောင်းနိုင်‌အောင် bind ထားနိုင်ပါသေးတယ်။ JavaFx ရဲ့ UI element တိုင်းကိုproperty နဲ့ manage လုပ်ထားလို့ Swing မှာလုပ်လို့မရနိုင်တာတွေကို FX မှာလုပ်နိုင်ပါလိမ့်မယ်။5️⃣ JavaFX က GUI တွေကို css နဲ့ တန်ဆာဆင်လို့ရတယ်။JavaFX ရဲ့ အကောင်းဆုံး features တွေထဲက တစ်ခုကတော့ css နဲ့ controlလုပ်လို့ရတာပါပဲ။ အဲ့ကြောင့် App တစ်ခုလုံးရဲ့ design တွေကို method တစ်ခုတည်းနဲ့ ပြောင်းလဲနိုင်ပါလိမ့်မယ်။6️⃣ JavaFX မှာ Swing ထက်ပိုပြီး control node တွေပါပါတယ်နှစ်ခုလုံးမှာ အခြေခံ control တွေဖြစ်တဲ့ buttons, check box, combo box စတာတွေပါကြပါတယ်။ဒါပေ့မဲ့ Swing မှာမပါတဲ့ control တွေဖြစ်တဲ့ collapsible TitledPane control တို့ Accordion control တို့စတာတွေပါပါတယ်။ control တိုင်းကို css နဲ့ ကိုင်လို့ရပါသေးတယ်။7️⃣ JavaFx မှာ special effects တွေလည်းရှိပါသေးတယ်။javafx.scene.effect package မှာ scene graph မှာရှိတဲ့ node တိုင်းမှာအသုံးပြုနိုင်တဲ့ special effect နဲ့ဆိုင်တဲ့ class တွေအများကြီးပါပါတယ်။ အဲ့ effect တွေနဲ့shadows, reflections, blurs တွေနဲ့ အခြား စိတ်ဝင်စားစရာ visual effects တွေကို အသုံးပြုနိုင်ပါသေးတယ်။8️⃣ Animation ပိုင်းမှာလည်း JavaFX က ပိုလွယ်ပါတယ်။Swing မှာလည်း Animation လုပ်လို့ရပါတယ်။ ဒါပေမဲ့ Swing က တိုက်ရိုက် မထောက်ပံ့ပေးထားပါဘူး။Swing component တွေကို ‌animate လုပ်ဖို့ဆိုရင် ကိုယ်တိုင် timer တွေ, ကိုတိုင် logic တွေကိုset up ရပါမည်။ JavaFX ကတော့ scene graph မှာရှိသမျှ node တိုင်းကို animate လုပ်ဖို့အတွက်built-in ထောက်ပံ့ပေးထားပါတယ်။ built-in transition class တွေဖြစ်တဲ့fades, rotation, motion paths စတာတွေ အများကြီးထဲကမှာ ကြိုက်တာကိုအသုံးပြုနိုင်ပါတယ်။ဒါမှမဟုတ် စိတ်ကြိုက် animation လွယ်လွယ်လုပ်ဖို့အတွက် KeyFrame နဲ့ Timeline class တွေကိုလည်းသုံးနိုင်ပါသေးတယ်။9️⃣ JavaFx က touch screen devices တွေအတွက်လည်း support ပေးပါတယ်။ဒီအပိုင်းမှာတော့ Swing ကလုံးဝကို support မပေးပါဘူး၊ JavaFx ကတော့ အများသုံး touch gestures တွေဖြစ်တဲ့scrolling, swiping, rotating, zooming စတာတွေကို built-in ထောက်ပံ့ပေးထားပါတယ်။အဲ့ကောင်တွေအတွက် code ရေးကိုင်တွယ်ရတာလဲ လွယ်ကူပါတယ်။🔟 JavaFx မှာ JOptionPane လိုဟာမျိုးမရှိပါဘူးဒီ ဆယ်ချက်ထဲ့မှာ အခုပြောမည့်အချက်ကိုထဲ့တာက JavaFx အတွက်သိပ်မတရားသလိုတော့ဖြစ်ပါတယ်။JavaFx မှာ short alert messages တွေပြဖို့နဲ့ ရိုးရိုး user input လေးတွေယူဖို့အတွက် တော်တော်အသုံးဝင်တဲ့ Swing ရဲ့ JOptionPane လို class မျိုး မပါတာက ကသိက‌အောက်ဖြစ်စေပါတယ်။အဲ့လိုဟာမျိုးရဖို့ဆိုရင် javafX မှာတော့ ကိုယ်တိုင်ဖန်တီးရမှာပါ၊ အခု version တွေအပြောင်းတော့ ပါချင်ပါလာနိုင်ပါတယ်။


One response to “JavaFx vs Swing”

Leave a Reply

Your email address will not be published.

%d bloggers like this: