Javaä»®æ³ãã·ã³ïŒJVMïŒã¢ãŒããã¯ãã£ã®çè§£
Javaä»®æ³ãã·ã³ïŒJVMïŒã¢ãŒããã¯ãã£ãæ¢æ±ãããã®ã³ã³ããŒãã³ããçè§£ããJavaã¢ããªã±ãŒã·ã§ã³ãå¹ççã«å®è¡ããããã«ããããã©ã®ããã«é£æºããŠããããçºèŠããã

Javaä»®æ³ãã·ã³ïŒJVMïŒã¯ Java å®è¡ç°å¢ã®éèŠãªã³ã³ããŒãã³ãã§ãããJavaãã€ãã³ãŒãã»ããã°ã©ã ã®å®è¡ãæ åœãããJVMã¯ããã©ãããã©ãŒã ã«äŸåããªãäžè²«ãããœãããŠã§ã¢ç°å¢ãæäŸããJavaã¢ããªã±ãŒã·ã§ã³ãããŸããŸãªããŒããŠã§ã¢ã»ã¢ãŒããã¯ãã£ããªãã¬ãŒãã£ã³ã°ã»ã·ã¹ãã äžã§ã·ãŒã ã¬ã¹ã«å®è¡ã§ããããã«ããŸãã
Javaã¢ããªã±ãŒã·ã§ã³ã¯éåžžãJavaããã°ã©ãã³ã°èšèªã§æžããããã€ãã³ãŒã圢åŒïŒ*.classãã¡ã€ã«ïŒã«ã³ã³ãã€ã«ãããJVMã«ãã£ãŠããŒãããå®è¡ããããJVMã¯ããã€ãã³ãŒããåºç€ãšãªããªãã¬ãŒãã£ã³ã°ã»ã·ã¹ãã ãšããŒããŠã§ã¢ã«åºæã®ãã€ãã£ãã»ãã·ã³ã»ã³ãŒãã«å€æãããããJavaã¢ããªã±ãŒã·ã§ã³ã倿Žããããšãªãè€æ°ã®ãã©ãããã©ãŒã äžã§å®è¡ããããšãã§ããããã®ããã»ã¹ã¯ããã°ãã°ãWrite Once, Run AnywhereãååãšåŒã°ããã
ããã«ãJVMã¯ã¡ã¢ãªç®¡çãã¬ããŒãžã»ã³ã¬ã¯ã·ã§ã³ãå®è¡æã®æé©åãè¡ããJavaããã°ã©ã ã®å¹ççãªå®è¡ã«äžå¯æ¬ ãªã³ã³ããŒãã³ããšãªã£ãŠããã
JVMã³ã³ããŒãã³ããšãã®æ©èœ
JVMã¢ãŒããã¯ãã£ã¯ãJavaã¢ããªã±ãŒã·ã§ã³ã®ã©ã€ããµã€ã¯ã«ã管çããããã«é£æºããããã€ãã®ã³ã³ããŒãã³ãã§æ§æãããŠããããããã®ã³ã³ããŒãã³ãã«ã¯ä»¥äžãå«ãŸããïŒ
- ã¯ã©ã¹ããŒããŒïŒ ã¯ã©ã¹ããŒããŒïŒ ã¯ã©ã¹ããŒããŒã¯ããã£ã¹ã¯ããJVMã¡ã¢ãªãŒãžã®Javaã¯ã©ã¹ã®ããŒããã¯ã©ã¹ã®äŸåé¢ä¿ã®è§£æ±ºãããã°ã©ã å®è¡äžã®ã¯ã©ã¹ã®åæåãæ åœããŸããã¯ã©ã¹ã»ããŒããŒã¯ãããŒãã¹ãã©ããã»ã¯ã©ã¹ã»ããŒããŒããå§ãŸãããšã¯ã¹ãã³ã·ã§ã³ã»ã¯ã©ã¹ã»ããŒããŒãã¢ããªã±ãŒã·ã§ã³ã»ã¯ã©ã¹ã»ããŒããŒãšç¶ããããªã²ãŒã·ã§ã³éå±€ã«åŸããŸãã
- ã©ã³ã¿ã€ã ã»ããŒã¿é åïŒ JVMã¯ãããã°ã©ã å®è¡äžã«ã©ã³ã¿ã€ã ã»ããŒã¿ã»ãšãªã¢ãšåŒã°ããã¡ã¢ãªãŒç©ºéãå²ãåœãŠãããããã®ã¡ã¢ãªé åã«ã¯ãããŒããã¹ã¿ãã¯ãã¡ãœããé åã宿°ããŒã«ãPCã¬ãžã¹ã¿ãå«ãŸããã¢ããªã±ãŒã·ã§ã³ã®ã©ã€ããµã€ã¯ã«ã®ããŸããŸãªå±é¢ã§å¿ èŠãªããŒã¿ãæ ŒçŽãããã
- å®è¡ãšã³ãžã³ïŒ å®è¡ãšã³ãžã³ã¯ãJavaãã€ãã³ãŒãã®å®è¡ãæ åœããã³ã¢ã»ã³ã³ããŒãã³ãã§ãããå®è¡ãšã³ãžã³ã¯ãã€ãã³ãŒããè§£éããå®è¡æã«ãã€ãã£ãã»ãã·ã³ã»ã³ãŒãã«å€æãããããã«ã¯ãã€ã³ã¿ãŒããªã¿ãŒããžã£ã¹ãã»ã€ã³ã»ã¿ã€ã ïŒJITïŒã³ã³ãã€ã©ãŒãã¬ãŒãããžã»ã³ã¬ã¯ã¿ãŒãªã©ã®ã³ã³ããŒãã³ããå«ãŸããã
以äžã®ã»ã¯ã·ã§ã³ã§ã¯ãJVMã¡ã¢ãªãŒç®¡çã®è©³çްãšãJVMã¢ãŒããã¯ãã£ãŒãæ§æããæ§ã ãªã¡ã¢ãªãŒç©ºéã«ã€ããŠæ·±ãæãäžããŠãããŸãã
JVMã¡ã¢ãªãŒç®¡ç
å¹ççãªã¡ã¢ãªãŒç®¡çã¯ãJavaã¢ããªã±ãŒã·ã§ã³ã®å¹ççãªå®è¡ã«è²¢ç®ããJVMã¢ãŒããã¯ãã£ãŒã®äžå¯æ¬ ãªåŽé¢ã§ããJVMã¯ãã©ã³ã¿ã€ã ã»ããŒã¿é åãšåŒã°ããããŸããŸãªã¡ã¢ãªç©ºéãå²ãåœãŠãŠãããã°ã©ã å®è¡äžã®ããŸããŸãªã¿ã€ãã®ããŒã¿æ ŒçŽãšæäœãåŠçãããJVMã®äž»ãªã¡ã¢ãªãŒé åã«ã¯ã以äžã®ãã®ãããïŒ
- ããŒãïŒ ããŒãïŒ ããŒãã¯JVMã§æå€§ã®ã¡ã¢ãªãŒé åã§ãã¢ããªã±ãŒã·ã§ã³å ã®ãã¹ãŠã®ã¹ã¬ããã§å ±æããããããã°ã©ã ã®å®è¡äžã«äœæãããã€ã³ã¹ã¿ã³ã¹åããããªããžã§ã¯ããé åãæ ŒçŽãããããŒãã¯ããã«ãè¥ãäžä»£ããšãå€ãäžä»£ãã®é åã«åãããŠãããã€ã³ã°ã»ãžã§ãã¬ãŒã·ã§ã³ã»ãšãªã¢ã«ã¯æ°ããäœæããããªããžã§ã¯ããæ ŒçŽããããªãŒã«ãã»ãžã§ãã¬ãŒã·ã§ã³ã»ãšãªã¢ã«ã¯è€æ°ã®ã¬ããŒãžã»ã³ã¬ã¯ã·ã§ã³ã»ãµã€ã¯ã«ãçãæ®ã£ããªããžã§ã¯ããæ ŒçŽãããã
- ã¹ã¿ãã¯ïŒ JVMã¯ã¹ã¬ããããšã«åå¥ã®ã¹ã¿ãã¯ãäœæãããã¹ã¿ãã¯ã«ã¯ãã¡ãœããåŒã³åºãæ å ±ãããŒã«ã«å€æ°ãããã°ã©ã å®è¡äžã®èšç®ã®äžéçµæãæ ŒçŽããããã¹ã¿ãã¯ã®åãšã³ããªãŒã¯ã¹ã¿ãã¯ã»ãã¬ãŒã ãšåŒã°ããJVMã¯ã¡ãœããåŒã³åºãããšã«ã¹ã¿ãã¯ã»ãã¬ãŒã ãç¬ç«ããŠç®¡çããã
- ã¡ãœããã»ãšãªã¢ïŒ ã¡ãœããã»ãšãªã¢ã¯ãã¢ããªã±ãŒã·ã§ã³å ã®ãã¹ãŠã®ã¹ã¬ããã§å ±æãããã¡ãœããåã倿°åã宿°å€ãªã©ã®ã¯ã©ã¹ã»ããŒã¿ãæ ŒçŽããŸããã¡ãœããã»ãšãªã¢ã«ã¯å®æ°ããŒã«ãå«ãŸãããã€ãã³ãŒãã§äœ¿çšããã宿°å€ãã·ã³ããªãã¯åç §ãä¿æããŸãã
- PCã¬ãžã¹ã¿ïŒ PCïŒããã°ã©ã ã»ã«ãŠã³ã¿ïŒã¬ãžã¹ã¿ã¯ãåã¹ã¬ããã®çŸåšå®è¡äžã®JVMåœä»€ã®ã¢ãã¬ã¹ãæ ŒçŽããã¡ã¢ãªé åã§ããPCã¬ãžã¹ã¿ã¯ãJVMãæ¬¡ã«ã©ã®åœä»€ãå®è¡ãããã远跡ããã®ã«åœ¹ç«ã€ã
ãããã®ã¡ã¢ãªãŒé åãšã¯å¥ã«ãJVMã¯ã¬ããŒãžã»ã³ã¬ã¯ã¿ãŒãæ¡çšããŠãããã¬ããŒãžã»ã³ã¬ã¯ã¿ãŒã¯ãäžèŠã«ãªã£ããªããžã§ã¯ãã®ã¡ã¢ãªãŒãèªåçã«å²ãåœãŠè§£é€ãããããã¡ã¢ãªãŒã»ãªãŒã¯ãæžããããªãœãŒã¹ã®äœ¿çšãæé©åããã
èŠçŽãããšãJVMã¢ãŒããã¯ãã£ã¯ãJavaã¢ããªã±ãŒã·ã§ã³ã®å®è¡ãæé©åããå¹ççãªãªãœãŒã¹äœ¿çšãä¿èšŒãããæç¢ºã«å®çŸ©ãããã¡ã¢ãªç®¡çã·ã¹ãã ãåããŠãããJVMã®ã³ã³ããŒãã³ããšãã®æ©èœãçè§£ããããšã§ãéçºè ã¯Javaã¢ããªã±ãŒã·ã§ã³ãäœæããå¯èœãªéãæé«ã®ããã©ãŒãã³ã¹ãåŸãããããã«æé©åããããšãã§ããŸãã
JVMã¯ã©ã¹ããŒããŒ
ã¯ã©ã¹ããŒããŒã¯ãJavaã¯ã©ã¹ãJVMã¡ã¢ãªã«ããŒãããJavaä»®æ³ãã·ã³ïŒJVMïŒã®éèŠãªã³ã³ããŒãã³ãã§ããããŒãããªã³ã¯ãåæåãšãã3ã€ã®éèŠãªæŽ»åãæ åœããŸãããããã®æŽ»åã詳ããèŠãŠãããã
ããŒã
ããŒããšã¯ããã£ã¹ã¯ããã¯ã©ã¹ã»ãã¡ã€ã«ããã§ããããŠJVMã¡ã¢ãªãŒã«ããŒãããããšã§ããã¯ã©ã¹ããŒããŒã¯ãããã±ãŒãžåãšã¯ã©ã¹åãå«ãå®å šä¿®é£Ÿã¯ã©ã¹åã䜿çšããŠãå¿ èŠãªã¯ã©ã¹ã»ãã¡ã€ã«ãæ¢ããŸããJVMã«ã¯3çš®é¡ã®ã¯ã©ã¹ããŒããŒãããïŒ
- ããŒãã¹ãã©ããã»ã¯ã©ã¹ããŒããŒïŒBootstrap ClassloaderïŒïŒ ããŒãã¹ãã©ããã»ã¯ã©ã¹ããŒããŒïŒããã¯JVMã®ãã«ãã€ã³ã»ã¯ã©ã¹ããŒããŒã§ã
rt.jarãã¡ã€ã«ããjava.lang.Objectããã®ä»ã®ã©ã³ã¿ã€ã ã»ã¯ã©ã¹ãªã©ã®ã³ã¢Javaã¯ã©ã¹ãããŒãããŸãã - ãšã¯ã¹ãã³ã·ã§ã³ã»ã¯ã©ã¹ããŒããŒïŒ ãã®ã¯ã©ã¹ããŒããŒã¯ã远å ã®Javaã©ã€ãã©ãªãŒãšãã¬ãŒã ã¯ãŒã¯ãå«ãJDKã®
extãã£ã¬ã¯ããªãŒããã¯ã©ã¹ãããŒããã圹å²ãæãããŸãã - ã·ã¹ãã /ã¢ããªã±ãŒã·ã§ã³ã»ã¯ã©ã¹ããŒããŒïŒ ããã©ã«ãã®ã¯ã©ã¹ããŒããŒã¯ãã¢ããªã±ãŒã·ã§ã³ã®ã¯ã©ã¹ãã¹ããã¯ã©ã¹ãããŒãããŸããã¯ã©ã¹ãã¹ã¯ãJavaã¢ããªã±ãŒã·ã§ã³ã®å®è¡æã«
-cpãŸãã¯-classpathãªãã·ã§ã³ã䜿çšããŠæå®ã§ããŸãã
ã¯ã©ã¹ã»ããŒãã¯ãããŒãã¹ãã©ããã»ã¯ã©ã¹ã»ããŒãããå§ãŸãããšã¯ã¹ãã³ã·ã§ã³ã»ã¯ã©ã¹ã»ããŒããã·ã¹ãã ïŒã¢ããªã±ãŒã·ã§ã³ã»ã¯ã©ã¹ã»ããŒããžãšéããŠãããããªã²ãŒã·ã§ã³éå±€ã«åŸããŸãã

ç»åãœãŒã¹Javaãã¥ãŒããªã¢ã«ã»ãããã¯ãŒã¯
ãªã³ã¯
ãªã³ã¯ã»ããã»ã¹ã¯ãã¯ã©ã¹ã®æ¥ç¶ã確ç«ããäžæŽåããšã©ãŒããã§ãã¯ããŸãããªã³ã¯ã«ã¯3ã€ã®ã¹ãããããããŸãïŒ
- æ€èšŒïŒ æ€èšŒïŒ ãã®ã¹ãããã§ã¯ãJVMã¯ããŒããããã¯ã©ã¹ã»ãã¡ã€ã«ãJavaèšèªä»æ§ã§æå®ãããæ§é ãšå¶çŽã«æºæ ããŠããããšã確èªããŸããäžæ£ãªåœ¢åŒãæªæã®ããã¯ã©ã¹ã»ãã¡ã€ã«ã¯ããã®æ®µéã§æåŠãããŸãã
- æºåïŒ JVMã¯ãã¯ã©ã¹ã®å®è¡ã«å¿ èŠãªéçãã£ãŒã«ããã¡ãœããããã®ä»ã®ãªãœãŒã¹ãåæåããŸããJVMã¯ãéçãã£ãŒã«ãã«ããã©ã«ãå€ãå²ãåœãŠããããã®ããã«ã¡ã¢ãªãŒãå²ãåœãŠãŸãã
- è§£æ±ºïŒ ãã®ã¹ãããã§ã¯ãã¯ã©ã¹ã»ãã¡ã€ã«å ã®ã·ã³ããªãã¯åç §ããã¡ãœããã»ã¢ãã¬ã¹ããã£ãŒã«ãã»ãªãã»ããã®ãããªçŽæ¥åç §ã«çœ®ãæããŠè§£æ±ºããŸãããã®åŠçã¯å®è¡æã«åçã«è¡ãããŸãã
åæå
åæåã¯ã¯ã©ã¹ããŒããŒã»ããã»ã¹ã®æåŸã®ã¹ãããã§ãããã®æ®µéã§ãJVMã¯ã¯ã©ã¹å ã®éçã³ãŒãã»ãããã¯ãå®è¡ããã¯ã©ã¹ã»ãã¡ã€ã«ã§æå®ãããåæå€ãéçãã£ãŒã«ãã«å²ãåœãŠãŸãããŸãããã«ãã¹ã¬ããç°å¢ã§ãã£ãŠããéçåæåãäžåºŠã ãè¡ãããããã«ããŸãã
JITã³ã³ãã€ã©ãšã¬ããŒãžã»ã³ã¬ã¯ã¿
ãžã£ã¹ãã»ã€ã³ã»ã¿ã€ã ïŒJITïŒã³ã³ãã€ã©ãšã¬ãŒãããžã»ã³ã¬ã¯ã¿ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãå€§å¹ ã«æé©åããã·ã¹ãã ã»ãªãœãŒã¹ã管çããJVMã®å¿ é ã³ã³ããŒãã³ãã§ãã
JITã³ã³ãã€ã©ãŒ
ãžã£ã¹ãã»ã€ã³ã»ã¿ã€ã ïŒJITïŒã³ã³ãã€ã©ãŒã¯ãå®è¡æã«Javaãã€ãã³ãŒãããã€ãã£ãã»ãã·ã³ã»ã³ãŒãã«å€æãã圹å²ãæãããŸãããã®ããã»ã¹ã¯ãJavaã¢ããªã±ãŒã·ã§ã³ã®å®è¡é床ãæé©åããŸããJITã³ã³ãã€ã©ãŒã¯ãé »ç¹ã«åŒã³åºãããã¡ãœãããã³ã³ãã€ã«ããã³ã³ãã€ã«ãããã³ãŒãããã£ãã·ã¥ããå°æ¥ã®å®è¡ã§åå©çšããããšã§ããã€ãã³ãŒããç¹°ãè¿ãè§£éãããªãŒããŒããããåæžããã
JVMã¯ãé »ç¹ã«åŒã³åºãããã¡ãœãããç¹å®ããããã«ããããã¹ãããæ€åºãã¡ãœããã䜿çšããããããã¹ãããã®ãããå€ã«éãããšãJITã³ã³ãã€ã©ãŒãèµ·åãããã€ãã³ãŒãããã€ãã£ãã»ãã·ã³ã»ã³ãŒãã«ã³ã³ãã€ã«ãããCPUã¯ãã®ã³ã³ãã€ã«ãããã³ãŒããçŽæ¥å®è¡ãããããå®è¡æéãå€§å¹ ã«ççž®ãããã
ã¬ããŒãžã»ã³ã¬ã¯ã¿ãŒ
ã¬ããŒãžã»ã³ã¬ã¯ã¿ãŒïŒGCïŒã¯ãã¡ã¢ãªãŒç®¡çã®èªååãæ ãJVMã®éèŠãªã³ã³ããŒãã³ãã§ãããã¢ããªã±ãŒã·ã§ã³ããã¯ãå¿ èŠãšããªãããããã¯åç §ããªããªããžã§ã¯ãããã¡ã¢ãªããã¢ãã±ãŒãããããã®ããã»ã¹ã¯ãã¡ã¢ãªãŒã»ãªãŒã¯ãæå°éã«æããJavaã¢ããªã±ãŒã·ã§ã³ã®ãªãœãŒã¹å©çšãæé©åãããJVMã¯äžä»£ã¬ããŒãžã»ã³ã¬ã¯ã·ã§ã³æŠç¥ã䜿çšããããŒãã»ã¡ã¢ãªãŒãã€ã³ã°äžä»£ãšãªãŒã«ãäžä»£ã«åå²ãããã€ã³ã°äžä»£ã¯ããã«ããšãã³ç©ºéãçåè 空é0ïŒS0ïŒãçåè 空é1ïŒS1ïŒã«çްååãããã
äžä»£ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã®åºæ¬çãªèãæ¹ã¯ãã»ãšãã©ã®ãªããžã§ã¯ãã¯å¯¿åœãçããäœæåŸããã«ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãããå¯èœæ§ãé«ããšããããšã§ãããããã£ãŠãè¥ãäžä»£ã§é »ç¹ã«ã¡ã¢ãªãå²ãåœãŠããå²ãåœãŠè§£é€ãããããããšã§ãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ããã»ã¹ãæé©åããŸããã¬ããŒãžã»ã³ã¬ã¯ã¿ãŒã¯ãããŒã¯ã»ã¹ãŠã£ãŒãã»ã³ã³ãã¯ãïŒMark-Sweep-CompactïŒãã³ããŒïŒCopyingïŒããžã§ãã¬ãŒã·ã§ãã«ã»ã³ã¬ã¯ã·ã§ã³ïŒGeneration CollectionïŒãšãã£ãæ§ã ãªã¢ã«ãŽãªãºã ã䜿ã£ãŠãããŒãã»ã¡ã¢ãªå ã®æªäœ¿çšãªããžã§ã¯ããã¯ãªãŒã³ã¢ããããã
JVMã©ã³ã¿ã€ã ã»ããŒã¿é å
JVMã©ã³ã¿ã€ã ã»ããŒã¿é åã¯ãããã°ã©ã å®è¡äžã«ããŒã¿ãæ ŒçŽããããã«JVMã«ãã£ãŠå²ãåœãŠãããã¡ã¢ãªç©ºéã§ããããããã®ããŒã¿é åã¯ããªãœãŒã¹ã管çããJavaã¢ããªã±ãŒã·ã§ã³ã®å¹ççãªå®è¡ãä¿é²ããããã«äžå¯æ¬ ã§ãããJVMã®äž»ãªã©ã³ã¿ã€ã ã»ããŒã¿é åã«ã¯ãããŒããã¹ã¿ãã¯ãã¡ãœããé åã宿°ããŒã«ãPCã¬ãžã¹ã¿ããããŸãã
ããŒã
ããŒãã¯ããªããžã§ã¯ããšã€ã³ã¹ã¿ã³ã¹å€æ°ãæ ŒçŽããJVMã®å ±æã¡ã¢ãªé åã§ãããæå€§ã®ã¡ã¢ãªãŒé åã§ãããã¬ããŒãžã»ã³ã¬ã¯ã¿ãŒã®ã»ã¯ã·ã§ã³ã§èª¬æããããã«ãå¹ççãªã¬ããŒãžã»ã³ã¬ã¯ã·ã§ã³ã®ããã«äžä»£ã«åå²ãããŠããŸããããŒãå ã®ãªããžã§ã¯ãã¯ã°ããŒãã«ã«ã¢ã¯ã»ã¹ã§ããããããã«ãã¹ã¬ããã»ã¢ããªã±ãŒã·ã§ã³ã§ã¯ããŒã¿ã®äžæŽååé¡ãé¿ããããã«ã¹ã¬ããåæã¡ã«ããºã ãå¿ èŠãšãªãã
ã¹ã¿ãã¯
ã¹ã¿ãã¯ã¯ãããŒã«ã«å€æ°ãšã¡ãœããåŒã³åºãæ å ±ãæ ŒçŽããã¡ã¢ãªé åã§ããJVMã®åã¹ã¬ããã¯ã¹ã¿ãã¯ãæã¡ãã¹ã¿ãã¯ã«æ ŒçŽãããããŒã¿ã¯å¯Ÿå¿ããã¹ã¬ããã®ã¹ã³ãŒãå ã§ã®ã¿ã¢ã¯ã»ã¹ã§ããããã®ãããã¹ã¿ãã¯ã®ã¡ã¢ãªãŒã»ã¢ã¯ã»ã¹ã«ã¹ã¬ããåæã¯å¿ èŠãªããã¹ã¿ãã¯ã¯ãããŒã¿ã®æ ŒçŽãšåãåºãã®ããã®LIFOïŒLast-In-First-OutïŒæ¹åŒã容æã«ããã¡ãœããã»ã³ãŒã«ã®å®è¡ç®¡çãå¹ççã«ããŸãã
ã¡ãœããé å
ã¡ãœããé åã¯ãããŒããããåã¯ã©ã¹ã®ã¡ã¿ããŒã¿ã宿°ããŒã«æ å ±ãéçãã£ãŒã«ããæ ŒçŽããå ±æã¡ã¢ãªç©ºéã§ãããã®é åã¯ãã¯ã©ã¹é¢é£ã®æ å ±ã管çãããã€ãããã¯ã»ãªã³ã¯ãšãã€ãã³ãŒãå®è¡ã«å¿ èŠãªããŒã¿ãæäŸããããã«éèŠã§ãã
宿°ããŒã«
宿°ããŒã«ã¯ãJava ãã€ãã³ãŒãã«ãã£ãŠåç §ãããæååãªãã©ã«ãã¯ã©ã¹åãã¡ãœããåãªã©ã®å®æ°ãæ ŒçŽããã¡ãœããé åã®ããŒã¿æ§é ã§ãããã¹ãŠã®å®æ°å€ã®äžå çãªä¿ç®¡å ŽæãšããŠæ©èœãããªã³ã¯åŠçäžã®ã·ã³ããªãã¯åç §ã®è§£æ±ºã«åœ¹ç«ã¡ãŸãã
PCã¬ãžã¹ã¿
ããã°ã©ã ã»ã«ãŠã³ã¿ïŒPCïŒã¬ãžã¹ã¿ã¯ãåã¹ã¬ããã®çŸåšå®è¡äžã®Javaãã€ãã³ãŒãåœä»€ã®ã¢ãã¬ã¹ãæ ŒçŽããã¡ã¢ãªé åã§ããPCã¬ãžã¹ã¿ã¯ãã¹ã¬ããã®å®è¡ã管çããJVMå ã®åœä»€å®è¡é åºãç¶æããã®ã«åœ¹ç«ã¡ãŸããPCã¬ãžã¹ã¿ã«ã¯ã次ã«å®è¡ããããã€ãã³ãŒãåœä»€ã®ã¡ã¢ãªã»ã¢ãã¬ã¹ãæ ŒçŽãããJVMãJavaãã€ãã³ãŒãåœä»€ãåŠçãããšããã®å€ãé©å®æŽæ°ãããŸãã
JVMã¢ãŒããã¯ãã£ã®å©ç¹ãšéç
Javaä»®æ³ãã·ã³ïŒJVMïŒã¢ãŒããã¯ãã£ã¯å€ãã®å©ç¹ãæäŸããéçºè ã«ãšã£ãŠäººæ°ã®ããéžæè¢ãšãªã£ãŠãããããããã©ã®ãããªã·ã¹ãã ã«ãå¶éããªãããã§ã¯ãããŸããããã®ã»ã¯ã·ã§ã³ã§ã¯ãJVMã¢ãŒããã¯ãã£ã®å©ç¹ã𿬠ç¹ã®æŠèŠã説æããŸãã
JVMã¢ãŒããã¯ãã£ã®å©ç¹
- ãã©ãããã©ãŒã éäŸåæ§ïŒ JVMã®æã倧ããªå©ç¹ã®1ã€ã¯ããã©ãããã©ãŒã ã®ç¬ç«æ§ã§ãããJVMã®ãããã§ãJavaã¢ããªã±ãŒã·ã§ã³ã¯ã³ãŒãã®ä¿®æ£ãå¿ èŠãšããã«ãããŸããŸãªãã©ãããã©ãŒã äžã§å®è¡ã§ãããJVMã¯ãJavaãã€ãã³ãŒããåºç€ãšãªããã©ãããã©ãŒã åºæã®ãã€ãã£ãã»ãã·ã³ã»ã³ãŒãã«å€æããç°ãªãããŒããŠã§ã¢ããªãã¬ãŒãã£ã³ã°ã»ã·ã¹ãã éã§ã·ãŒã ã¬ã¹ãªå®è¡ãä¿èšŒããã
- ã¹ã±ãŒã©ããªãã£ïŒ JVMã¯ããã«ãã¹ã¬ããæ©èœãšã¡ã¢ãªç®¡çæ©èœã«ãããå€§èŠæš¡ãªã¢ããªã±ãŒã·ã§ã³ãå¹ççã«åŠçã§ããããã«èšèšãããŠããããããã®ç¹æ§ã«ãããéçºè ã¯ããã©ãŒãã³ã¹ãæãªãããšãªããå€ãã®ãŠãŒã¶ãŒã«å¯Ÿå¿ã§ããã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããç¶æããããšãã§ããŸãã
- ã¡ã¢ãªç®¡çïŒ JVMã®ã¡ã¢ãªç®¡çã·ã¹ãã ã¯ãã·ã¹ãã ã»ãªãœãŒã¹ã®æé©ãªå©çšãå¯èœã«ãããããŸããŸãªã¡ã¢ãªé åïŒããŒããã¹ã¿ãã¯ãã¡ãœããé åãPCã¬ãžã¹ã¿ïŒãéããŠã¡ã¢ãªã管çããäžèŠã«ãªã£ããªããžã§ã¯ããå æããã¡ã¢ãªãèªåçã«ååããã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãæäŸããããšã§ãã¡ã¢ãªãªãŒã¯ãæžãããã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãåäžãããŸãã
- æé©åããããã€ãã³ãŒãå®è¡ïŒ JVMã¯ããžã£ã¹ãã»ã€ã³ã»ã¿ã€ã ïŒJITïŒã³ã³ãã€ã«ã䜿çšããŠãJavaãã€ãã³ãŒãã®å®è¡ãæé©åããŸããJITã³ã³ãã€ã©ãŒã¯ãå®è¡æã«ãã€ãã³ãŒãããã€ãã£ãã»ãã·ã³ã»ã³ãŒãã«å€æããé »ç¹ã«åŒã³åºãããã¡ãœãããã³ã³ãã€ã«ããå°æ¥ã®äœ¿çšã®ããã«ã³ã³ãã€ã«ãããã³ãŒãããã£ãã·ã¥ããããšã«ãã£ãŠãJavaã¢ããªã±ãŒã·ã§ã³ã®å šäœçãªå®è¡é床ãåäžãããã
- ã¬ããŒãžã»ã³ã¬ã¯ã·ã§ã³ïŒ JVMã®èªååãããã¬ããŒãžã»ã³ã¬ã¯ã·ã§ã³ã¯ãæªäœ¿çšã®ãªããžã§ã¯ãã«ãã£ãŠå æãããŠããã¡ã¢ãªç©ºéãå²ãåœãŠè§£é€ããããšã«ãã£ãŠãå¹ççã«ã¡ã¢ãªã管çãããã¬ããŒãžã»ã³ã¬ã¯ã·ã§ã³ã¯ãJavaã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãåäžãããéçºè ã®ã¡ã¢ãªãŒç®¡çã¿ã¹ã¯ãç°¡çŽ åããã
JVMã¢ãŒããã¯ãã£ã®éç
- ããã©ãŒãã³ã¹ã®ãªãŒããŒãããïŒ JVMã¯ãè§£éãšã³ã³ãã€ã«ã®ããã»ã¹ã«ãããããã©ãŒãã³ã¹ã®ãªãŒããŒããããçºçãããããã€ãã³ãŒããè§£éããå®è¡æã«ãã€ãã£ãã»ãã·ã³ã»ã³ãŒãã«å€æãããšããã·ã³ã»ã³ãŒãã«çŽæ¥ã³ã³ãã€ã«ããèšèªã§æžãããã¢ããªã±ãŒã·ã§ã³ãããå®è¡é床ãé ããªãå¯èœæ§ãããã
- ã¡ã¢ãªäœ¿çšéïŒ ã¯ã©ã¹ããŒããŒãå®è¡ãšã³ãžã³ãã©ã³ã¿ã€ã ã»ããŒã¿ã»ãšãªã¢ãªã©ã®JVMã®ããŸããŸãªã³ã³ããŒãã³ãã¯ãã·ã¹ãã ã»ã¡ã¢ãªãæ¶è²»ããŸãããã®ã¡ã¢ãªäœ¿çšéã®å¢å ã¯ããªãœãŒã¹ã«å¶çŽã®ããããã€ã¹äžã§å®è¡ãããã¢ããªã±ãŒã·ã§ã³ã«åœ±é¿ãäžããããã©ãŒãã³ã¹ã®äœäžãæãå¯èœæ§ããããŸãã
- ã¬ããŒãžã»ã³ã¬ã¯ã·ã§ã³ã®äžå ·åïŒ JVMã®ã¬ããŒãžã»ã³ã¬ã¯ã·ã§ã³æ©èœã¯å€ãã®å©ç¹ãæäŸããŸãããæ£ããæé©åãããŠããªãå Žåãããã©ãŒãã³ã¹ã®äžèª¿ãåŒãèµ·ããå¯èœæ§ããããŸããäŸãã°ãã¬ããŒãžã»ã³ã¬ã¯ã¿ã¯ãã¬ããŒãžã»ã³ã¬ã¯ã·ã§ã³ã»ãµã€ã¯ã«ãå®å šã«å®è¡ããããã«ãã¢ããªã±ãŒã·ã§ã³ã®å®è¡ãäžæåæ¢ããããšããããŸãããããã®äžæåæ¢ã¯ãç¹ã«é«ã¹ã«ãŒãããã®ã·ããªãªã«ãããŠãã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ã«å€§ããªåœ±é¿ãäžããå¯èœæ§ããããŸãã
JVMãšAppMaster.io ïŒNo-code éçºã®åŒ·å
AppMaster.ioã¯ãããã¯ãšã³ãããŠã§ããã¢ãã€ã«ã»ã¢ããªã±ãŒã·ã§ã³ãè¿ éã«äœæããããã«èšèšããã匷å㪠ããŒã³ãŒãã» ãã©ãããã©ãŒã ã§ãããã®ãã©ãããã©ãŒã ã§ã¯ãçŽæç㪠ãã©ãã°ã»ã¢ã³ãã»ããããã»ã€ã³ã¿ãŒãã§ãŒã¹ã䜿çšããŠã ããŒã¿ã¢ãã«ãããžãã¹ã»ããžãã¯ããŠãŒã¶ãŒã»ã€ã³ã¿ãŒãã§ãŒã¹ãèŠèŠçã«äœæããããšãã§ããŸãã
èŠä»¶ã倿Žããããã³ã«ã¢ããªã±ãŒã·ã§ã³ããŒãããåçæããããšã§ãã¢ããªã±ãŒã·ã§ã³ã®çæãã³ã³ãã€ã«ããããã€ãåŠçããæè¡çè² åµãæé€ããŸããAppMaster.io ã¯ããã®åºç¯ãªæ©èœã«ãããããã€ãã®æ¹æ³ã§JVMã¢ãŒããã¯ãã£ã®æ©æµãåããããšãã§ããŸãïŒ
- JavaããŒã¹ã®ããŒã«ãšã©ã€ãã©ãªïŒ JavaããŒã¹ã®ããŒã«ãšã©ã€ãã©ãªïŒJavaããŒã¹ã®ããŒã«ãšã©ã€ãã©ãªã®JVMã®åºç¯ãªãšã³ã·ã¹ãã ã¯ãAppMaster.io ã䜿ã£ãŠæ§ç¯ãããã¢ããªã±ãŒã·ã§ã³ã«å°å ¥ããããšãã§ãããJavaã©ã€ãã©ãªãçµ±åããããšã§ãã¢ããªã±ãŒã·ã§ã³ã®æ©èœãå€§å¹ ã«åŒ·åããäžè¬çãªéçºã¿ã¹ã¯ã«å¯Ÿãããœãªã¥ãŒã·ã§ã³ãæäŸããããšã§éçºæéãççž®ããããšãã§ããã
- ã¹ã±ãŒã©ããªãã£ïŒ ãã«ãã¹ã¬ãããã¡ã¢ãªç®¡çãªã©ãJVMã®ã¹ã±ãŒã©ããªãã£æ©èœã掻çšããããšã§ããŠãŒã¶ãŒæ°ã®å¢å ã«åãããŠå¹ççã«æ¡åŒµã§ããã¢ããªã±ãŒã·ã§ã³ãäœæã§ããŸããAppMaster.io JVMã®æ©èœãçµã¿èŸŒãããšã§ãããŸããŸãªãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãããã€ã¹ã«ããã£ãŠæ¡åŒµæ§ã®é«ãã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããŸãã
- ããã©ãŒãã³ã¹ã®æé©åïŒ ãžã£ã¹ãã»ã€ã³ã»ã¿ã€ã ïŒJITïŒã³ã³ãã€ã«ãèªåã¬ããŒãžã»ã³ã¬ã¯ã·ã§ã³ãªã©ã®JVMã®æé©åæ©èœã¯ãAppMaster.io ã«ãã£ãŠçæãããã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãããã«åäžãããŸãããããã®æé©åã«ãããã¢ããªã±ãŒã·ã§ã³ã»ãªãœãŒã¹ã®å©çšçãæå€§åãããAppMaster.ioã§æ§ç¯ãããã¢ããªã±ãŒã·ã§ã³ãããé«éãã€å¹ççã«å®è¡ã§ããããã«ãªããŸãã
- ã¡ã¢ãªç®¡çïŒ AppMaster.io ã¯ãJVMã®ã¡ã¢ãªç®¡çæ©èœã®æ©æµãåããã·ã¹ãã ã»ãªãœãŒã¹ãå¹ççã«å©çšããããšã§ãã¡ã¢ãªã»ãªãŒã¯ãæžãããã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãåäžãããããšãã§ããŸãã
çµè«ãšããŠãããŸããŸãªæ©èœãšå©ç¹ãæã€JVMã®ã¢ãŒããã¯ãã£ã¯ãAppMaster.io ã䜿çšããŠæ§ç¯ãããã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãšæ©èœãåäžãããããšãã§ããŸããJVMã®åºç¯ãªãšã³ã·ã¹ãã ãšæé©åæ©èœã掻çšããããšã§ãAppMaster.io ã¯ãããã«åŒ·åã§å¹ççãªno-code éçºããŒã«ããŠãŒã¶ãŒã«æäŸããããšãã§ããã
ãããã質å
Javaä»®æ³ãã·ã³ïŒJVMïŒã¯ãJavaãã€ãã³ãŒãã»ããã°ã©ã ãå®è¡ããã¡ã¢ãªç®¡çãæäŸããç°ãªãããŒããŠã§ã¢ããªãã¬ãŒãã£ã³ã°ã»ã·ã¹ãã éã§ã®ãã©ãããã©ãŒã ã®ç¬ç«æ§ãå¯èœã«ããJavaå®è¡ç°å¢ã®éèŠãªã³ã³ããŒãã³ãã§ããã
JVMã®äž»ãªã³ã³ããŒãã³ãã«ã¯ãã¯ã©ã¹ããŒããŒãã©ã³ã¿ã€ã ã»ããŒã¿ã»ãšãªã¢ãå®è¡ãšã³ãžã³ãJITã³ã³ãã€ã©ãŒãã¬ãŒãããžã»ã³ã¬ã¯ã¿ãŒãããã
JVMã¯ãJavaãã€ãã³ãŒããåºç€ãšãªããªãã¬ãŒãã£ã³ã°ã»ã·ã¹ãã ãšããŒããŠã§ã¢ã«åºæã®ãã€ãã£ãã»ãã·ã³ã»ã³ãŒãã«å€æããããšã«ãã£ãŠãã©ãããã©ãŒã ã®ç¬ç«æ§ã確ä¿ããJavaã¢ããªã±ãŒã·ã§ã³ã倿Žããããšãªãè€æ°ã®ãã©ãããã©ãŒã äžã§å®è¡ã§ããããã«ããã
JVMã¯ã©ã¹ããŒããŒã¯ãJavaã¯ã©ã¹ããã£ã¹ã¯ããJVMã¡ã¢ãªãŒã«ããŒãããã¯ã©ã¹ã®äŸåé¢ä¿ã解決ããããã°ã©ã å®è¡æã«ã¯ã©ã¹ãåæåãã圹å²ãæ ã£ãŠããã
JVMã¯ãããŒããã¹ã¿ãã¯ãã¡ãœããã»ãšãªã¢ãPCã¬ãžã¹ã¿ãšãã£ãæ§ã ãªã¡ã¢ãªç©ºéé åãéããŠã¡ã¢ãªã管çããããŸããã¬ããŒãžã»ã³ã¬ã¯ã¿ãŒãæ¡çšããŠãããäžèŠã«ãªã£ããªããžã§ã¯ãã®ã¡ã¢ãªãŒãèªåçã«å²ãåœãŠè§£é€ããã¡ã¢ãªãŒã»ãªãŒã¯ãæžãããŠãªãœãŒã¹äœ¿çšãæé©åããã
JVMã®ãžã£ã¹ãã»ã€ã³ã»ã¿ã€ã ïŒJITïŒã³ã³ãã€ã©ãŒã¯ãå®è¡æã«Javaãã€ãã³ãŒãããã€ãã£ãã»ãã·ã³ã»ã³ãŒãã«å€æãã圹å²ãæ ã£ãŠãããé »ç¹ã«åŒã³åºãããã¡ãœãããã³ã³ãã€ã«ããå°æ¥ã®äœ¿çšã®ããã«ã³ã³ãã€ã«ãããã³ãŒãããã£ãã·ã¥ããããšã«ãã£ãŠãJavaã¢ããªã±ãŒã·ã§ã³ã®å®è¡é床ãæé©åããã
JVMã©ã³ã¿ã€ã ã»ããŒã¿é åã¯ãããã°ã©ã å®è¡äžã«ããŒã¿ãæ ŒçŽããããã«JVMã«ãã£ãŠå²ãåœãŠãããã¡ã¢ãªç©ºéã§ãããããŒããã¹ã¿ãã¯ãã¡ãœããã»ãšãªã¢ãã³ã³ã¹ã¿ã³ãã»ããŒã«ãPCã¬ãžã¹ã¿ãå«ãŸããã
JVMã¢ãŒããã¯ãã£ã®å©ç¹ã«ã¯ããã©ãããã©ãŒã éäŸåæ§ãã¹ã±ãŒã©ããªãã£ãã¡ã¢ãªç®¡çããã€ãã³ãŒãå®è¡ã®æé©åãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã®ãµããŒããªã©ããããã¡ã¢ãªãªãŒã¯ãæžãããã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãåäžãããã®ã«åœ¹ç«ã€ã
JVMã¢ãŒããã¯ãã£ãŒã®éçã«ã¯ãè§£éãšã³ã³ãã€ã«ã»ããã»ã¹ã«ããããã©ãŒãã³ã¹ã®ãªãŒããŒããããããŸããŸãªJVMã³ã³ããŒãã³ãã®ã¡ã¢ãªãŒäœ¿çšéãã¬ããŒãžã»ã³ã¬ã¯ã·ã§ã³ãžã®äŸåãªã©ããããæ£ããæé©åãããªããšããã©ãŒãã³ã¹ã®äžèª¿ãåŒãèµ·ããå¯èœæ§ãããã
AppMaster.io ã®no-code ãã©ãããã©ãŒã ã¯ãJavaããŒã¹ã®ããŒã«ãã©ã€ãã©ãªã掻çšããã¹ã±ãŒã©ããªãã£ãæé©åããããã€ãã³ãŒãå®è¡ãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãªã©ã®JVMæ©èœãçµã¿èŸŒãããšã§ãJVMã®æ©æµãåããAppMaster.io ã䜿çšããŠæ§ç¯ãããã¢ããªã±ãŒã·ã§ã³ã®å¹çãšããã©ãŒãã³ã¹ãåäžãããããšãã§ããã


