ä¸éè¨èªã¨ãã¦ã®JavaScriptã¯ã©ããªã£ãã®ã
ãªããï¼å¹´åã®è¨äºãæ¥ã«ããã¯ãã¼ã¯ããã¦ããã®ã§ãã©ãã¼ããè¨äºã
âã®è¨äºã®1å¹´å¾ãInfoQã®è¨äº( http://www.infoq.com/news/2009/09/javascript-compilation-target )ã§ããã¤ãã®JavaScriptã«ã³ã³ãã¤ã«ããè¨èªãç´¹ä»ãããããã¡ãããGoogleã®GWT(Google Web Toolkit)ãJavaScriptãåºåããJavaç°å¢ã¨è¨ããã
å
ã®è¨äºã§è§¦ããã¨ãã¥ã¬ã¼ã¿ã§ã®æ´»ç¨ã¯ãè¦ãã¨ããDirect-threadingã«ãããã®ã«éããã¦ããããã«è¦ãããã¤ã¾ããCPUå½ä»¤ãJavaScriptçãªfunctionã¨ãã¦å®è£
ããCPUå½ä»¤ã¨ï¼å¯¾ï¼å¯¾å¿ããããGoogle V8ã®ãããªãDirect-threadingã¹ã¿ã¤ã«ã®JITCã¯ãã®ãããªææ³ã§ãååãªæ§è½ãå¾ãããã
ããï¼å¹´ã®åãã§ãã£ã¨ãéè¦ãªãã®ã¯Emscriptenããä»ã®åæ§ãªããã¸ã§ã¯ãã ãããEmscriptenã¯LLVMâJavaScriptã³ã³ãã¼ã¿ã§ãCPythonãåä½ããç¨åº¦ã®äºææ§ãæã£ã¦ããã
- http://syntensity.blogspot.com/ - éçºããã°
- https://github.com/kripken/emscripten/ - GitHub
- http://code.google.com/p/emscripten/ - æ§ããã¸ã§ã¯ããã¼ã
Emscriptenã®ããã©ã¼ãã³ã¹ã¯ãå½æã®æ¸å¿µãååã«ææãããã®ã¨è¨ãã(ããã§ãå®éã®Cããã°ã©ã ããã¯20å以ä¸é
ãããã)
å®éã®å¿ç¨ã¨ãã観ç¹ã§ã¯ãã¾ãç®è¦ãããã®ã¯ãªãã£ããNode.jsã®ããã«JavaScriptèªä½ãæ´»ç¨ããæ¹åã¯ååã«æµè¡ãã¦ããããã«æããããèå¿ã®ã©ã¤ãã©ãªæ©æ§(JSANãCommonJS)ã¯ãã¾ãæµè¡ãããç¬èªã®ããã±ã¼ã¸ã¢ãã«(npm)ã«ãªã£ãã
ï¼å¹´ã§ä½ãå¤ãã£ãã®ã
- SIMDãããã«å¯¾å¿ããã³ã³ãã¤ã©ã®éè¦æ§ãç¸å¯¾çã«ä½ä¸ãã
Intelã®LarrabeeãIBM/Toshiba/Sonyã®Cellã¯ä¸è¬ã«æ®åããªãã£ãããã®ãããJavaScript JITCããããã®ã¢ã¼ããã¯ãã£ãåããé«åº¦ãªSIMDæ©è½ãæ´»ç¨ããå¯è½æ§ãä½ããªãããã"大ããªç²åº¦"ã§æ¼ç®ãæ½è±¡åããªããã°ããã©ã¼ãã³ã¹ãçºæ®ã§ããªããã¨ã«ãªã£ãã
æ¼ç®æ§è½ãéè¦ãªã¢ããªã±ã¼ã·ã§ã³ã¯WebGLã®ãããªJavaScriptã®"å¤"ã§å®ç¾ãããä»çµã¿ã«ä»å¾ã¯ä¾åãããã¨ã«ãªãã ããã
- ã¢ãã¤ã«ã¯ã©ã¤ã¢ã³ãä¸ã§ã®Webã¢ããªã±ã¼ã·ã§ã³ã(æ¿æ²»çã«)æµè¡ããªãã£ã
æºå¸¯é»è©±ãã¿ãã¬ãã端æ«ä¸ã®ã¢ããªã±ã¼ã·ã§ã³ã¯Webã¢ããªã±ã¼ã·ã§ã³ã§ã¯ãªããã¤ãã£ãã¢ããªã±ã¼ã·ã§ã³ã«ä¾ããã¨ã主æµã¨ãªã£ããå½åiPhoneã¢ããªã±ã¼ã·ã§ã³ã¯Webã¢ããªã±ã¼ã·ã§ã³ã ã£ããããã(2008/6)ã«ãã¤ãã£ãã¢ããªã±ã¼ã·ã§ã³ã解ç¦ããã決å®çãªæµãã«ãªã£ãã
- "æè»ãªã¬ã³ããªã³ã°"ã«å¯¾ããè¦æ±ãä½ä¸ãã
å½æã®è¨äºã§æ³å®ãã¦ããã®ã¯ã"ãã©ã¦ã¶ã®ä¸ã«ãã©ã¦ã¶ãå®è£
ãã"ã¨ãã£ãæè»ãªã¬ã³ããªã³ã°ã«å¯¾ããè¦æ±ãä»å¾é«åº¦åããã¨ããç¹ã ã£ããããããå®éã«ã¯ãã®ãããªäºã¯èµ·ããããHTML5ã§åºæ¥ããã¨ãéè¦ããæ¹åã¨ãªã£ãã
ä¸çªèãæãã®ã¯ãGoogleã®Native Clientãä»å¾æµè¡ããã?ã¨ãããã¤ã³ãã ãããNative Clientã®ç®çã¯é«åº¦ã«ã¤ã³ã¿ã©ã¯ãã£ããªWebãã¼ã¸ãå®ç¾ãããã¨ã¨ãæ¢åã®Cã³ã¼ãã®æµç¨ã ããåè
ã¯JavaScript JITCã®é«åº¦åãWebGLã§ãã§ã«å®ç¾ããã¤ã¤ãããå¾è
ã®ãã¤ã³ããã¢ãã¼ã«ããé åãå®ã¯ãã¾ã大ãããªããã¨ã¯èæ
®ã«å¤ããã ããã
(ä¾ãã°ãNaTclã使ããã人ãã©ãã»ã©å±
ãã ããããhttp://slashdot.jp/developers/article.pl?sid=11/04/15/181223 )
JavaScriptåºåã®æ¿æ²»çéè¦æ§
ããã§ããJavaScriptãåºåãããã¨ã¯æ¿æ²»çã«éè¦ã§ããã¤ã¥ãã¦ããã
- å¤ãã®ãã¬ã¤ã¤ã«ã¨ã£ã¦ãGoogle Native Clientã®æµè¡ã¯é¿ããªããã°ãªããªãã
Chromeã§ããæ©è½ããªãNaClã¯ãã³ãããã¯ã¤ã³æ©æ§ã¨ãã¦æ©è½ããããã£ã¨ããFirefoxã¯Pepper Plugin APIã®ãµãã¼ãã«ãã£ã¦Native Clientãç²å¾ãããããããªããä»ã®ãã©ã¦ã¶ã¯ç¹ã«åãã¯ãªãã
æ´å²çã«ã¯ããã©ã°ã¤ã³APIãçµ±ä¸ããã¦ããã®ã¯é常ã«çãæéã§ãããªããIEã¯ç»å ´å½åã¯Netscapeã®ãã©ã°ã¤ã³APIããµãã¼ããã¦ããããActiveXã¸ã®ç½®ãæãã«ãã£ã¦ãµãã¼ããæã¡åã£ãããã©ã¦ã¶éã®äºææ§ã¨ãã観ç¹ããè¨ãã¨ãJavaScript API以å¤ã«ããã«APIãä½ãã®ã¯ãã¾ãè¯ããã¨ã«ã¯æããªãã
Cè¨èªããJavaScriptã¸ã®å¤æãååã«å®ç¨çãªãã°ãNative Clientã®åå¨ããçç±ããã¾ã大ããã¯ãªããªãããã£ã¨ããJavaScriptã®å®è¡ç°å¢èªä½ããã®ã¬ãã«ã«å°éããå¯è½æ§ã¯æ®ã©ç¡ãã ããã
ãã¡ãããããã§ã®NaClã¯FlashãªãJavaã«ãç½®ãæãã¦èãããã¨ãã§ãããç¾æç¹ã§åãå
¥ãå¯è½ã§ååã«ãªã¼ãã³ãªè¨èªç°å¢ã¯JavaScriptããç¡ãã®ãç¾å®ã ããã
- è¨èªãWebéçºã«çµã¿è¾¼ãæ段ã¨ãªããã
ç¾ç¶ã§ã¯ãWebéçºã«ä½¿ãããè¨èªã¨ãã¦JavaScriptã¯ä¸å¯æ¬ ã«ãªã£ã¦ãããå¤ãã®JVMè¨èªãæµè¡ããããã«ãä»å¾JavaScript(ã«åºåããã¿ã¤ãã®)è¨èªãæµè¡ããå¯è½æ§ãç¡ãããã§ã¯ç¡ãã
ãã ãæåã®è¨äºã§è§¦ãã¦ããããã«ãä¸æ¦JVMã.netãçµç±ãããã¨ã§ãååã«æ©è½ããå¯è½æ§ã¯æãã®ã§ãç´æ¥JavaScriptãåºåããããã«ã¯ä½ããã®ã¡ãªãããå¿
è¦ã«ãªãã
- JavaScriptã¯åæ»ãã¦ãã
ç¾ç¶ã®JavaScriptãååã«æ©è½ãã¦ãããHTML5ã¨ãã大ããªèª²é¡ãåé¢ã«åºã¦ããã®ã§ããã°ããJavaScriptã«é¢ãã¦å¤§ããªé²å±ã¯æå¾
ã§ããªãã
éã«è¨ãã°ãç¾ç¶ã®JavaScriptã¯å®å®ãã¦ããã¨ãè¨ããã
ä»å¾ã"JavaScriptãåºåããã³ã³ãã¤ã©"ã¯ä½ããã¹ãã
ç°¡åã«çºããã¨ã"è¨èªã¨JavaScriptã®ããªãã¸ã確ç«ãã"ãã¨ã«å°½ãããNaTclããã£ãããã«ãDOMãæä½ã§ããè¨èªã¨ãã¦ã®å£²ãè¾¼ã¿ãéè¦ã«ãªãããã
ã¢ãã«ã¨ãã¹ããªã®ã¯Objective-Cã ãããObjective-Cã¯è¨èªã©ã³ã¿ã¤ã ã¨BridgeSupportã®ä½ç¨ã§ãRubyãPythonã®ãããªæ¢åã®è¨èªããç´æ¥ã¯ã©ã¹ã©ã¤ãã©ãªãæä½ãããã¨ãã§ããã.netãOLEã«ãåæ§ã®æ©æ§ã¯æãã
ãã®è¨èªãObjective-Cã.netã®ã©ã¤ãã©ãªã¨ããã¨ããã¦ããã®ã¨åãã¬ãã«ã®ãµãã¼ããæä½éæä¾ããå¿
è¦ãããã
(ä¸å¿ãJavaScriptã®ä¸çã«ãWebIDLãããããç¾å®åé¡ã¨ãã¦æ¢åã®æ象ç¡è±¡ã®JavaScriptã©ã¤ãã©ãªã¨ã®é£æºãªããã¦Webéçºã¯ããããªãã®ã§ããã®åé¡ã¯ããé£ããã)
ã¾ããããã¤ãã®è¨èªæ©è½(ã¯ãã¼ã¸ã£ãä¾å¤æ©æ§)ãJavaScriptãã¤ãã£ãã®ãã®ã«ãããã³ã°ããã®ãèå³æ·±ããããããªããããããSchemeâJavaScriptãè¡ãããã¤ãã®ç 究ã§ã¯ãç±å¿ã«ä¾å¤æ©æ§ãã¯ãã¼ã¸ã£ã«ãããã³ã°ããããã¯ãVMãJavaScriptã§ã¤ãã£ã¦ãã¾ã£ãããCPSå¤æãã¦ãã¾ã£ãã»ããå®éã«ã¯é«éã«åä½ããã¨ãã¦ãããã¨ãããã
ããã©ã¼ãã³ã¹ã¯åè¿°ã®çç±ã§éè¦ãªåé¡ã§ã¯ãªããªã£ã¦ãã¾ã£ãããããã§ãã³ã¼ãã常èçãªãµã¤ãºã«åãããã¨ã¯è¦æ±ããã¦ãããã³ã¼ããµã¤ãºãå°ãããã工夫ã¨ãã¦ç°¡åãªã®ã¯ãJavaScriptã®æ¢åã®è¨èªæ©è½ãæ´»ç¨ãããã¨ã ãããã
ããã¦ããããã®ç¹å¾´ã¯è¨èªXâJavaâJavaScriptã®ãããª"å¤æ®µå¼"ã®å¤æã§ã¯å¾ã¥ãããã®ã¨ãªããJVMã.netã®ãããªä»ã®VMã¯ãã§ã«JavaScriptã®å®è¡ç°å¢ãæã£ã¦ããã®ã§ãåçè¨èªã«ã¨ã£ã¦ã¯JavaScriptã¯ç¾æç¹ã§ããã£ã¨ãé
åã®ããã³ã³ãã¤ã©ã¿ã¼ã²ããã ããã