Tuesday, September 2, 2008

Technical concepts behind Google Chrome

1) Process management 
ပုံမှန် Browser တွေက single threaded ပုံစံနဲ့သာအလုပ်လုပ်ပါတယ်။ ဥပမာ java script တစ်ခုကို run လိုက်ရင် အဲဒါမပြီးမခြင်း browser ကစောင့်ရမှာဖြစ်ပါတယ်။
Chorme browser ကတော့ multi-treaded နဲ့ multiple process တွေကို parallel run လုပ်နိုင်အောင် design လုပ်ထားပါတယ်။ Modern OS တွေမှာပါတဲ့ process isolation ဆိုတဲ့ idea ကို သုံးထားပါတယ်။

So separate process will render separate tabs. Separate java script thread တွေရှိလာပြီမို့ Tab တစ်ခု busy ဖြစ်နေပေမဲ့ အခြား Tab များက ဆက်လက် အလုပ်လုပ်နေမှာဖြစ်ပါတယ်။ Tab တစ်ခု crash ဖြစ်သွားခြင်း ကြောင့် browser တစ်ခုလုံး ရပ်သွားတာမျိုး မဖြစ်တော့ပါဘူး။

2) Memory Management
ပုံမှန် browser တွေမှာ web page တွေကို load လုပ်ဖို့ single address space ပဲရှိပါတယ်။ ဖွင့်ထားတဲ့ Tab အများကြီးထဲက တစ်ချို့ကို ပိတ်လိုက်ရင် free memory ရရှိမှာဖြစ်ပါတယ်။ ဒါပေမဲ့ page တွေကို load လုပ်လိုက် ပြန်ပိတ်လိုက် လုပ်တာများရင် ကျွန်တော်တို့ physical media တွေပေါ်မှာလိုပဲ fragmentation တွေဖြစ်လာပါမယ်။ 
memory နေရာတွေက ဟိုတစ်စ ဒီတစ်စ လွတ်နေသော်လည်း load လုပ်လိုက်တဲ့ page က အဲဒီ space တွေမှာ မဝင်နိုင်ရင် OSက browser ရဲ့ address space ကို ချဲ့ပေးရပါမယ်။ ဒါကြောင့် တစ်ခါ တစ်လေ ကျွန်တော်တို့ page တွေအများကြီး ဖွင့်လိုက် ပိတ်လိုက်ကြည့်ပြီးရင် တစ်ချိုု့ကို ပြန်ပိတ် လိုက်သော်လည်း browser ကြီးက နှေးမြဲနှေးနေတာမျိုးကို ကြုံရတာပါ။
Chrome မှာ Tab တစ်ခုဆီအတွက် separate address space ကို သုံးထားပါတယ်။ ဒါကြောင့် Tab တစ်ခုကို ပိတ်လိုက်ချိန်မှာ process နဲ့ သက်ဆိုင်ရာ address space ကို end လုပ်လိုက်မှာဖြစ်ပါတယ်။ Multi-process ဖြစ်တဲ့အတွက် process တစ်ခုဆီက fix memory amount တစ်ခုယူမှာမို့ ပုံမှန်ထက် memory ကိုယူပေမဲ့ သုံးနေတဲ့ကာလမှာ memory fragmentation ဖြစ်ခြင်းမှကာကွယ်ထားတဲ့အတွက် memory bloat ဖြစ်တာ နည်းသွားပါမယ်။
OS မှာလိုပဲ Task manager ပါရှိမယ်လို့ဆိုထားပါတယ်။ ဒါကြောင့် ဘယ် Tab တွေက resource (CPU, memory) တွေ ဘယ်လောက်သုံးထားတယ်၊ ဘာplug-in တွေသုံးထားတယ်ကအစ သိနိုင်ပြီး hang ဖြစ်နေတဲ့ Tab တစ်ခုကို task manager ကနေ eliminate လုပ်နိုင်မှာဖြစ်ပါတယ်။

(3) Testing
Google ဖြစ်နေတဲ့အတွက် browser အတွက် စမ်းသပ်စရာ web page မရှားပါဘူး။ Craw လုပ်ထားတဲ့ page တွေ သိန်းနဲ့ သန်းနဲ့ကို Chrome browser မှာ စမ်းသပ်ပြီးသားလို့ ဆိုထားပါတယ်။ Develop လုပ်နေစဉ်ကာလမှာတင် build တစ်ခုတက်တိုင်း web page တစ်သန်းနဲ့ စမ်းသပ် ပါတယ်။
UI Testing အတွက် User action တစ်ချို့ကို script လုပ်ပြီး စမ်းသပ်ပါတယ်။ Fuzz testing အနေနဲ application ကို random input တွေထည့်တဲ့နည်းနဲ့လည်း စမ်းသပ်ပါတယ်။

(4) Rending and V8

Web kit ဆိုတဲ့ Open Source Rendering Engine နဲ့ မြန်တယ်လို့လည်း ဆိုထားပါတယ်။ Java script တွေအတွက် V8 Virtual Machine ကို အသုံးပြုပါတယ်။ V8က ပုံမှန် java script engine တွေထက် memory garbage collection ပိုကောင်းပါတယ်တဲ့။ V8 ကို API အနေနဲ့ ယူသုံးထားတာဖြစ်ပြီး V8 core engine ကတော့ independent အနေနဲ့ တည်ရှိမှာဖြစ်ပါတယ်။

(5) Search and User Experience

Chrome မှာ ပုံမှန် Browser တွေလိုမဟုတ်ပဲ Tab တွေက အပေါ်ဆုံး layer အနေနဲ့ ရှိပါမယ်။ Tab တစ်ခုစီထဲမှာမှ URL box စသည်ဖြင့် control တွေ ရှိပါမယ်။ URL box မှာ address တွေအပြင် ကိုယ ်သိချင်တာ ရှာချင်တာတွေ (ဥပမာ car, digital camera စသည်ဖြင့်) ကို ရိုက်ထည့်ရင် အရင်ကြည့်ဖူးတဲ့ history တွေကရယ်၊ search engine ကရယ် suggestion ပေးမှာဖြစ်ပါတယ်။ Default page အနေနဲ့ most visited page ကိုးခုကို thumbnail နဲ့ တင်ထားပေးပြီး side bar နေရာမှာ အများဆုံးသွားရောက် ရှာဖွေလေ့ရှိတဲ့ site များကို တင်ထားပေးပါတယ်။

6) Security

Security အတွက် malwareတွေကို ကာကွယ်ဖို့ Sandbox လို့အမည်ပေးထားတဲ့ technique ကိုသုံးပါတယ်။ Process တစ်ခုဆီရဲ့ rightတွေကို ကန့်သတ်တဲ့နည်းနဲ့ပါ။ Process တွေကို Hard disk ထဲ file ရိုက်ခွင့် မပြုတာ တို့ sensitive area က document တွေကို ဖတ်ခွင့်မပြုတာတို့ Plug in ပါခဲ့ရင် Rendering process မှာ မထည့်ပဲ သူ့ကို သီးသန့် process တစ်ခုအဖြစ် run တာတို့ စသည်ဖြင့် ဆောင်ရွက်ပါတယ်။

Phishing ကို ကာကွယ်ဖို့အတွက် Google အနေနဲ့ အန္တရယ်ရှိတဲ့ siteတွေ စာရင်းကို အမြဲ ပြုစုနေပြီး user က အဲဒီ list ထဲက site တစ်ခုကို သွားရင် warning ပေးမှာ ဖြစ်ပါတယ်။ 6) Gear Chrome Browser ထဲကို Gear များထည့်သွင်းထားပါတယ်။ Gear ဆိုတာက စွမ်းရည်ပိုကောင်းလာဖို့ Browser ထဲကို APIထည့်တာမျိုးပါ။ Browser ရဲ့ base functionality ကို လက်ရှိအခြေအနေထက် တက်လာစေဖို့ ရည်ရွယ်တာပါ။ Gear က developer တွေအတွက်ပါ။ လက်ရှိ plug-in ထည့်သလိုပုံစံနဲ့ ဆင်ပါလိမ့်မယ်။ နောက်ပိုင်း Chrome Browser မှာ add-in လုပ်ဖို့တွေ enhancement တွေက gear အနေနဲ့ ရေးရမှာပေါ့။
-----------------------------------------------------------------------------------------------

ခြုံပြီးပြောရရင် ကျွန်တော့်အမြင်ကတော့ Microsoft ရဲ့ .Net Framework လိုသဘောတရားအတိုင်းပဲ Google အနေနဲ့ နောက်ပိုင်းမှာ web-based, browser-based application တွေ ဆက်လက်ထုတ်လုပ်ရာမှာ (သို့) လက်ရှိ application တွေကို စွမ်းဆောင်ရည်တက်ဖို့ enhance လုပ်ရာမှာ သူ့စိတ်ကြိုက် Web-based Framework တစ်ခုအနေနဲ့ ဒီ Chrome browser ကို ထုတ်လုပ်လိုက်တာဖြစ်ပါတယ်။ မိမိ application တွေကို မိမိစိတ်ကြိုက် ပုံစံနဲ့ frame အောက်မှာ run ပြီး အကောင်းဆုံး performance ရရှိစေမှာဖြစ်ပါတယ်။ G Talk, G mail တို့ လူသုံးများသလိုပဲ ဒီ Chrome browser လဲ လူသုံးများလာမှာ အသေအချာပါပဲ။

No comments: