说说Googleçš„å¼€æºæµè§ˆå™¨Google Chrome
Google今天在官方blog上é¢é€éœ²ï¼Œä»–ä»¬â€œæ— æ„ä¸â€æŠŠGoogle自己的æµè§ˆå™¨Google Chrome的漫画泄æ¼åˆ°äº†ç½‘上(看ä¸æ‡‚E文的看这里)。这个漫画相当有趣,晚上å‘现cnbeta上é¢å·²ç»æœ‰äººæ”¾å‡ºæ¥äº†æ¼«ç”»çš„ä¸æ–‡ç‰ˆï¼Œæ²¡çœ‹è¿‡çš„å¯ä»¥å…ˆçœ‹çœ‹ã€‚
è¯´è¯´å‡ ä¸ªå¸å¼•æˆ‘çš„åœ°æ–¹ã€‚å› ä¸ºæˆ‘çš„ç»éªŒä¸»è¦æ˜¯Firefox,对IEç¼ºå°‘ç ”ç©¶ï¼Œæ‰€ä»¥è®¨è®ºä¹Ÿæ˜¯åŸºäºŽå¯¹äºŽFirefox的了解。
“现在的æµè§ˆå™¨æœ¬è´¨ä¸Šæ˜¯å•çº¿ç¨‹çš„â€
一针è§è¡€çš„论æ–,之å‰åœ¨ç ”究Firefoxæ’件的时候,å‘现了Firefox的这个设计缺陷(或者å«ç‰¹æ€§ï¼Ÿï¼‰ã€‚Firefox虽然使用了多线程进行网络IO,但是界é¢çš„渲染ä»ç„¶æ˜¯å•çº¿ç¨‹çš„,而这个å•çº¿ç¨‹çš„æœ¬è´¨åŽŸå› æ˜¯å› ä¸ºJavascript引擎是å•çº¿ç¨‹çš„。å•çº¿ç¨‹æœ‰ä¸€ä¸ªå¥½å¤„就是编程简å•ï¼Œå°¤å…¶å¯¹äºŽæ’件æ¥è¯´ï¼Œä¸éœ€è¦å¤´ç–¼åŒæ¥é—®é¢˜ã€‚但是å•çº¿ç¨‹ä¹Ÿæœ‰ä¸¥é‡çš„问题,就如åŒåœ¨æ¼«ç”»ä¸æè¿°çš„é‚£æ ·ï¼Œä»»ä½•ä¸€ä¸ªé¡µé¢ä¸Šçš„Javascript问题都会导致整个æµè§ˆå™¨ç‰å¾…,表现就是界é¢åœæ»žç”šè‡³æ»æŽ‰ã€‚现有的解决方案之一是异æ¥æ¨¡åž‹ï¼Œæˆ–者å«Event Driven的模型,例如Ajax就是对于网络IO的异æ¥åŒ–,也有一些模拟的实现æ¥å®žçŽ°Javascript的线程,比如使用SetIntervalã€‚ä½†æ˜¯å› ä¸ºJavascript规范缺少线程模型,引擎也很难åšæˆå¤šçº¿ç¨‹çš„,这个é™åˆ¶ä¹Ÿæžå¤§åœ°åˆ¶çº¦äº†æµè§ˆå™¨å’Œç½‘络应用的性能和å“应。
对于æ¤é—®é¢˜ï¼ŒGoogleçš„è§£å†³æ–¹æ¡ˆæ˜¯ä¸€ä¸ªæŠ˜è¡·ï¼šå¤šè¿›ç¨‹ã€‚è¿™æ ·æ—¢ä¸éœ€è¦ä¿®æ”¹Javascript引擎,åŒæ—¶å¯ä»¥èŽ·å–到并å‘的优点。其实我对于漫画当ä¸å¯¹äºŽå¤šè¿›ç¨‹å¯¹äºŽèŠ‚çœç³»ç»Ÿèµ„æºçš„论æ–æŒä¿ç•™æ€åº¦ï¼Œå¯¹å…¶ä»–宣称的好处也是有ä¿ç•™çš„赞æˆï¼Œä½†æ˜¯æˆ‘承认这是一个æ£ç¡®çš„设计决定。用多进程的模å¼å®žçŽ°çš„æµè§ˆå™¨ï¼Œå¯¹äºŽå°†æ¥æ½œåœ¨çš„æ’件的实现者æ¥è¯´ï¼Œæ˜¯ä¸€ä¸ªæžå¤§çš„模型简化。使用多线程的Javascript引擎(如果有的è¯ï¼‰ï¼Œæˆ‘相信带æ¥çš„问题会比解决的问题更多。
多进程模型
接下æ¥å°±æ˜¯è¯´å¦ä¸€ä¸ªæœ‰è¶£çš„地方:多进程。从漫画当ä¸é€éœ²å‡ºæ¥çš„消æ¯æ¥çœ‹ï¼Œè¿™ä¸ªå¤šè¿›ç¨‹æ¨¡åž‹æ˜¯1æ‹–N的模å¼ã€‚æ¯ä¸€ä¸ªé¡µé¢éƒ½å°†æ˜¯ä¸€ä¸ªå•ç‹¬çš„è¿›ç¨‹ã€‚å› æ¤æˆ‘开始怀疑,Google Chromeå¦‚ä½•å®žçŽ°æ ‡ç¾é¡µæµè§ˆã€‚ä¹Ÿè®¸æ ¹æœ¬å°±æ²¡æœ‰å®žçŽ°ï¼Œæˆ–è€…å®žçŽ°äº†ä¸€ä¸ªå‡çš„ã€‚å¦‚æžœå°†æ ‡ç¾é¡µæµè§ˆå®žçŽ°åœ¨Chrome任务管ç†å™¨å½“ä¸ï¼Œå°±å¿…须有一ç§IPC机制æ¥è®©ç®¡ç†å™¨æ¥å°†çª—å£å…±äº«ç»™å进程æ¥æ¸²æŸ“,这个我还没有想到一ç§å¯ä»¥è·¨å¹³å°çš„实现方å¼ã€‚
Chrome任务管ç†å™¨
éžå¸¸cool,éžå¸¸å€¼å¾—期待的组件,如果其功能真的如åŒå…¶åœ¨æ¼«ç”»å½“ä¸å®£ç§°çš„é‚£æ ·æ£’çš„è¯ã€‚
这个也是我对于Firefox最期待的功能之一。目å‰è™½ç„¶æœ‰FireBug作为替代方案,但是FireBugä»ç„¶æ˜¯å†…建在æµè§ˆå™¨å†…部的。我希望的是一个éžä¾µå…¥å¼çš„任务管ç†å™¨ï¼Œä¸€ä¸ªç‹¬ç«‹äºŽæµè§ˆå™¨ä¹‹å¤–的组件æ¥å®žçŽ°å¯¹äºŽæµè§ˆå™¨æ‰§è¡Œæµç¨‹çš„ç›‘æŽ§ã€‚è¿™æ ·çš„å¥½å¤„ä¹‹ä¸€å°±æ˜¯å¯ä»¥åœ¨æµè§ˆå™¨å¤±åŽ»å“应或者崩溃的时候ä»ç„¶ä¿ç•™å¯¹äºŽJavascript执行状况的监测。ç†æƒ³çŠ¶å†µä¸‹æˆ‘期望如åŒWindowsçš„è°ƒè¯•å™¨ä¸€æ ·ï¼Œattach到一个失去å“应的进程然åŽæŸ¥çœ‹å…¶è°ƒç”¨æ ˆæˆ–者执行时间,进而å¯ä»¥äº†è§£åˆ°æµè§ˆå™¨å„个组件的执行状况,å‘现引起问题的组件。
实现这ç§åŠŸèƒ½ï¼Œéœ€è¦Javascript引擎的å助。引擎必须æ供一ç§æœºåˆ¶æ¥ä¸æ–当å‰çš„执行æµç¨‹ï¼Œå¹¶èƒ½å¤Ÿä½¿ç”¨æŸç§æœºåˆ¶å°†å…¶å†…部状æ€å¯¼å‡ºã€‚这是一个ä¸å°çš„工程。但是由于Google的介入,也许这个并éžä¸å¯èƒ½ä¹‹äº‹ã€‚
åå—å’Œæ ¸å¿ƒ
Google Chrome。当我看到这个åå—的时候,我就以为这个是基于Geckoçš„å¦ä¸€ä¸ªç‰ˆæœ¬â€”â€”å› ä¸ºGecko(Firefoxæ‰€ä½¿ç”¨çš„æ ¸å¿ƒï¼‰çš„æ ¸å¿ƒç»„ä»¶ä¹‹ä¸€å°±æ˜¯Chrome。或者说,Firefox本身就是一个Chrome。
ä½†æ˜¯æ ¹æ®ä¸€äº›é€æ¼çš„ä¿¡æ¯ï¼ŒGoogle Chrome使用的是WebKitå†…æ ¸â€”â€”ä¸€ä¸ªå®£ç§°æ¯”Geckoæ›´å¿«ã€æ›´é«˜æ•ˆçš„å†…æ ¸ã€‚è¿™ä¸ªä¹Ÿæ¯”è¾ƒé 谱,毕竟Googleçš„Android上é¢ä½¿ç”¨çš„也是WebKitå†…æ ¸ã€‚
野心
éšç€æµè§ˆå™¨çš„å‘布,Google用户è”网å 领桌é¢ï¼Œå¹¶ä¸”试图é€æ¸æ›¿ä»£æ¡Œé¢çš„野心æ˜ç„¶è‹¥æ(当然很早之å‰å°±å·²ç»æ˜¯å¸é©¬æ˜ä¹‹å¿ƒäº†ï¼‰ã€‚一个ä¸å¤®ç®¡ç†ç»„件åè°ƒå„个网络应用;æ¯ä¸ªç½‘络应用å 用一个进程;å¯ä»¥æŸ¥çœ‹ä»»ä½•ä¸€ä¸ªåº”用的资æºå 用和å“应时间;å†åŠ 上从Google Doc到Google Mail的一æ¡çº¿çš„网络应用……
很好很强大的新桌é¢å’Œæ–°ç³»ç»Ÿã€‚
—
åˆ°äº†é‚£ä¸ªæ—¶å€™ï¼Œä½ çš„æ‰€æœ‰å®‰å…¨ï¼Œå°±å…¨éƒ¨å¯„æ‰˜åœ¨äº†å‡ ä¸ªåœ¨ç½‘ç»œä¸Šæ˜Žæ–‡ä¼ é€çš„Cookie。