æè¿ãJavaã.NETãªã©ã®ãããŒãžèšèªã®æ代以éããGoing Nativeãã®ã¢ã€ãã¢ã埩掻ããããšã«ã€ããŠå€ãã®ãã€ãºãè³ã«ããŸããã æšå¹ŽãWinRTãå°å ¥ãããã°ããã®ãšãã.NETã¯æ»ãã§C ++ã¯ãã®æ å ããã¹ãŠè¿ããŠãããšäž»åŒµããããã»ã©é ããªãã³ã¡ã³ããçŸãå§ããŸãã-JITãå§ãŸã£ãŠããéãã¢ããªã±ãŒã·ã§ã³ãéçºããçã®å¯äžã®æ¹æ³ã¹ã¯ãªããèšèªã®äžçã«ã¯ãŸããŸãç»å ŽããŠããŸãïŒJavaScriptã¯JITã®å©ç¹ãæãç©æ¥µçã«äœ¿çšããŠããŸãïŒã äœããã®æ¹æ³ã§ã³ãŒãã¯å®è¡åã«ãã€ãã£ãã«ãªããŸã-å¯äžã®éãã¯ããã€ãã£ãã«ãªããã¹ã®é·ããšãæé©åãããæ¹æ³ã§ãã ããã€ãã£ãããšããèšèã®æå³ã¯å°ãå€ããããããã©ãŒãã³ã¹ããšããèšèãšå¯æ¥ã«é¢é£ããŠããŸãã ãããŒãžèšèª[CïŒ]ã®åŒ·åãªããã¢ãŒã¿ãŒãšããŠãããã®ããã©ãŒãã³ã¹ã¯ãå®éã«äœæãããC ++ã¢ããªã±ãŒã·ã§ã³ãããäœããªããŸãã WinRTã®ãããªãã®ãèšèªéã®çžäºäœçšã®åºç€ã«ãªãå Žåããã®äºå®ãåãå ¥ããŠC ++ã«æ»ãå¿ èŠãããããšãããããŸããã æ¬åœã¯ã.NETãæ»ã¬ããšãæã¿ãŸãããã®æçš¿ã§ã¯ãçç±ãšçç±ã«ã€ããŠèª¬æããŸãã
å¶åŸ¡èšèªã®æ代
管çèšèªã§ã®éçºã®æè¿ã®æŽå²ã確èªããçŸåšã®åé¡ã匷調ããŸãããã ã¹ããŒã¬ã³JavaãèŠããŠããŸããïŒ ãWrite Onceã¯ã©ãã§ãå®è¡ãããŸããã ããã¯ãå®å šã«ãå®å šãªãä»®æ³ãã·ã³èšèªãšè±å¯ãªAPIã®ã»ããããããããOSããã³ãã©ãããã©ãŒã åãã®ã¢ããªã±ãŒã·ã§ã³ãç°¡åã«éçºããæ©äŒãæäŸããæ°ãããã©ãã€ã ã®å°å ¥ã§ããã ããã¯ãå¶åŸ¡èšèªã®æ代ã®å§ãŸãã§ããã Javaã¯ããŸããŸãªéçºæ¥çã§éåžžã«ããŸãæ¡çšãããŸããããã¡ã¢ãªç®¡çã®æ©èœãäžååã«æé©åãããJITïŒãã以éã¯ãã¹ãŠãå€§å¹ ã«æ¹åãããŠããŸããïŒãäžè¶³ããŠãããªã©ã®å€æ°ã®æªãã¢ãŒããã¯ãã£ãœãªã¥ãŒã·ã§ã³ãèªèããŠããå€ãã®éçºè ã«ãã£ãŠæåŠãããŸããæ§é ã®ãµããŒããã¡ã¢ãªãžã®çŽæ¥ã¢ã¯ã»ã¹ãããã³JNIãä»ãããã€ãã£ãã³ãŒãã®åŒã³åºãã¯ãéåžžã«éå¹ççã§æéãããããŸããïŒããã«æè¿ã§ã¯ããã¹ãŠã®ãã€ãã£ãã¿ã€ãã®ãªããžã§ã¯ããåé€ããŠã lãã¹ãŠã®ãªããžã§ã¯ã-ãªããŠã²ã©ãã¢ã€ãã¢ã§ãããïŒïŒã
ãŸããJavaã¯ã¹ããŒã¬ã³èªäœã®çŽæãæããããšãã§ããŸããã§ãããå®éãåãã©ãããã©ãŒã ã®ãã¹ãŠã®æ©èœãåäžã®APIã§ã«ããŒããããšã¯äžå¯èœã§ãããSwingã®ãããªãã®ã«è³ããæé©ãªUIãã¬ãŒã ã¯ãŒã¯ã§ã¯ãããŸããã ãŸããJavaã¯ããšããšåäžã®ããã°ã©ãã³ã°èšèªåãã«èšèšãããŠããŸããããå€ãã®äººã¯JITãšãã€ãã³ãŒãã§ã¹ã¯ãªããèšèªãJava JVMã«ç§»æ€ããèœåãèŠåºããŸããã
ãããŒãžãèšèªã®æ代ã®åãã«ããã€ã¯ããœããã¯èšèªã®ç¬èªã®æ¡åŒµæ©èœïŒèª°ãããã®è©±ã®çµãããç¥ã£ãŠããïŒã§Javaåžå Žã«åå ¥ããããšããæçµçã«ã¯ãããŒãžãèšèªçšã®ç¬èªã®ãã©ãããã©ãŒã ãååŸããŸãããå®å šã§ã¯ãªãããã€ãã£ãã³ãŒãã®åŒã³åºãã軜éã ãéåžžã«å¹ççãªJITããã³NGENãæ¥æé·ããŠããCïŒãC ++ / CLIèšèªãªã©ãæåã¯ãèšèªéã®çžäºäœçšãèæ ®ããJavaã¹ããŒã¬ã³ã®è² æ ãªãã§ïŒMacOSãŸãã¯Moonlightäžã®Silverlightã¯æªããªã è©Šè¡ïŒã
äž¡æ¹ã®ãã©ãããã©ãŒã ã¯ãåæ§ã®ã¢ããªã·ãã¯ã¹ã¿ãã¯ã䜿çšããŸãããã¡ã¿ããŒã¿ããã€ãã³ãŒããJITãã¬ããŒãžã³ã¬ã¯ã¿ãŒ-ãããã¯ãã¹ãŠå¯æ¥ã«é¢é£ããŠããŸãã ãããã£ãŠãåæ§ã®ããã©ãŒãã³ã¹äžã®åé¡ããããŸãããJITã¯èµ·åæã®é 延ãæå³ããã³ãŒãã®å®è¡ã¯æ¬æ¥ã®éãã§ã¯ãããŸããã äž»ãªçç±ïŒ
- JITã¯ã³ãŒããéåžžã«è¿ éã«çæããå¿ èŠããããããC ++ -O2ãšæ¯èŒããŠäžååãªæé©åãè¡ããŸãïŒãŸããJava HotSpot JVMãšã¯ç°ãªãã.NET JITã¯æ¢åã®ã³ãŒãããã®å Žã§æé©åãããã³ãŒãã«çœ®ãæããããšã¯ã§ããŸããïŒã
- Arrayãªã©ã®.NETã¿ã€ãã¯ãã¢ã¯ã»ã¹æã«åžžã«å¢çãã§ãã¯ãè¡ããŸãïŒåçŽãªã«ãŒãã¯ã«ãŠã³ãããŸãããã«ãŒãçµäºæ¡ä»¶ãé åã®é·ã以äžã§ããå ŽåãJITã¯ãã§ãã¯ãåé€ã§ããŸãïŒã
- ã¬ããŒãžã³ã¬ã¯ã¿ãŒã¯ãã¢ã»ã³ããªäžã«ãã¹ãŠã®ã¹ã¬ãããåæ¢ããŸãïŒãã ãã.NET 4.5ã®æ°ããã¬ããŒãžã³ã¬ã¯ã¿ãŒã¯ãã®ç¹ã§å€å°æ¹åãããŠããŸãïŒãããã«ãããäºæž¬ã§ããªãããã©ãŒãã³ã¹äœäžãçºçããå¯èœæ§ããããŸãã
ããããããã©ãŒãã³ã¹ããã®ããã«äœãå Žåã§ãããŠãããŒãµã«ãã¬ãŒã ã¯ãŒã¯ãåãã管çããããšã³ã·ã¹ãã ã¯ãçç£æ§ãšèšèªéã®çžäºäœçšã®çæ§ã§ããããµããŒããããŠãããã¹ãŠã®èšèªã§å šäœçãªããã©ãŒãã³ã¹ããŸãšãã§ãã 管çèšèªã®æ代ã®ã¯ã©ã€ããã¯ã¹ã¯ãããããWindowsPhoneãšVisualStudio 2010ïŒWPFã䜿çšããŠã€ã³ã¿ãŒãã§ã€ã¹ãã¬ã³ããªã³ã°ããŸããããWPFèªäœã¯ããªãã®éã®ãã€ãã£ãã³ãŒãã®äžã§æ©èœããŠããŸããïŒã®çºå£²ã§ããã ãããŒãžãèšèªã¯ãåœæã¢ããªã±ãŒã·ã§ã³ãéçºããå¯äžã®èš±å¯ãããæ¹æ³ã§ããã æªè§£æ±ºã®.NETããã©ãŒãã³ã¹ã®åé¡ã®é·ããªã¹ããããã€ãã£ãéçºè ãã®åæãä¿ãã®ã«ååãªé·ããèãããšãããã¯èµ·ããå¯èœæ§ã®ããæé«ã®ãã®ã§ã¯ãããŸããã§ããã
ããã¯ãããæå³ã§.NETãæŸæ£ããããšãæå³ããããšãå€æããŸããã Microsoftã®å éšãããã³ã«ã€ããŠã¯ããŸãç¥ããŸããããé »ç¹ã«å ±åãããŠããããšããå€æãããšãéšééã«ã¯åŒ·ã察ç«ããããŸãã è¯ããæªãããè¿å¹Žã®.NETã®å ŽåãMicrosoftã®ããã©ãŒãã³ã¹ã¯äœäžããŠããããã§ãïŒããšãã°ãJIT / NGENã«ã¯å®è³ªçã«å€§ããªæ¹åã¯ãããŸãããéçºè ãåŸ ã¡æãã§ããSIMDã®ãããªãã®ãå«ããããã©ãŒãã³ã¹ã®æ¹åã«å¯Ÿããå€ãã®æªè§£æ±ºã®èŠæ±ã¯ãããŸããïŒãã§ã«éåžžã«é·ãæéïŒã ãããŠããããã®å€æŽã¯ãã¹ãŠã.NETãã°ããŒãã«æŠç¥ã§ããããã¹ãŠã®éšéã®åŒ·åãªãµããŒããšåå ãããå Žåã«ã®ã¿å¯èœã§ããããã«æããŸãã
åæã«ãGoogleã¯ãã©ãŠã¶ããçŽæ¥ãµã³ãããã¯ã¹ã§ãã€ãã£ãã³ãŒããå®è¡ã§ããNativeClientãã¯ãããžãŒã®å®£äŒãéå§ããŸããã æšå¹ŽããGoing Nativeããã¬ã³ãã«åŸã£ãŠãMicrosoftã¯æ¬¡ã®IEçšã«èšèšãããHTML5ã§ããã€ãã£ãã«ãªããšçºè¡šããŸããã ã·ãã¯ã
ã ãªãŒããŒQïŒAïŒåªããJITããããŒãžã³ãŒããç¯çŽããã®ã¯ãã€ã§ããïŒ ãã§ãGoing Nativeãšãã³ãžã§ãªã¹ãã®1人ã§ããHerb SutterããJITã®ãGoing Nativeãæèã®å²åŠã«å¯Ÿããèå³æ·±ãæŽå¯ãæäŸããŸãïŒãJITãé«éåã§ããŸããïŒ ã Miguel de Icazaã®æçš¿ïŒå€ãã®äžæ£ç¢ºãªäºå®ããããŸãããããŒãèŠãŠã¿ãŸãããïŒJITãå°æ¥è¯ããªã£ããšããŠãããããŒãžãèšèªã¯ã»ãã¥ãªãã£ãåªå ããŠããã©ãŒãã³ã¹ãšã»ãã¥ãªãã£ã®ã©ã¡ããããã§ã«éžæããŠããŸãã ãããã£ãŠã倧ãªãŒã°ãžã®éã¯ãã§ã«åœŒãã®ããã«æ³šæãããŠããŸãã
ãã®ç¬éãWinRTã衚瀺ãããéãè§ãå°ãæ»ããã«ãªããŸãã .NETã®å²åŠã®äžéšïŒã¡ã¿ããŒã¿ããã³æååãé åãªã©ã®ããã€ãã®äžè¬çãªåïŒãšå€ãè¯ãCOMã¢ãã«ïŒãã€ãã£ãã®èšèªéçžäºäœçšã®å ±éåæ¯ãšããŠïŒã䜿çšããŠãWinRTã¯CLRäžç以å€ã®èšèªçžäºäœçšã®åé¡ã解決ããããšããŸãïŒã€ãŸããããã©ãŒãã³ã¹ã®äœäžã¯ãããŸããïŒ C ++ïŒããã³OSçšã®ææ°ã®APIãæäŸããŸãã ããã¯ãçåœãå®å®ããã®ä»ãã¹ãŠã®äž»èŠãªè³ªåã«å¯Ÿããçãã§ããïŒ ããã§ããªãã WinRTã®å Žåã圌ãã¯å倧ãªããšã«ã€ãªããå¯èœæ§ã®ãããã¯ãããžãŒã®æ確ãªåæã«åããã³ãŒã¹ãéžæããŸããããä»ã®ãšããæ£ããéãéžæãã確å®æ§ã¯ãããŸããã ãããããã®ãæ£ããæ¹æ³ãã¯äœã§ããããïŒ
Going Native 2.0-ã¿ããªã®ããã©ãŒãã³ã¹
ã»ãã¥ãªãã£ãã§ãã¯ã¯ããã©ãŒãã³ã¹ã«æªåœ±é¿ãäžããå¯èœæ§ããããŸããããããŒãžã³ãŒãã¯é ãJITã§ãã®å¯¿åœãå®è¡ããéåœã«ãããŸããïŒããšãã°ãMonoã¯iOS / Linuxã§LLVMãä»ããŠãã€ãã£ãã«ã³ã³ãã€ã«ãããCïŒã³ãŒããå®è¡ã§ããŸãïŒãå®å šã§ãªãåœä»€ã§ãã€ãã³ãŒããæ¡åŒµããã®ã¯éåžžã«ç°¡åã§ãå¶åŸ¡ãããããã©ãŒãã³ã¹ã®æ¹åãæäŸããŸãïŒé åå¢çãã§ãã¯ã®ãªãŒããŒã©ã€ããªã©ïŒã
ããããçŸåšæãæçœãªåé¡ã¯ãèšèªéã³ã³ãã€ã©çšã®åŒ·åãªã€ã³ãã©ã¹ãã©ã¯ãã£ã®æ¬ åŠã§ãã IE 10 JavaScript JITã.NET JITãNGENã³ã³ãã€ã©ãããã³Visual C ++ã³ã³ãã€ã©ïŒããã³ä»ã®å€ãïŒã§äœ¿çšãããã³ã³ãã€ã©ããå§ãŸããŸã-ãããã¯ãã¹ãŠãã»ãŒåãæéã®ãããè€éãªã¿ã¹ã¯ã®ããã«ç°ãªãã³ãŒãã䜿çšããå¹ççãªãã·ã³ã³ãŒããçæããŸãã åäžã®ã³ã³ãã€ã©ãèªç±ã«äœ¿çšã§ããããã«ããããšã¯ããã¹ãŠã®èšèªã§å©çšå¯èœãªé«æ§èœã³ãŒããæäŸããäžã§éåžžã«éèŠãªã¹ãããã§ãã
Channel9ã®Felix9 㯠ãMicrosoftããã®åé¡ã«å®éã«åãçµãããšãã§ããããšãçºèŠããŸããã ããã¯ééããªãæå ±ã§ãããããã¹ãŠã®äººã®ããã®ããã©ãŒãã³ã¹ãã®åé¡ã¯å šäœåã®ã»ãã®äžéšã§ãã å®éãåè¿°ã®ãæ£ããæ¹æ³ãã¯ã LLVMã¹ã¿ãã¯ã®æ¹åã ãã§ãªããMicrosoftã®ããŸããŸãªåéïŒC ++ã³ã³ãã€ã©ãJITãã¬ããŒãžã³ã¬ã¯ã¿ãã¡ã¿ããŒã¿ãªã©ïŒã·ã¹ãã ã§ã®é·å¹Žã®çµéšã«ãã£ãŠãµããŒãããããããåºç¯ãªçµ±åã¢ãŒããã¯ãã£ã§ãã以äžã§æ§æãããå®å šã«æ¡åŒµå¯èœãªã¢ãžã¥ã©ãŒãCLRããæäŸããŸãã
- äžçŽäžéèšèª ã LLVM IRãŸãã¯.NETãã€ãã³ãŒãã«ãã䌌ãåå°åã§ãäžè¬çãªããŒã¿åïŒããªããã£ããæååãé åãªã©ïŒãå®çŸ©ããŸãã System.Reflection.Emitã«äŒŒãAPIãå©çšå¯èœã«ãªããŸãã ãã¯ãã«ååïŒSIMDïŒã¯ãintããã³doubleãšåããããåºæ¬çã§ãªããã°ãªããŸããã ILã³ãŒãã¯CPUã®ã¿ã«éå®ãããã¹ãã§ã¯ãªããGPUã³ã³ãã¥ãŒãã£ã³ã°ãèš±å¯ããå¿ èŠããããŸãïŒC ++ã®AMPæ¡åŒµæ©èœãè¡ãããã«ïŒã ãã®ILã䜿çšããŠãåäžã®ã³ã³ãã€ã©ã€ã³ãã©ã¹ãã©ã¯ãã£ãå©çšããŠHLSLãã€ãã³ãŒããè¡šãããšãã§ããã¯ãã§ãïŒä»¥äžãåç §ïŒã åçããã°ã©ãã³ã°èšèªã移æ€ããããããããã«ãã¿ã€ãã¬ã¹ILãå©çšã§ããããã«ããå¿ èŠããããŸãã
- ã¡ã¿ããŒã¿ãæäŸãã.NETã¢ã»ã³ããªããªãã¬ã¯ã·ã§ã³ããµããŒãããILã³ãŒããªã©ãåçã«ãªã³ã¯ãããã©ã€ãã©ãªãšå®è¡å¯èœãã¡ã€ã« ã èšèšæã«ã¯ãã³ãŒãã¯ã¬ã¬ã·ãŒC / C ++ããããŒãã¡ã€ã«ã§ã¯ãªããã¢ã»ã³ããªïŒILã³ãŒãïŒãšéä¿¡ããå¿ èŠããããŸãã
- ILãã JITããã¹ã¯ãããã¢ããªã±ãŒã·ã§ã³ãã¯ã©ãŠãã³ã³ãã€ã©ããŸãã¯ããããã¹ãŠã®çµã¿åããã«çµ±åã§ãããã·ã³ã³ãŒããžã®ã³ã³ãã€ã©ã ãã®ã³ã³ãã€ã©ã¯ãã¿ãŒã²ãããã©ãããã©ãŒã ããµããŒãããéãã®ãã¯ãã«åãæäŸããå¿ èŠããããŸãã ILã³ãŒãã¯ãã€ã³ã¹ããŒã«ãŸãã¯å±éäžã«ã·ã¹ãã ã¢ãŒããã¯ãã£ã«é¢ããæ å ±ã䜿çšããŠãã·ã³ã³ãŒãã«ã³ã³ãã€ã«ããå¿ èŠããããŸãïŒéçºäžãããã¯ILãžã®ã³ã³ãã€ã«åŸããã«å®è¡ã§ããŸãïŒã ã³ã³ãã€ã«æé ã¯APIãä»ããŠã¢ã¯ã»ã¹å¯èœã§ãããå¯èœãªéãæ¡åŒµãã€ã³ããæäŸããå¿ èŠããããŸãïŒILãžã®ã¢ã¯ã»ã¹ã®æäŸãILã®æé©åããŸãã¯ILãããã·ã³ã³ãŒããžã®ãã€ãã£ãå€æã®åã蟌ã¿ïŒã æé©åèšå®ã¯ãé«éã³ã³ãã€ã«ïŒJITãªã©ïŒããç©æ¥µçãªæé©åïŒäºåã«ã³ã³ãã€ã«ãããã¢ããªã±ãŒã·ã§ã³ããŸãã¯çç£æ§ãé«ããããã«JITã§ãããã¹ã¯ããããã³ãŒãïŒã«åã¶å¿ èŠããããŸãã ã¢ããªã±ãŒã·ã§ã³ãããã¡ã€ã«ã䜿çšããŠãããŒã«ã©ã€ãºãããæé©åãèªåçã«åŸ®èª¿æŽããããšãã§ããŸãã ãã®ã³ã³ãã€ã©ã¯ãåçã³ãŒãåæãOn Stack ReplacementïŒè€éãªèšç®ã®ã³ãŒããå®è¡æã«æé©ãªã³ãŒãã«çœ®ãæããããšãã§ããOSRïŒãªã©ã®é«åºŠãªJIT䜿çšã·ããªãªããµããŒãããå¿ èŠããããŸããæåã®èµ·åæã ãã®çš®ã®æé©åã¯ãïŒJavascriptã®å Žåã®ããã«ïŒã³ã³ãã€ã«åŸã«åæšè«ãçºçããåçã·ããªãªã§éåžžã«éèŠã§ãã
- 䞊åã¡ã¢ãªå²ãåœãŠãå¯èœã«ãããã¡ã¢ãªå²ãåœãŠçšã®æ¡åŒµå¯èœãªã³ã³ããŒãã³ãã ã¬ããŒãžã³ã¬ã¯ã¿ãŒã¯ãå¯èœãªå®è£ ã®1ã€ã«ãªããŸã ã ã»ãšãã©ã®ã¢ããªã±ãŒã·ã§ã³ã¯ã»ãšãã©ã®ãªããžã§ã¯ãã«äœ¿çšããŸãããæãããã©ãŒãã³ã¹ãéèŠãªãªããžã§ã¯ãã¯ä»ã®ã¡ã¢ãªå²ãåœãŠæŠç¥ïŒCOM / WinRTã§äœ¿çšããããªã³ã¯ã«ãŠã³ããªã©ïŒã䜿çšããŸãã 1ã€ã®ã¢ããªã±ãŒã·ã§ã³ã§ã®è€æ°ã®ã¡ã¢ãªå²ãåœãŠæŠç¥ã®äœ¿çšã«å¶éã¯ãããŸããïŒããã¯ãã¢ããªã±ãŒã·ã§ã³ããã€ãã£ãé¢æ°åŒã³åºãã䜿çšããŠCLRã®å€éšã«ãªããžã§ã¯ããäœæããããšã«é Œããªããã°ãªããªããšãã«.NETã§ãŸãã«çºçããŸãïŒã
ãã®ã¢ã€ãã¢ã¯CLRã¹ã¿ãã¯ã«éåžžã«è¿ãã§ãããã¢ããªã±ãŒã·ã§ã³ãJITã³ã³ãã€ã©ãŒã®äžã§å®è¡ããããšã匷å¶ããŸããïŒã¯ãã.NETã«ã¯NGENããããŸãããå šäœã®äœæ¥ãã¹ããŒãã¢ããããã®ã§ã¯ãªããããŒããã¹ããŒãã¢ããããããã«èšèšãããŸãããããã«ããã©ãã¯ããã¯ã¹ã§ãããã¢ã»ã³ããªã§ã®ã¿åäœããŸãGACã«ã€ã³ã¹ããŒã«ãããŸãïŒãã¡ã¢ãªãå²ãåœãŠãããã®æ··åæŠç¥ãå¯èœã«ããŸãïŒã¬ããŒãžã³ã¬ã¯ã¿ãŒã䜿çšããŠããããªãã§
ãã®ãããªã·ã¹ãã ã§ã¯ãåçŽåã®ããã«ããã©ãŒãã³ã¹ãç ç²ã«ããããšãªããèšèªéçžäºäœçšãããåçŽã«ãªããéããŸãåæ§ã§ãã çæ³çã«ã¯ãOSèªäœãåæ§ã®ã¢ãŒããã¯ãã£ã«åºã¥ããŠæ§ç¯ããå¿ èŠããããŸãã ããããããã®èãã¯ïŒããã«ããã®ã§ããããïŒïŒ Redhawk ïŒããã¯ã³ã³ãã€ã©ãŒåãïŒãMidori ïŒOSåãïŒãªã©ã®ãããžã§ã¯ãã®åºç€ã§ããã ãã®ãããªçµ±åã·ã¹ãã ã§ã¯ããããããã©ã€ããŒã®ã¿ãããŒããŠã§ã¢ãžã®çŽæ¥ã¢ã¯ã»ã¹ãå¿ èŠãšããŸãã
Felix9ã¯ãMDILãšåŒã°ããMSILïŒ.NETãã€ãã³ãŒãïŒãããäœãã¬ãã«ã®äžéãã€ãã³ãŒããæ¢ã«äœ¿çšå¯èœã§ãããåè¿°ã®äžéãã€ãã³ãŒãã§ããå¯èœæ§ãããããšãçºèŠããŸããã ãã ãã察å¿ããç¹èš±ã å€æŽèæ§ã®ããã®äžéèšèªãµããŒã ããèŠããšãä»æ§ã«ã¯ãã¢ãŒããã¯ãã£ã«äŸåããªããã€ãã³ãŒãã®å®çŸ©ã«å®å šã«ã¯é©åããªãx86åœä»€ããããŸãã ãããããMSILã¯å€æŽããã«ãMDILãããäœãã¬ãã«ã§äœ¿çšããŸãã ããã«ããããŸãã
ã§ã¯ãWinRTã¯ãã®èŠ³ç¹ããã©ã®ãããªåé¡ã解決ããŸããïŒ ã¡ã¿ããŒã¿ããµã³ãããã¯ã¹ããµããŒãããAPIã®äžéšãããã³åæã®èšèªéçžäºäœçšïŒäžè¬çãªããŒã¿åãšã¡ã¿ããŒã¿ããããŸããïŒã ã芧ã®ããã«ãå€ãã§ã¯ãªããäžçš®ã®COM ++ã§ãã APIã䜿çšããå Žå ã WinRTãé«åºŠãªæé©åãæäŸããªãããšãæããã§ãã ããšãã°ãã¡ãœãããåã蟌ãŸããæ§é ãæã€ããšã¯èš±å¯ãããŠããŸããã WinRTã®åã¡ãœããåŒã³åºãã¯ãä»®æ³ã¡ãœããã®ããŒãã«ãééããä»®æ³åŒã³åºãã§ãïŒå Žåã«ãã£ãŠã¯ãéçã¡ãœããã䜿çšããå Žåãªã©ãããã€ãã®ä»®æ³åŒã³åºããå¿ èŠã«ãªããŸãïŒã æãåçŽãªèªã¿åã/æžã蟌ã¿ããããã£ã«ã¯ãä»®æ³åŒã³åºããå¿ èŠã§ãã ããã¯æããã«éå¹ççã§ãã ã©ãããWinRTã¯é«ã¬ãã«ã®APIã®ã¿ã«çŠç¹ãåœãŠãŠãããå¯èœãªéãé«æ§èœãªã³ãŒãã䜿çšãããã·ããªãªãèš±å¯ãããä»®æ³åŒã³åºããšéåã蟌ã¿ã³ãŒãã®ã¬ã€ã€ãŒããã€ãã¹ããŸãã ãã®çµæãæ¡åŒµãããCOMã¢ãã«ããããŸããããã¯ããŸãã«ãæªæ¥ã®æ§ç¯ããšåŒã°ãããã®ã§ã¯ãããŸããã
CïŒ5.0ã®çç£æ§ãšããã©ãŒãã³ã¹
CïŒã®ãããªèšèªã¯ããã®ãããªã¢ãžã¥ã©ãŒCLRã·ã¹ãã ã®çæ³çãªåè£ã§ãããæ¢åã®äžéãã€ãã³ãŒãã«ç°¡åã«ç§»æ€ã§ããŸãã ãããããã®ãããªã·ã¹ãã ãå¹æçã«äœ¿çšããã«ã¯ãCïŒãããã€ãã®é¢ã§æ¹åããå¿ èŠããããŸãã
- ããå®å šã§ã¯ãªãæ§é ãé åã®å¢çããã§ãã¯ãããããªãå¶åŸ¡ããããåäœããªãã«ã§ãããšãïŒãã¹ãŒããŒå®å šã¢ãŒãããªã©ãCPUã§ãã£ãã·ã¥åœä»€ã䜿çšããŠé åã®èŠçŽ ã«ã¢ã¯ã»ã¹ã§ãããšãïŒããã®çš®ã®ãé«åºŠãªãããšã¯ä»ã§ã¯äžå¯èœã§ãææžåãããŠããªãããªãã¯ã䜿çšããªããããŒãžãã¢ã¬ã€ïŒã
- ããŸããŸãªã¡ã¢ãªå²ãåœãŠã¹ããŒã ããµããŒãããæ§æå¯èœãªæ°ããæŒç®å ã
- ãã¯ãã«å ïŒHLSLã®float4ãªã©ïŒãåºæ¬åã«è¿œå ããå¿ èŠããããŸãã ããã¯é·ãéæ±ããããŠããŸããïŒXNA WPã«ãã®åé¡ãã解決ãããããã®ã²ã©ããããããããŸãïŒã
- ãã€ãã£ãã³ãŒããšã®è»œéãªå¯Ÿè©± ïŒçŸåšã®ç¶æ ã§ã¯ããããŒãžã³ãŒãããã¢ã³ãããŒãžã³ãŒããžã®ç§»è¡ã¯ããã©ã¡ãŒã¿ãŒãæž¡ããªããŠãéåžžã«ã³ã¹ããããããŸãã çŸåšã.NET JITã§çæãããŠããx86 / x64 prolog / epilogåœä»€ããªããŠããã¢ã³ãããŒãžã³ãŒãã«ã¢ã¯ã»ã¹ã§ããŸãã
ããã©ãŒãã³ã¹ã«å ããŠãä»ã«ãåæ§ã«éèŠãªé åããããŸãã
- ãžã§ããªãã¯ã¯ã©ãã«ã§ããããŸã -ã³ã³ã¹ãã©ã¯ã¿ãŒããã³æé»çãªåå€æã§ã¯ãããé«åºŠãªæ§é ïŒæŒç®åã®ã³ã³ãã©ã¯ããªã©ïŒã䜿çšããC ++ãã³ãã¬ãŒãã®æè»æ§ã«è¿ããªããŸãããããå®å šã§æ··ä¹±ãå°ãªããªããŸãã
- æ§é äœã®ç¶æ¿ãšãã¡ã€ãã©ã€ã¶ãŒ ïŒtry / finallyãªã©ã®æ±ãã«ãããã¿ãŒã³ã䜿çšããã«ã¡ãœãããçµäºãããšãã«è»œéã³ãŒããå®è¡ã§ããããã«ããããïŒã
- ããå€ãã®ã¡ã¿ããã°ã©ãã³ã° ã éçåãäžçŽç©ïŒã¯ã©ã¹ã®å 容ãå¥ã®ã¯ã©ã¹å ã«è¿œå ãæ°åŠé¢æ°ãªã©ã«äŸ¿å©ïŒã®æ¡åŒµã¡ãœãããã³ã³ãã€ã«æã«ã¯ã©ã¹/å/ã¡ãœãããå€æŽïŒããšãã°ãä»ã®ã¡ãœãããŸãã¯ããããã£ãè¿œå ããããã«ã³ã³ãã€ã«æã«åŒã³åºãããã¡ãœããïŒ T4ãã³ãã¬ãŒãã䜿çšããŠã³ãŒããçæãã代ããã«ãRubyã®eigenclassã«äŒŒãã¯ã©ã¹ïŒã
- 次ã®ãããªåçŽãªæ§é ã䜿çšããŠãèšèªãªããžã§ã¯ã ïŒã¯ã©ã¹ãããããã£ãã¡ãœããïŒ ãžã®åç
§ãè¡šãçµã¿èŸŒã¿ã®ãªãã©ã«ãŸãã¯å ïŒsymbol LinkToMyMethod =
@ MyClass.MyMethod; LinqåŒã䜿çšãã代ããã«ã ããã«ãããINotifyPropertyChangedãªã©ã®ã³ãŒãã®å ç¢æ§ãåäžããããWPFïŒçŸåšã®ç¶æ ã§ã¯éè€ã³ãŒããå€ãå«ãŸããïŒãªã©ã®ãã¹ãŠã®ããããã£ããŒã¹ã®ã·ã¹ãã ãç°¡çŽ åãããŸãã
äž»ãªã¢ã€ãã¢ã¯ã C ++ããåé€ãããããCïŒã«è¿œå ããå¿ èŠãå°ãªãããããã®ãããªçµ±åã·ã¹ãã ã®æ©èœãå®å šã«æŽ»çšããéçºè ã®çç£æ§ãåäžãããé¢é£ããããã©ãŒãã³ã¹ã®äœäžãæãããšã§ãã C ++ããã以äžã®ãã¹ãŠããã§ã«æäŸããŠãããšäž»åŒµãã人ããããããããŸãããããããC ++ãïŒæ§æã®ç¹ã§ïŒä¹±éã§ãããã»ãšãã©ã®éçºè ã«ãšã£ãŠå±éºãªçç±ã§ãã ãã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã§å®å šã§ãªãã³ãŒãã絶察ã«èš±å¯ããŸããããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã«ã¯æ¬åœã«å¿ èŠãªå Žæãæ確ã«å®çŸ©ãããŠããŸãïŒããã¯ãããŒã§è¡ãããããã«ããããã®å Žæãã³ãŒãã§æ瀺çã«ç€ºãããŠããå Žåãä¿®æ£ããããã¡ã¢ãªã®åé¡ã«ã€ãªãããŸãïŒ asmïŒã ã³ãŒãå ã®ãã®ãããªé åã远跡ããæ¹ããã©ãã«ã§ãããããããã£ãšç°¡åã§å®å šã§ãã
次ã¯ïŒ
Microsoftãäžè¬ããç¹å®ãžã®éãéžæããWinRTã®ãªãªãŒã¹ããå§ããŠããã¹ãŠã®èšèªãšã·ã³ãã«ãªèšèªéçžäºäœçšã®ããã®ãŠãããŒãµã«APIãæäŸããããšãé¡ã£ãŠããŸãã ãããŠã圌ãã¯åœŒãã®OSã®æ¬¡ã®ããŒãžã§ã³ã§ããããã¹ãŠã®ããé«åºŠãªæ©èœãæ瀺ããŸãã ããããããã¯çæ³çãªç¶æ³ã§ãããMicrosoftããããåŠçã§ãããã©ããã確èªããããšã¯èå³æ·±ãã§ãããã WP8ã®.NETã¢ããªã±ãŒã·ã§ã³ã«ã¯ã¯ã©ãŠãã§ã®ã³ã³ãã€ã«ã®å©ç¹ããããšæè¿çºè¡šãããšããŠããããã«ã€ããŠã¯ãŸã ã»ãšãã©ããããŸãããããã¯ãé©å¿ãããNGENã ãã§ãïŒããã¯ãããã©ãŒãã³ã¹æåã§ã¯ãªããã³ãŒãã«éåžžã«äŒŒãŠããŸãJITãçæããŸãïŒãŸãã¯RedHawkã³ã³ãã€ã©ã¯ãŸã å°å ¥ãããŠããŸãããïŒ
C ++ã³ã³ãã€ã©ãJITãã¬ããŒãžã³ã¬ã¯ã¿ãããã³é¢é£ãããã¹ãŠã®RïŒDãããžã§ã¯ãã®é·å¹Žã®éçºãèãããšãMicrosoftã«ã¯ãããã空çœã®ãã®ããããŸãã
èŠçŽãããšã.NETã¯æ¶æ» ãã管çãããïŒã»ãã¥ãªãã£ãšçç£æ§ïŒãšç®¡çãããŠããªãïŒããã©ãŒãã³ã¹ïŒãå¯æ¥ã«æ¥ç¶ããããããçµ±åãããããã©ãŒãã³ã¹æåã®å ±æç°å¢ã«éãè²ãå¿ èŠããããŸãã ãããŠãããã¯WinRTéçºã®æ¬¡ã®ã©ãŠã³ãã®æ§é çãªéšåã§ãªããã°ãªããŸããã