ããã°ã©ãã³ã°ã®äžçã§ã®çç£æ§åäžãç®æãããžãã¹ããŒãœã³ãžâJavaå ¥éã¯ãã®ãJava 10åã§è§£èª¬ãã§ã¹ã¿ãŒãããŸããããJavaã®å šäœåããå§ããããã°ã©ãã³ã°ã®åºæ¬çãªæŠå¿µããã®å¿çšããããŠå®è·µçãªéçºãã¯ããã¯ãŸã§ãç°¡æœãã€æçã«èŠç¹ãçµã£ãŠãŸãšããŸããããã®èšäºã§ã¯ãJavaã®è±ããªæŽå²ããªããžã§ã¯ãæåã®ååããããŠéçºç°å¢ã®ã»ããã¢ããæ¹æ³ãããåºç€ããã°ã©ãã³ã°ã¹ãã«ã®æ§ç¯ãçŸä»£ã®Javaèšèªã®ç¹åŸŽãããã«ã¯å¹ççãªãããžã§ã¯ã管çã«è³ããŸã§ãJavaã®äžçãžã®çŽ æ©ãæŠèŠ³ãæäŸããŸããããã§ã¯ãJavaã®æ ãå§ããŸãããã
1. Javaãšã¯äœãïŒ
Javaã¯äžè²«æ§ã®ããå©äŸ¿æ§ãšåŒ·åãªã¢ããªã±ãŒã·ã§ã³æ§ç¯èœåã§ç¥ãããããã°ã©ãã³ã°èšèªã§ãããã®ããŒããããã®éçºè ãŸã§å¹ åºããŠãŒã¶ãŒã«å©çšãããŠããããã®çç±ã¯Javaã®æã€å€æ§æ§ã«ãããŸãããã®èšäºã§ã¯Javaã®åºæ¬ãçæéã§ç解ã§ããããèŠç¹ããŸãšããŠè§£èª¬ããŸãã
Javaã¯äžè¬çã«ãæžãã®ã¯äžåºŠã ããèµ°ãã®ã¯ã©ãã§ãããšããå²åŠã«åºã¥ããŠããŸããããã¯Java Virtual Machine (JVM) ãéããŠå®çŸããããã©ãããã©ãŒã ã®ç¬ç«æ§ãæããŸããäžåºŠæžããã³ãŒããç°ãªããªãã¬ãŒãã£ã³ã°ã·ã¹ãã äžã§åé¡ãªãå®è¡ã§ãããšããããšã§ãã
ããã§ã¯Javaã«é¢ããããŒãã€ã³ããç¹åŸŽããããŠãã®æŽå²ã«ã€ããŠè¿ éã«ã玹ä»ããŸããçãæéã§Javaã®äžçã«è§Šãããæ¹ã¯ããã®èšäºãå§ç¹ãšãªãã§ãããã
1.1 Javaã®æŽå²ãšãã®åœ±é¿
Javaã¯1995幎ã«Sun Microsystemsã«ãã£ãŠå ¬éããã以æ¥ãããã°ã©ãã³ã°æ¥çã«é©åœããããããŸãããã³ã³ã»ããã¯ã·ã³ãã«ãã€ãã¯ãã«ãªãWrite Once, Run Anywhereãã§ããããã®èãæ¹ã¯Javaãäºææ§ãšããŒã¿ããªãã£ã«åªããèšèªã§ããããšã瀺ããŠããŸãã
ãã®çºè¡šããJavaã¯äŒæ¥ã®ããã¯ãšã³ãã·ã¹ãã ãAndroidã¢ããªã±ãŒã·ã§ã³ãã²ãŒã ãããŒã¿ã»ã³ã¿ãŒã®ç®¡çããŒã«ã«è³ããŸã§ãå¹ åºãåéã§æ¡çšãããŠããŸãããJavaã®ç¹æ§ãå€ãã®ãããžã§ã¯ãã§éå®ãããèŠå ãšãªã£ãŠããŸãã
ãŸããJavaã¯ãªãŒãã³ãœãŒã¹ã®é²å±ã«ãããŠã倧ããªåœ¹å²ãæãããŠããŸãããç¡æã§å©çšå¯èœãªJavaã®éçºããŒã«ããã¬ãŒã ã¯ãŒã¯ã¯ããœãããŠã§ã¢éçºã®ã¢ã¯ã»ã¹éå£ãäœãããã€ãããŒã·ã§ã³ã®å éã«å¯äžããŠããŸãã
1.2 Javaã®åºæ¬çãªããã°ã©ãã³ã°æŠå¿µ
Javaãç解ããããã«ã¯ãåºæ¬æŠå¿µããã¹ã¿ãŒããããšãäžå¯æ¬ ã§ããJavaã¯éçåä»ãèšèªã§ãããå€æ°ã«åããããŸããåã®æ£ç¢ºããã³ã³ãã€ã«æã«ãã§ãã¯ããããšã«ãã£ãŠãããã°ã©ã ã®å®å šæ§ãé«ããŠããŸãã
åºæ¬ãšãªãããã°ã©ã ã®æ§é ã¯ãã¯ã©ã¹ãšã¡ãœããããæãç«ã¡ãŸããJavaããã°ã©ã ã¯ãäžã€ä»¥äžã®ã¯ã©ã¹å®çŸ©ãšããããã«å±ããã¡ãœããã§æ§æãããããšãäžè¬çã§ãããããã®ã¯ã©ã¹ãšã¡ãœããã¯ããã°ã©ã ã®åäœãå®çŸ©ããŸãã
äŸå€åŠçãJavaã®éèŠãªã³ã³ã»ããã®äžã€ã§ããããã°ã©ã å®è¡äžã«çºçããæ§ã ãªãšã©ãŒã«å¯ŸããŠãæè»ã«å¯Ÿå¿ããããã®ä»çµã¿ãæäŸããŸããããã«ããå®å®ããã¢ããªã±ãŒã·ã§ã³éçºãå¯èœã«ãªããŸãã
1.3 ãªããžã§ã¯ãæåããã°ã©ãã³ã°ãšJava
Javaã¯ãªããžã§ã¯ãæåããã°ã©ãã³ã° (OOP) ã®æŠå¿µãå®å šã«åãå ¥ããŠããŸããããã¯çŸå®äžçã®äºç©ããªããžã§ã¯ããšèŠãªããããããã·ã¹ãã å ã§æš¡å£ãããšããèãæ¹ã§ãããªããžã§ã¯ãã«ã¯å±æ§ïŒãã£ãŒã«ãïŒãšè¡åïŒã¡ãœããïŒããããŸãã
OOPã®äžå¿çãªèŠçŽ ã«ã¯ãç¶æ¿ãã«ãã»ã«åãæœè±¡åãå€æ§æ§ãªã©ããããŸãããããã®ååã¯ãã³ãŒãã®åå©çšãä¿å®æ§ã®åäžãè€éãã®ç®¡çã«æå¹ã§ããJavaã¯ãããã®OOPååãå¹çããå®è£ ããŠãããããå€ãã®éçºè ã«æ¯æãããŠããŸãã
Javaã§ã¯ãOOPååãã¯ã©ã¹ãšãªããžã§ã¯ããéããŠè¡šçŸãããŸããã¯ã©ã¹ã¯ãªããžã§ã¯ãã®èšèšå³ã§ããããªããžã§ã¯ãã¯å®è¡æã«äœæãããã€ã³ã¹ã¿ã³ã¹ã§ãããã®åŒ·åãªæŠå¿µã«ãããåå©çšå¯èœã§ã¢ãžã¥ã©ãŒãªã³ãŒããäœæããããšãå¯èœãšãªããŸãã
1.4 Javaã®äž»ãªçšéãšã¢ããªã±ãŒã·ã§ã³
Javaã®é¡èãªç¹åŸŽã®äžã€ã¯ããã®å€çšéæ§ã§ãããŠã§ããµãŒããŒããšã³ã¿ãŒãã©ã€ãºã¢ããªã±ãŒã·ã§ã³ããã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ã«è³ããŸã§ãJavaã¯ããããèŠæš¡ãšåœ¢æ ã®ãœãããŠã§ã¢éçºã§å©çšãããŠããŸãã
ç¹ã«æ³šç®ãã¹ãã¯ãAndroidã¢ããªã±ãŒã·ã§ã³ã®éçºã«ãããJavaã®åœ¹å²ã§ããJavaã¯Androidã®å ¬åŒéçºèšèªã®äžã€ã§ãããäžçäžã§æãæ®åããŠããã¢ãã€ã«ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã«ãããŠäžå¿çãªåœ¹å²ãæãããŠããŸãã
ãŸããã¯ã©ãŠãããŒã¹ã®ãµãŒãã¹ãããã°ããŒã¿åŠçãIoTããã€ã¹ãªã©ãæ°ãããã¯ãããžãŒé åã«ãããŠãJavaã®ååšæã¯å¢ããŠããŸããJavaã®å ç¢æ§ãšæ¡åŒµæ§ã¯ããããã®åéã§ã®ã€ãããŒã·ã§ã³ãæ¯ããŠããŸãã
2. ç°å¢ã»ããã¢ãã: Javaéçºã®å§ãæ¹
Javaéçºãè¡ãããã«ã¯ãŸããé©åãªéçºç°å¢ãæŽããããšãéèŠã§ããããã«ã¯Java Development Kit(JDK)ã®ã€ã³ã¹ããŒã«ããå¿«é©ãªã³ãŒãã®ç·šéã®ããã®çµ±åéçºç°å¢(IDE)ãéžå®ã»èšå®ããããšãå«ãŸããŸããæåã®Javaããã°ã©ã ãšããŠãHello, World!ããäœæãããã®ã³ã³ãã€ã«ãšå®è¡ãéããŠJavaã®éçºããã»ã¹ã«æ £ããŠãããŸãã
2.1 Java Development Kit (JDK) ã®ã€ã³ã¹ããŒã«
JDKã¯Javaã®ããã°ã©ã ãéçºããããã«å¿ èŠãªãœãããŠã§ã¢ããã±ãŒãžã§ãããã®ãããã«ã¯Javaã³ã³ãã€ã©ãJava Virtual Machine (JVM)ãJavaæšæºã©ã€ãã©ãªãªã©ãJavaããã°ã©ã ãéçºã»å®è¡ããããã«å¿ èŠãªããŒã«ãå«ãŸããŠããŸããJDKã®ææ°ããŒãžã§ã³ã¯Oracleã®å ¬åŒãŠã§ããµã€ããOpenJDKã®ãããžã§ã¯ãããŒãžããããŠã³ããŒãããããšãã§ããŸãã
ã€ã³ã¹ããŒã«ã«ã¯ãããŠã³ããŒããããã¡ã€ã«ãå®è¡ããæ瀺ã«åŸã£ãŠé²ããã ãã®ç°¡åãªæé ãå¿ èŠã§ããããã«ãJDKãæ£åžžã«ã€ã³ã¹ããŒã«ãããåŸã¯ãç°å¢å€æ°PATHã«Javaã³ã³ãã€ã©ã®å Žæãè¿œå ããããšãäžè¬çã§ããããã«ãããã³ãã³ãã©ã€ã³ããçŽæ¥Javaã³ãã³ããå©çšããããšãã§ããããã«ãªããŸããã€ã³ã¹ããŒã«åŸã¯ãã³ãã³ãã©ã€ã³ã§ãjavac -versionããå®è¡ããŠãã€ã³ã¹ããŒã«ãããJDKã®ããŒãžã§ã³ã確èªããŸãããã
ããŒãžã§ã³ã確èªããããJDKãé©åã«ã»ããã¢ãããããŠããããšã確èªããŠãã ãããäžäžåé¡ãçããããã€ã³ã¹ããŒã«æé ãå確èªããç°å¢å€æ°ã®èšå®ãæ£ããè¡ãããŠããããã§ãã¯ããããšã倧åã§ãã
2.2 çµ±åéçºç°å¢(IDE)ã®éžå®ãšèšå®
çµ±åéçºç°å¢(IDE)ã¯ãJavaéçºãå€§å¹ ã«å¹çåããããŒã«ã§ããIDEã¯ã³ãŒãã®ç·šéã ãã§ãªãããããã°ããããžã§ã¯ã管çãããŒãžã§ã³ã³ã³ãããŒã«ãªã©ãéçºã«å¿ èŠãªå€æ°ã®æ©èœãäžãæã§æäŸããŸãã人æ°ã®ããIDEã«ã¯EclipseãIntelliJ IDEAãNetBeansãªã©ããããŸããã奜ã¿ããããžã§ã¯ãã®èŠä»¶ã«å¿ããŠæé©ãªãã®ãéžã¶ããšãéèŠã§ãã
IDEãéžå®ããããããŠã³ããŒãããŠã€ã³ã¹ããŒã«ããåºæ¬çãªèšå®ãè¡ããŸããããã«ã¯JDKãšã®é£æºèšå®ãå«ãŸããŸããIDEã®èšå®ç»é¢ãéããJDKã®ãã¹ãæå®ããŠJavaéçºç°å¢ãæŽããå¿ èŠããããŸãããŸãããããžã§ã¯ãã®äœæããã¡ã€ã«ã®ç®¡çæ¹æ³ãã·ã§ãŒãã«ããããŒãã³ãŒãè£å®ã®æ©èœãªã©ãå¹ççãªéçºãè¡ãããã®åçš®èšå®ã«ãæ £ããŠãããšããã§ãããã
IDEãå©çšããããšã§ãåå¿è ã§ãè¿ éã«ãããžã§ã¯ããéå§ããããã°ã©ãã³ã°ã«éäžããããšãå¯èœã§ãããŸããIDEã¯ã³ãŒãã®ãšã©ãŒæ€åºãå¹ççãªä¿®æ£ããµããŒãããããããã°ãçŽ æ©ãèŠã€ããŠä¿®æ£ããããã»ã¹ãã¹ã ãŒãºã«ãªããŸãã
2.3 åããŠã®Javaããã°ã©ã ãHello, World!ã
å€ãã®ããã°ã©ãã³ã°èšèªã®åŠç¿ã§ã¯ãæåã®ã¹ããããšããŠã·ã³ãã«ãªãHello, World!ãããã°ã©ã ãäœæããŸãããã®äŒçµ±ã«åŸããJavaã§ãåæ§ã®ã¢ãããŒããåããŸããããã¯ãæ°ããèšèªãå§ããéã«ãåºæ¬çãªæ§æãããã°ã©ã æ§é ãç解ããã®ã«é©ããæ¹æ³ã§ãã
ãHello, World!ãããã°ã©ã ã¯éåžžã«ã·ã³ãã«ã§ã以äžã®ããã«èšè¿°ãããŸãïŒ
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } }
ãã®ã³ãŒãã¯ãHelloWorldãšããã¯ã©ã¹ãå®çŸ©ããããã°ã©ã ã®ãšã³ããªãã€ã³ãã§ããmainã¡ãœãããå«ãã§ããŸããmainã¡ãœããå ã§ãSystem.out.printlnã¡ãœããã䜿ã£ãŠã³ã³ãœãŒã«ã«ãHello, World!ããšåºåããŸãã
ãHello, World!ãããã°ã©ã ãäœæããããšã«ãããJavaã®åºæ¬çãªã¯ã©ã¹å®£èšãã¡ãœããã®å®çŸ©ããããŠæšæºåºåãžã®æžã蟌ã¿æ¹æ³ã«ã€ããŠã®ç解ãæ·±ããããšãã§ããŸããããã¯ãããè€éãªJavaããã°ã©ã ãåŠã¶ããã®åºç€ãšãªããŸãã
2.4 Javaããã°ã©ã ã®ã³ã³ãã€ã«ãšå®è¡
Javaããã°ã©ã ã®ã³ã³ãã€ã«ã¯ãæžããããœãŒã¹ã³ãŒããJVMãå®è¡å¯èœãªãã€ãã³ãŒãã«å€æããããã»ã¹ã§ãããããè¡ãããã«ã¯ãJDKã«å«ãŸãããjavacããšããã³ãã³ãã©ã€ã³ããŒã«ã䜿çšããŸããäŸãã°ããHelloWorld.javaããšãããã¡ã€ã«ã«èšè¿°ããããã°ã©ã ãã³ã³ãã€ã«ããã«ã¯ãã³ãã³ãã©ã€ã³ãããjavac HelloWorld.javaããšå ¥åããŸãã
ã³ã³ãã€ã«ã®ããã»ã¹ãæåãããšãåããã£ã¬ã¯ããªå ã«ãHelloWorld.classããšããæ°ãããã¡ã€ã«ãçæãããŸããããããã€ãã³ãŒãã®ãã¡ã€ã«ã§ãããJVMã«ãã£ãŠå®è¡ããã圢åŒã§ãã次ã«ããjava HelloWorldããšããã³ãã³ãã䜿çšããŠãã³ã³ãã€ã«ãããããã°ã©ã ãå®è¡ããŸãããã®ã³ãã³ããå®è¡ãããšãå ã»ã©äœæãããHello, World!ãã®ã¡ãã»ãŒãžãã³ã³ãœãŒã«ã«è¡šç€ºãããã¯ãã§ãã
ã³ã³ãã€ã«ãšå®è¡ã®ããã»ã¹ã¯Javaéçºã®åºæ¬ã§ãããå šãŠã®Javaããã°ã©ã ã«å ±éã®ã¹ãããã§ããããã«æ £ããããšã«ãã£ãŠããã倧èŠæš¡ã§è€éãªJavaã¢ããªã±ãŒã·ã§ã³ãéçºããããã®æºåãæŽããŸããå§ããåã«ãå¿ ãJDKã®ã»ããã¢ãããæ£ããå®äºããŠããããšã確èªããŠãã ããã
3. Javaããã°ã©ãã³ã°ã®åºç€
Javaã¯ãªããžã§ã¯ãæåããã°ã©ãã³ã°èšèªã§ãããæ§ã ãªãã©ãããã©ãŒã ã«å¯Ÿå¿ããå ç¢æ§ãšç§»æ€æ§ãæã£ãŠããŸããããã§ã¯ãåå¿è ãç¥ãã¹ãJavaããã°ã©ãã³ã°ã®åºæ¬çãªéšåãç°¡æœã«è§£èª¬ããŸãã
Javaã§ããã°ã©ãã³ã°ãå§ããã«ããã£ãŠãæåã«æŒãããŠããã¹ãã¯ãå€æ°ã®å®£èšãããŒã¿åã®ç解ããããŠåºæ¬çãªæŒç®åã§ãããããã¯ããã°ã©ã ãæ§æããåºæ¬çãªèŠçŽ ã§ãããè€éãªåŠçãè¡ãåã«ç¢ºå®ã«ç解ããŠããããšãéèŠã§ãã
ãŸããJavaã¯å€æ©èœãªAPIãšåŒ·åãªéçºããŒã«ãæäŸããŠããããããã䜿çšããããšã§å¹ççã«ããã°ã©ã ãäœæããããšãã§ããŸãããããJavaããã°ã©ãã³ã°ã®æ ãå§ããŸãããïŒ
3.1 å€æ°ãããŒã¿åãæŒç®åã®ç解
å€æ°ãšã¯ãããŒã¿ãæ ŒçŽããããã®ã³ã³ããã®ãããªãã®ã§ããJavaã§ã¯ãå€æ°ã䜿ãåã«ããŒã¿åãæå®ããŠå®£èšããå¿ èŠããããŸããäž»ãªããŒã¿åã«ã¯intãdoubleãcharãbooleanãªã©ããããããããã®åã«å¿ããŠç°ãªãçš®é¡ã®ããŒã¿ãæã€ããšãã§ããŸãã
æŒç®åã¯ãæ°å€èšç®ãæåååŠçãæ¯èŒãªã©æ§ã ãªæäœãè¡ãããã«äœ¿çšãããŸããç®è¡æŒç®åã«ã¯å ç®(+), æžç®(-), ä¹ç®(*), é€ç®(/)ããããæ¯èŒæŒç®åã«ã¯çãã(==), çãããªã(!=), ãã倧ãã(>), ããå°ãã(<)ãªã©ããããŸãã
ãããã®æŒç®åã䜿ãããšã§ãããã°ã©ã å ã§æ°å€èšç®ãæååã®æäœãæ¡ä»¶å€æãªã©ãè¡ããã®ã§ãããã°ã©ãã³ã°ã®åºæ¬äžã®åºæ¬ã§ãããéåžžã«éèŠãªæŠå¿µã§ãã
3.2 å¶åŸ¡æ§é : ifæãforã«ãŒããwhileã«ãŒã
å¶åŸ¡æ§é ãšã¯ãããã°ã©ã ã®æµããã³ã³ãããŒã«ããããã®æã®ããšã§ããifæã¯æ¡ä»¶ã«ãã£ãŠå®è¡ããåŠçãå€ãããæã«äœ¿ããforã«ãŒãã¯æ±ºããããåæ°ã®åŠçãç¹°ãè¿ãè¡ãããæãwhileã«ãŒãã¯ããæ¡ä»¶ãæºãããããŸã§åŠçãç¹°ãè¿ãè¡ãããæã«äœ¿çšããŸãã
ifæã§ã¯æ¡ä»¶åŒãtrueã®å Žåã«ãããã¯å ã®åŠçãå®è¡ãããfalseã®å Žåã«ã¯å®è¡ãããŸããããŸããelseãelse ifãçšããŠãè€æ°ã®æ¡ä»¶åå²ãèšããããšãã§ããŸãã
forã«ãŒãã¯ç¹ã«ãç¹°ãè¿ãåæ°ãæ確ãªå Žåã«é©ããŠãããåæååŒãæ¡ä»¶åŒãå¢æžåŒã®3ã€ã®éšåã§æ§æãããŠããŸããwhileã«ãŒãã¯æ¡ä»¶åŒãtrueã®éãç¹°ãè¿ãå®è¡ãããŸãããã«ãŒãã®çµäºæ¡ä»¶ãé©åã«ç®¡çããå¿ èŠããããŸãã
3.3 ã¡ãœããã®å®çŸ©ãšåŒã³åºã
ã¡ãœããã¯ç¹å®ã®ã¿ã¹ã¯ãå®è¡ããäžé£ã®æã®ãŸãšãŸãã§ãããã³ãŒãã®åå©çšæ§ãé«ããããã«äœ¿çšãããŸããã¡ãœãããå®çŸ©ããã«ã¯ãæ»ãå€ã®åãã¡ãœããåãåŒæ°ãªã¹ããæå®ããŠå®£èšããŸãã
ã¡ãœããã¯ããã°ã©ã ã®æ§é ãåãããããããä¿®æ£ãæ©èœè¿œå ã容æã«ããããã«ãéèŠã§ããåŒæ°ãéããŠå€ããæ å ±ãåãåããæ»ãå€ãéããŠåŠççµæãéãè¿ãããšãã§ããŸãã
ã¡ãœããã¯ããèªäœãããã°ã©ã ã®äžã§ç¬ç«ããæ©èœãæã¡ãäœåºŠã䜿çšããããšãã§ãããããJavaããã°ã©ãã³ã°ã§ã¯éåžžã«å€çšãããèŠçŽ ã®äžã€ã§ãã
3.4 é åãšã³ã¬ã¯ã·ã§ã³ãã¬ãŒã ã¯ãŒã¯ã®äœ¿çš
é åã¯åãããŒã¿åã®è€æ°ã®èŠçŽ ã1ã€ã®å€æ°ã«æ ŒçŽããããšãã§ããããŒã¿æ§é ã§ããé åã®å®£èšãåæåã«ã¯ç¹å®ã®æ§æããããããã䜿çšããããšã§å¹æçã«ããŒã¿ã®éãŸããæ±ãããšãã§ããŸãã
äžæ¹ãJavaã®ã³ã¬ã¯ã·ã§ã³ãã¬ãŒã ã¯ãŒã¯ã¯ListãSetãMapãšãã£ãã€ã³ã¿ãŒãã§ã€ã¹ãšããããå®è£ ããã¯ã©ã¹çŸ€ã§æ§æãããŠãããããè€éãªããŒã¿æ§é ãæ±ãããã«çšããããŸãããããã¯æè»æ§ãæ¡åŒµæ§ã«åªããŠãããããã°ã©ã ã«ãããŠéèŠãªåœ¹å²ãæãããŸãã
é åãšã³ã¬ã¯ã·ã§ã³ãã¬ãŒã ã¯ãŒã¯ã䜿ãããªãããšã§ãJavaã«ãããããŒã¿ã®ç®¡çãæäœãéåžžã«ã¹ã ãŒãºã«è¡ããããã«ãªããŸãããã®ç解ã¯ãããé«åºŠãªããã°ã©ãã³ã°ãžåãã倧åãªã¹ãããã§ãããšèšããã§ãããã
4. Javaã®éèŠãªç¹åŸŽãšã¢ããããŒã
4.1 ã¡ã¢ãªç®¡çãšã¬ãŒããžã³ã¬ã¯ã·ã§ã³
Javaèšèªã§ã¯ãã¡ã¢ãªç®¡çã¯èªåã§è¡ãããéçºè ã«ãšã£ãŠã®æéã倧ããåæžãããŠããŸããèªåã¡ã¢ãªç®¡çã®äžæ žãæãã®ãã¬ãŒããžã³ã¬ã¯ã·ã§ã³(GC)ã§ãäžèŠã«ãªã£ãã¡ã¢ãªé åãããã©ãŒãã³ã¹ã«åœ±é¿ãäžããããšãªããå®å šã«ååãåå©çšãå¯èœã«ããŸãã
GCã®ã¢ã«ãŽãªãºã ã¯æ代ãšå ±ã«é²åããŠãããäžä»£å¥ã¬ãŒããžã³ã¬ã¯ã·ã§ã³ããã©ã¬ã«GCãG1(Garbage-First) GCãªã©ãå€çš®å€æ§ãªã¢ã«ãŽãªãºã ãå®è£ ãããŠãããããã¢ããªã±ãŒã·ã§ã³ã®ããŒãºã«åãããæé©ãªGCæŠç¥ãéžæã§ããŸãã
æ°ããJavaããŒãžã§ã³ã§ã¯ããããã®GCã®å¹çæ§ãããã«åäžããäœé 延ãªã¢ããªã±ãŒã·ã§ã³ã®å®è¡ãå¯èœã«ãªããªã©ãã¡ã¢ãªç®¡çæè¡ã®æŽæ°ãéèŠãªã¢ããããŒããšãªã£ãŠããŸãã
4.2 äŸå€åŠçãšãšã©ãŒç®¡ç
Javaã§ã¯å ç¢ãªã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã詳现ãã€æè»ãªäŸå€åŠçãå¯èœã§ããtry-catchãããã¯ã䜿çšããããšã§ãå®è¡æïŒã©ã³ã¿ã€ã ïŒãšã©ãŒãææããé©åãªãšã©ãŒåŠçãè¡ãããšãã§ããŸãã
ããã«ãthrowsããŒã¯ãŒããçšããããšã§ãäŸå€ãåŒã³åºãå ã«å§è²ããããšãå¯èœã§ããããã«ãããã³ãŒãã®å¯èªæ§ãšã¡ã³ããã³ã¹æ§ãåäžããéçºè ã¯ããçµç¹çãªãšã©ãŒç®¡çãè¡ãããšãã§ããŸãã
æ°ããããŒãžã§ã³ã®Javaã§ã¯ããã«ããã£ãããtry-with-resourcesãšãã£ãæ©èœãå°å ¥ãããŠãããããã«ãã£ãŠããã«å¹ççãªäŸå€åŠçãå¯èœã«ãªã£ãŠããŸãã
4.3 ã©ã ãåŒãšé¢æ°åããã°ã©ãã³ã°
Java 8以éãã©ã ãåŒãå°å ¥ãããJavaããã°ã©ãã³ã°ã«ãããé¢æ°åã®ã¢ãããŒããå¯èœãšãªããŸãããã©ã ãåŒã䜿çšãããšãã³ãŒããããã³ã³ãã¯ãã«ããå¯èªæ§ãé«ããããšãã§ããŸãã
é¢æ°åã€ã³ã¿ãã§ãŒã¹ãšã©ã ãåŒã®çµã¿åããã«ãããç°¡æœã§ã¹ãããªãšããã³ãŒãã§ã®ã€ãã³ãåŠçãããŒã¿æäœãå®çŸãããéçºã®çç£æ§ã倧ããåäžããŠããŸãã
ãŸããStream APIã®å°å ¥ã«ãããã³ã¬ã¯ã·ã§ã³åŠçãå€§å¹ ã«æŽç·Žããã䞊ååŠçã容æã«è¡ããããã«ãªããŸããããããã¯ææ°ã®JavaããŒãžã§ã³ã§ãããã«é²åãç¶ããŠããŸãã
4.4 ææ°ã®JavaããŒãžã§ã³ã®æ°æ©èœ
Javaã¯å®æçã«ã¢ããããŒããããæ°æ©èœãè¿œå ãããããã©ãŒãã³ã¹ã®æ¹åãè¡ãããŠããŸããäŸãã°ãåæšè«ã®åŒ·åã«ããèšè¿°ãç°¡ç¥åããããªã©ãããéçºè ã«ãšã£ãŠäŸ¿å©ãªèšèªãžãšé²åãç¶ããŠããŸãã
ã¢ãžã¥ãŒã«ã·ã¹ãã ã®å°å ¥ã«ãããã¢ããªã±ãŒã·ã§ã³ã®æ§é ãããæŽçãããä¿å®æ§ãã»ãã¥ãªãã£ãåäžããŸãããå ããŠãJVM(Java Virtual Machine)ãé«åºŠãªæé©åããããŠãããã¯ãã¹ãã©ãããã©ãŒã ã§ã®å®è¡é床ãåäžããŠããŸãã
APIã®æ¡å ãç¶ããããæ°ããã©ã€ãã©ãªãããŒã«ãæäŸãããããšã§ãJavaéçºè ã¯ããå¹ åºãå Žé¢ã§Javaãå©çšã§ããããã«ãªã£ãŠããŸãããããã®ç¹åŸŽã¯ãJavaãããã°ã©ãã³ã°èšèªãšããŠã®å°äœãä¿æãç¶ããããã®éèŠãªéµãšãªã£ãŠããŸãã
5. å®è·µçãªJavaããã°ã©ãã³ã°ãã¯ããã¯
5.1 APIãšã©ã€ãã©ãªã®æŽ»çš
Javaã§ã¯è±å¯ãªAPIãšã©ã€ãã©ãªãæäŸãããŠãããããããå¹æçã«æŽ»çšããããšã§ãéçºã®å¹çãå€§å¹ ã«åäžãããããšãã§ããŸããStandard Editionã§ã¯ãã³ã¬ã¯ã·ã§ã³ãã¬ãŒã ã¯ãŒã¯ãã¹ããªãŒã APIããã䜿çšãããŸãããŸããApache CommonsãGoogle Guavaãªã©ã®å€éšã©ã€ãã©ãªããJavaéçºã«ãããŠæçšã§ãã
APIã®æŽ»çšã«éããŠã¯ãå ¬åŒã®ããã¥ã¡ã³ããåèã«ããªããé©åãªã¯ã©ã¹ãã¡ãœãããéžæããããšãéèŠã§ãããŸããJavadocã掻çšããŠAPIã®äœ¿çšæ³ãç解ãããµã³ãã«ã³ãŒããããšã«å®éšãéããããšãè¯ãç¿æ £ãšãªããŸãã
ã©ã€ãã©ãªãéžã¶éã«ã¯ãç¶ç¶çãªã¡ã³ããã³ã¹ãè¡ãããŠããããå å®ããã³ãã¥ããã£ãµããŒãããããã確èªããããšã倧åã§ããå®å®æ§ãšæ§èœã®ãã©ã³ã¹ãåããã©ã€ãã©ãªãéžæããããšã§ãå°æ¥çãªãã©ãã«ãé¿ããããšãã§ããŸãã
5.2 ãã«ãã¹ã¬ããããã°ã©ãã³ã°
ãã«ãã¹ã¬ããããã°ã©ãã³ã°ã¯ãçŸä»£ã®ãã«ãã³ã¢ããã»ããµãæ倧éã«æŽ»çšããããã«äžå¯æ¬ ã§ããJavaã§ã¯ãThreadã¯ã©ã¹ãRunnableã€ã³ã¿ãŒãã§ãŒã¹ãå®è£ ããããšã§ãç°¡åã«ã¹ã¬ãããäœæã管çããããšãå¯èœãšãªã£ãŠããŸãã
ãããããã«ãã¹ã¬ããç°å¢äžã§ã¯ãåæåã®åé¡ãããŒã¿ã®ç«¶åãšãã£ãæ§ã ãªãã£ã¬ã³ãžãçããŸãããããã«å¯ŸåŠããããã«ã¯ãsynchronizedãããã¯ãLockã€ã³ã¿ãŒãã§ãŒã¹ããŸãã¯Concurrentããã±ãŒãžã«å«ãŸããã³ã¬ã¯ã·ã§ã³ã¯ã©ã¹ãåæåããŒã«ãé©åã«äœ¿ãããšãæ±ããããŸãã
è¯è³ªãªãã«ãã¹ã¬ããã¢ããªã±ãŒã·ã§ã³ãèšèšããã«ã¯ãã¹ã¬ããã®ã©ã€ããµã€ã¯ã«ãã¹ããŒããæ·±ãç解ããã¹ã¬ããããŒã«ã®å©çšãfuturesãéããŠéåæã®çµæã管çãããªã©ã®é«åºŠãªãã¯ããã¯ãéèŠã§ãã
5.3 ãããã¯ãŒã¯ããã°ã©ãã³ã°ã®åºç€
ãããã¯ãŒã¯ããã°ã©ãã³ã°ã¯ããªã¢ãŒãã®ãªãœãŒã¹ã«ã¢ã¯ã»ã¹ããããã¯ã©ã€ã¢ã³ããšãµãŒããŒéã§ããŒã¿ããããšãããããã°ã©ã ãäœæããæè¡ã§ããJavaã§ã¯ãjava.netããã±ãŒãžãéããŠãç°¡åã«ãããã¯ãŒã¯é¢é£ã®ããã°ã©ãã³ã°ãè¡ãããšãå¯èœã§ãã
Socketããã°ã©ãã³ã°ã¯åºæ¬çãªãããã¯ãŒã¯ããã°ã©ãã³ã°ææ³ã®äžã€ã§ãããTCP/IPãããã³ã«ãçšããä¿¡é Œæ§ã®é«ãéä¿¡ãè¡ããŸãããŸããURLãURLConnectionã¯ã©ã¹ã䜿çšããHTTPãããã³ã«ã«åºã¥ãéä¿¡æ¹æ³ãäžè¬çã§ãã
ãããã¯ãŒã¯ããã°ã©ãã³ã°ã«ã¯ãã¿ã€ã ã¢ãŠãã®ç®¡çããããã¯ãŒã¯ãšã©ãŒãžã®å¯Ÿå¿ãå¹ççãªãªãœãŒã¹ã®å©çšãªã©ã泚æãã¹ããã€ã³ããå€ãååšããŸããç¹ã«ã»ãã¥ãªãã£é¢ã§ã¯ãSSL/TLSã§ã®æå·åéä¿¡ã®å®è£ ãéèŠãšãªããŸãã
5.4 ããŒã¿ããŒã¹æ¥ç¶ãšSQLæäœ
Javaã¢ããªã±ãŒã·ã§ã³ã«ãããŠãããŒã¿ããŒã¹ãšã®æ¥ç¶ã¯äžè¬çãªèŠä»¶ã§ããJava Database Connectivity (JDBC) APIã¯ãå¹ åºãããŒã¿ããŒã¹ã«å¯ŸããŠSQLæäœãè¡ãæšæºçãªæ¹æ³ãæäŸããŠããŸãã
ããŒã¿ããŒã¹ãžã®æ¥ç¶ãè¡ãã«ã¯ããŸãããŒã¿ããŒã¹ãã©ã€ããŒãå¿ èŠã§ãããDriverManagerã¯ã©ã¹ã䜿çšããŠããŒã¿ããŒã¹ãžã®ConnectionãååŸããŸãããã®åŸãStatementãPreparedStatementã䜿çšããŠSQLã¯ãšãªãå®è¡ããResultSetãªããžã§ã¯ããä»ããŠçµæãåãåãããšãã§ããŸãã
å¹ççãªããŒã¿ããŒã¹æäœã®ããã«ã¯ãSQLã€ã³ãžã§ã¯ã·ã§ã³æ»æãé²ãããã®PreparedStatementã®äœ¿çšããé©åãªãã©ã³ã¶ã¯ã·ã§ã³ç®¡çãå¿ èŠã§ãããŸããæ¥ç¶ããŒã«ã掻çšãããªãœãŒã¹ç®¡çããããã©ãŒãã³ã¹åäžã«å¯äžããŸãã
6. Javaãããžã§ã¯ãã®ç®¡çãšãã«ãããŒã«
6.1 ãããžã§ã¯ãæ§é ã®ãã¹ããã©ã¯ãã£ã¹
Javaéçºã«ãããŠãå¹ççã§èªã¿ããããããžã§ã¯ãæ§é ã¯éåžžã«éèŠã§ããæšæºçãªãã£ã¬ã¯ããªæ§é ã«åŸãããšã§ãä»ã®éçºè ãã³ãŒããç解ãããããªããŸããsrcãã©ã«ãã«ã¯ãœãŒã¹ã³ãŒãããbinãã©ã«ãã«ã¯ã³ã³ãã€ã«ããããã€ãã³ãŒããæ ŒçŽããŸãã
é©åãªããã±ãŒãžåã䜿çšããããšã§ãã¯ã©ã¹ãã¡ã€ã«ãæŽçããå称ã®è¡çªãé¿ããããšãã§ããŸããäžè¬çã«ããœãŒã¹ã³ãŒãã¯src/main/javaã«ããªãœãŒã¹ãã¡ã€ã«ã¯src/main/resourcesã«ããããé 眮ãããŸãã
ãããžã§ã¯ãæ§é ã®æšæºåã¯ããã«ãããŒã«ã䜿çšããéã®èªååããã»ã¹ã容æã«ããããé£æºããããéçºç°å¢ãæäŸããŸãããããã¯é·æçãªãããžã§ã¯ãã¡ã³ããã³ã¹ã«ãããŠã䟡å€ããããŸãã
6.2 ãã«ãããŒã«ã®æ¯èŒ: AntãMavenãGradle
Antã¯Javaéçºã®åæã«äœ¿çšãããŠãããã«ãããŒã«ã§ãæè»æ§ã®é«ãXMLããŒã¹ã®èšå®ãã¡ã€ã«ã䜿çšããŠããŸããããããžã§ã¯ããè€éã«ãªãã«ã€ããŠç®¡çãå°é£ã«ãªãããšããããŸãã
Mavenã¯äŸåé¢ä¿ç®¡çããããžã§ã¯ãã©ã€ããµã€ã¯ã«ã®æšæºåã«çŠç¹ãåœãŠãŠããŸããpom.xmlãšããäžã€ã®èšå®ãã¡ã€ã«ãéããŠããã«ãããã»ã¹ã管çããŸããããã«ãããéçºè ã¯ã³ã³ãã¥ãŒã¿ãŒéã§ã®ãããžã§ã¯ãã®æ§ç¯ãšãã¹ããäžè²«ããŠè¡ãããšãã§ããŸãã
Gradleã¯AntãšMavenã®å©ç¹ãå ŒãåããGroovyããŒã¹ã®DSLïŒãã¡ã€ã³åºæèšèªïŒã«ãã£ãŠæŽãªãæè»æ§ãšããã©ãŒãã³ã¹ãå®çŸããŸããGradleã¯ãã£ãã·ã³ã°ã䞊è¡åŠçãšãã£ãã¢ãã³ãªæ©èœãæäŸãã倧èŠæš¡ãããžã§ã¯ãã«ããããã«ãæéççž®ã«è²¢ç®ããŸãã
6.3 äŸåé¢ä¿ç®¡çãšèªåå
Javaéçºã«ãããŠãå€éšã©ã€ãã©ãªã®äŸåé¢ä¿ç®¡çã¯äžå¯æ¬ ã§ãããã«ãããŒã«ã¯ãã®ããã»ã¹ãèªååããå¿ èŠãªã©ã€ãã©ãªãããŠã³ããŒãããŠé 眮ããæ©èœãæäŸããŸãã
MavenãšGradleã¯äžå€®ãªããžããªãããããžã§ã¯ãã«å¿ èŠãªäŸåé¢ä¿ãååŸããããããç¹å®ã®ãã£ã¬ã¯ããªã«é 眮ããããšã§ãæåã§ã©ã€ãã©ãªã管çããäœæ¥ãåæžããŸãããŸããããã«ãããããžã§ã¯ãã¯ä»ã®ç°å¢ã§ã容æã«åçŸå¯èœãšãªããŸãã
èªååã¯ãã¹ãã®å®è¡ããããã€ã¡ã³ãããã»ã¹ã«ãåã³ãŸãããããã®ã¿ã¹ã¯ã¯ãã«ãããŒã«ãéããŠã¹ã±ãžã¥ãŒã«ãããäžè²«æ§ã®ããçµæãçã¿åºããéçºè ã®æäœæ¥ãæžãããŸãã
6.4 JUnitã䜿çšããåäœãã¹ãã®äœæ
åäœãã¹ãã¯ãã³ãŒãã®åéšåãæå³ããéãã«åäœããããšãä¿èšŒããããã«è¡ãããŸããJUnitã¯Javaã®åäœãã¹ããã¬ãŒã ã¯ãŒã¯ã®ããã¡ã¯ãã¹ã¿ã³ããŒãã§ãããã·ã³ãã«ã§åŒ·åãªã¢ãããŒã·ã§ã³ãæäŸããŸãã
ãã¹ãã±ãŒã¹ãäœæããéã«ã¯ã察象ãšãªãã³ãŒãã®æ©èœããšã«ã¡ãœãããåããååãªãã¹ãã«ãã¬ããžãå®çŸããããšã倧åã§ããæ£åžžç³»ã ãã§ãªããç°åžžç³»ãå¢çå€ã®ãã¹ããè¡ãã¹ãã§ãã
ãã«ãããŒã«ã¯ãã¹ãã®èªååã«ãéåžžã«æå¹ã§ããMavenãGradleã䜿ãããšã§ããã«ãããã»ã¹ã«ãããŠèªåçã«ãã¹ããå®è¡ããçµæãåæããããšãå¯èœã«ãªããŸããããã¯å質ä¿èšŒã®ããã®è¿ éãã€ç¶ç¶çãªãã£ãŒãããã¯ãä¿ããŸãã
7. ãŸãšã
Javaã¯ãã¢ãã€ã«ç«¯æ«ãããšã³ã¿ãŒãã©ã€ãºã¬ãã«ã®ã¢ããªã±ãŒã·ã§ã³ãŸã§ãããŸããŸãªãã©ãããã©ãŒã ã§æŽ»èºãããªããžã§ã¯ãæåã®ããã°ã©ãã³ã°èšèªã§ããæ軜ã«åŠã¹ãæŽå²ããèšèªã§ãåºç€ããå¿çšãŸã§å¹ åºãçšããããŠããŸããéçºç°å¢ãæŽããã«ã¯ãJDKã®ã€ã³ã¹ããŒã«ããåããŠIDEã§ãããŒã¯ãŒã«ãããã°ã©ã ãè©Šãããšããã¹ã¿ãŒããJavaã®åºç€ã§ã¯å€æ°ãããŒã¿åãæŒç®åã®ç解ãå¶åŸ¡æ§é ãã¡ãœãããé åãšãã£ãé ç®ãéèŠã§ããJavaã¯ã¡ã¢ãªç®¡çãäŸå€åŠçãææ°ã®é¢æ°åããã°ã©ãã³ã°ã®ãµããŒããå«ãã§ããããã«ãã¹ã¬ããããããã¯ãŒã¯æäœãããŒã¿ããŒã¹æ¥ç¶ãªã©é«åºŠãªãã¯ããã¯ãåŠã¹ãŸããç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ãåãå ¥ããéçºã§ã¯ããã«ãããŒã«ã®ç解ãå¿ èŠã§ãããã®ãŸãšããããžãã¹ã«ãããJavaéçºã®ç解ã®å©ããšãªãã°å¹žãã§ãã