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 ေတြေပၚမွာလိုပဲ fregmentation ေတြျဖစ္လာပါမယ္။ 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 fregmentation ျဖစ္ျခင္းမွကာကြယ္ထားတဲ့အတြက္ menory 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 collectioပိုေကာင္းပါတယ္တဲ့။ 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 တစ္ခုဆီရဲ႔ ritgt ေတြကို ကန္႔သတ္တဲ့နည္းနဲ႔ပါ။ Process ေတြကို Harddisk ထဲ file ရိုက္ခြင့္ မျပဳတာ တို႔ sensitive area က documetေတြကို ဖတ္ခြင့္မျပဳတာတို႔ 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 Framewok လိုသေဘာတရားအတိုင္းပဲ Google အေနနဲ႔ ေနာက္ပိုင္းမွာ web-based, browser-based application ေတြ ဆက္လက္ထုတ္လုပ္ရာမွာ (သို႔) လက္ရွိ application ေတြကို စြမ္းေဆာင္ရည္တက္ဖို႔ enchance လုပ္ရာမွာ သူ႔စိတ္ၾကိဳက္ Web-based Framework တစ္ခုအေနနဲ႔ ဒီ Chrome browser ကို ထုတ္လုပ္လိုက္တာျဖစ္ပါတယ္။ မိမိ application ေတြကို မိမိစိတ္ၾကိဳက္ ပံုစံနဲ႔ frame ေအာက္မွာ run ျပီး အေကာင္းဆံုး performance ရရွိေစမွာျဖစ္ပါတယ္။ GTalk, Gmail တို႔ လူသံုးမ်ားသလိုပဲ ဒီ Chrome browser လဲ လူသံုးမ်ားလာမွာ အေသအခ်ာပါပဲ။



No comments: