ãã¹ãŠãããŸãããããã£ãŒã«ãºã¯ããã·ãã«ã¹ã¯ïŒJBreakã4æ4æ¥ïŒãšã¢ã¹ã¯ã¯ïŒJPointã4æ7-8æ¥ïŒãžã®èšªåãèšç»ããŸããã ãã§ã«JPoint 2017ããã°ã©ã ã®ã¬ãã¥ãŒãè¡ã£ãŠãããä»ã§ã¯ç§ãã¡ã®æãJBreak 2017ã«å°éããŠããŸãã
åèšã§ãããã°ã©ã ã«ã¯21ã®ã¬ããŒãããããŸãã ä»åã®ããã°ã©ã ã«å«ãŸãããããã¯ãèŠãŠã¿ãŸãããã
- JVMã¬ããïŒããã³ä»åŸã®Java 9ïŒïŒJVMã¢ãžã¥ãŒã«åãAOTããã³JITã³ã³ãã€ã«ããã¯ãã«åãGCããã³å€éšé¢æ°ãæ©èœããŸãã
- ãã¬ãŒã ã¯ãŒã¯ïŒSparkãKafkaãSpringãHazelcast JetãElasticsearchã
- ãã¿ãŒã³ãšã¢ãããŒãïŒãããããã¯é²æ¢ãéçã³ãŒãåæãCRDTã
- ãã¡ãããããã©ãŒãã³ã¹ã ããã©ãŒãã³ã¹ã«é¢ããåå¥ã®ã¬ããŒãã¯1ã€ã ãã§ãïŒãã¡ããAlexei ShipilevããïŒããã»ãšãã©ãã¹ãŠã®ã¬ããŒãã§äœããã®åœ¢ã§ææ決å®ã®ããã©ãŒãã³ã¹ãæ¹åã§ããŸãã
åã¬ããŒãã詳现ã«èŠãŠãããã©ãŒãã³ã¹ããå§ããŠããªã¹ããèŠãŠãããŸãããã

倧èŠæš¡ãããžã§ã¯ãã®æé©åã«é¢ããJoker 2016ã®åºèª¿è¬æŒãåèšèšãè£è¶³ãããã³æ¡åŒµããŸãããäžè¬çãªååãšé¢ä¿ã ãããžã§ã¯ãã®ã©ã€ããµã€ã¯ã«ãšæé©åã®çµæžæ§ã ãã³ãããŒã¯ã©ã€ããµã€ã¯ã«ã ããã©ãŒãã³ã¹ãšã³ãžãã¢ãééããå žåçãªãã©ããã
ããããŒãã³ã¢ã§ããã詳现ã«ãããå€ãã®ã¿ã€ãã³ã°ã§ããShããšåä»ããããããã«æ²ãã£ãæ²ç·ïŒ
解ååŠçã¢ãã©ã¹JVM
ãã€ãã®ããã«ãç§ãã¡ã¯åæ°ã«ã€ããŠè³ãåŸãããã®ããããŸãïŒå®éãããã¯æ倧ã®ã»ã¯ã·ã§ã³ã§ãïŒãå¿ èŠãªãã®ã

å®éãããã«èŠåºãããã®è³ªåãžã®çãããããŸããCharlesã¯ããã¹ãŠã®Javaéçºè ã«éŠŽæã¿ã®ããç®ã²ãã®ã«ã€ããŠè©±ãããã«ã·ããªã¢ã«è¡ããŸãã çµå±ã®ãšããããããã¯ã©ãã«ã§ããããŸãïŒAPIå ããªããžã§ã¯ãã®ãã£ãŒã«ãå ãJVMãšå€çãšã®ã»ãšãã©ãã¹ãŠã®çžäºäœçšã ãã ããJavaã§ã®Stringã®å®è£ ã«ã¯æ¬ ç¹ããªãããã§ã¯ãããŸãããããã«ã€ããŠã¯ãæååã®äœ¿çšã®éå žåçãªäŸã§èª¬æããŸãã ããã«ãä»ã®èšèªã§åé¡ãã©ã®ããã«è§£æ±ºãããããã©ã®ã©ã€ãã©ãªããããã®è§£æ±ºã«åœ¹ç«ã€ãã確èªããŸãã

ãã®ã¬ããŒãã§ã¯ããã¯ãã«ããã»ããµæ¡åŒµãã©ã®ããã«èŠããããJVMãã¢ã€ãã«ç¶æ ãç¶æããããã«å¿ èŠãªããªãã¯ã«ã€ããŠèª¬æããŸããCPUãã£ã¹ããããVMçµã¿èŸŒã¿ãJITã³ã³ãã€ã©ã§ã®ãã€ãã³ãŒãã®èªåãã¯ãã«å å°éçãªãã¯ã¿ãŒAPIïŒãã¯ã¿ãŒAPIïŒãèšåãããŸããããã®äœæ¥ã¯Project Panamaã§ç©æ¥µçã«è¡ãããŠããŸãã

Shenandoahã¯æ°ããRed Hatã¬ããŒãžã³ã¬ã¯ã¿ãŒã§ãããã¢ããªã±ãŒã·ã§ã³ãåæ¢ããã«ãªããžã§ã¯ãã移åããåé¡ã解決ããäžæåæ¢ãããã«åæžããŸãã ãã®ã¬ããŒãã¯ãã·ã§ãã³ãã¢ã®èšèšãšå®è£ ã®ç¹åŸŽãèªãã«æãé·æãããã³ææ ¢ãã匱ç¹ã«ã€ããŠã§ãã

ãã®ã¬ããŒãã§ã¯ãHotSpotã¯ã©ãã·ã¥ãã³ãã©ãŒãäœæãããšã©ãŒãã¡ã€ã«ãæãäžããããšãã§ãããã®ãšããããã®ãã¡ã€ã«ãã·ã¹ãã ã¯ã©ãã·ã¥ã®åæãšåçŸã«ã©ã®ããã«åœ¹ç«ã€ããæ±ããŸãã ããã«ãHotSpot Serviceability Agentãªã©ã®ããŒã«ãèŠãŠã¿ãŸãããããããã®ããŒã«ã䜿çšãããšããã€ãã£ãã«ãŒãã«ãã¡ã€ã«ã調ã¹ãŠãããããå¿ èŠãªããŒã¿ãæœåºã§ããŸãããæšæºã®ãããã¬ãŒã§ã¯ç°¡åã«ååŸã§ããŸããã

Java 9ã§ã¯ãã¢ãžã¥ãŒã«ã衚瀺ãããããã«ãã€ã³ããããŠããŸãã 誰ããããŸãæ°ã«ããªãã誰ããæããã誰ããå¿ããäžæè°ã«æãïŒçµå±ã®ãšããã15幎以äžã«ããã£ãŠãã¢ãžã¥ãŒã«ãšãŸã£ããåãåé¡ã解決ããOSGiããã£ãã®ã¯ãªãã§ããïŒ
ãã®ã¬ããŒãã§ã¯ãNikitaã¯OSGiã解決ããããšããŠããåé¡ã圌ãããããã©ã®ããã«è§£æ±ºãããããããŠåœŒãæ¬åœã«ãããã解決ãããã©ãããææ¡ããããšããŸãã 次ã«ãOSGiã解決ããããšããŠããåé¡ãJigsawããŸã£ãã解決ããªãåé¡ãçç±ãããã³ããã解決ããåé¡ãšãã®æ¹æ³ã説æããŸãã ããŠãã¬ããŒãã®æåŸã«ïŒJigsawãJavaãšã³ã·ã¹ãã ã«åæã«ããããåé¡ãšããããã©ããããã

Oracle JDK 9ã§ã¯ãéçïŒäºåïŒã³ãŒãã®ã³ã³ãã€ã«ãå°å ¥ãããŠããŸãã ããããªãå¿ èŠãªã®ããçŸåšã®å®è£ ã®ç¯å²ã«ã€ããŠã¯ãã§ã«èª¬æããŸããã æè¡çãªè©³çŽ°ã«ã€ããŠè©±ããŸãïŒã©ã®ãããªæ å ±ãçæãããAOTãã©ã®ããã«æ©èœããããã³ã³ãã€ã«ãããAOTã³ãŒãã¯ã©ã®ããã«ãããã¹ããããšããåãããŸããïŒ å€éšããŒã«ã¯AOTã³ãŒãã§äœãã§ããã³ã³ãã€ã«ããã»ã¹ã«ã©ã®ããã«çµ±åã§ããŸããïŒ ãããŠããã¡ãããã©ã®ãã€ã¹ãããã€ã¹ãã§ããŸããïŒAOTã䜿çšããå Žåã®ããã©ãŒãã³ã¹ã¯ã©ããªããŸããïŒ

JITã®æ©èœã¯èª°ã§ãç¥ã£ãŠããŸãã 圌ã®ããæ¹ãç¥ã£ãŠããŸããïŒ ã³ã³ãã€ã©ã¯ã©ã®ããã«æ±ºå®ãäžãããšã©ãŒã¯ã©ã®ãããªçµæããããããŸããïŒ Ivanã¯ããããã¡ã€ã«ãåéããã¡ã«ããºã ãšãã³ã³ãã€ã«ãããã³ãŒãã®ç°ãªãããŒãžã§ã³éã®ç§»è¡ã¢ã«ãŽãªãºã ãããã³JITãšå¯Ÿè©±ããããã®ã€ã³ã¿ãŒãã§ãŒã¹ã«ã€ããŠèª¬æããŸãã
Java Developer Toolbox
ããŒã«ãæã€ããšã¯è¯ãããšã§ãããããããæ£ãã䜿çšã§ããããšã¯ããã«è¯ãããšã§ãã ãã®ãããã¯ã§ã¯ãããã°ããŒã¿ãæ€çŽ¢ãåæ£ã·ã¹ãã ãããã³åæå®è¡æ§ãå¿«é©ã«äœ¿çšã§ããããã«ããããŒã«ã®ã¬ããŒãã«ã€ããŠèª¬æããŸãã

ãªã¢ã«ã¿ã€ã åæã®äžè¬çãªTKã§ã¯ãããã€ãã®éèšå€ãçæéã§ããªã³ã¶ãã©ã€ãã§èšç®ãããããŒããã£ã«ã¿ãªã³ã°ããŠãåŸç¶ã®èšç®æ®µéã®è² è·ã軜æžããå¿ èŠãããç¹ããã°ãã°ãããŸãã å€ãã®å ŽåãããŒã ãAmazonã§ãããŒã¿ããŒã«ããæŽçããKafkaã§ãã¹ãŠã®çä¿¡ã€ãã³ãããã³ããããããžã§ã¯ããèŠãããšãã§ããŸãã Sparkã¯Kafkaããã®ã¹ããªãŒã ãåŠçããŸããïŒ ãããŠã圌ã察åŠããå Žåãã©ã®ãããªè²»çšã§ãããã§åœŒãå©ããã§ããããïŒ Sparkã®çŽ¹ä»ãRDDãããã°ããŒã¿ã«ã€ããŠè©±ãã®ãåŸ ããªãã§ãã ããã 1ã€ã®ã±ãŒã¹-1ã€ã®ãœãªã¥ãŒã·ã§ã³-å°ãã®çè«-æ§æã®ç·šé-ã³ãŒãã®èšè¿°ã

Collection.parallelStream()
ãä»»æã®ãµã€ã¯ã«ã«è©°ã蟌ãããšã§ããã©ãŒãã³ã¹ãè¿œãæ±ããŠãã人ã®1人ã§ããïŒ ã°ããŒãã«ãªã³ãŒããäœãçŽããã«ãã©ã®ããã«ããã°ããå€ãã®ãµãŒããŒã§ãã¹ãŠã®åé¡ã解決ã§ãããçåã«æããŸããïŒ çç£æ§ãçŽç·çã«åäžãããªããåæ£åŠçãå®çŸããæ¹æ³ã¯ïŒ åæ§ã®è³ªåãé ã®äžã§èãããå Žåããã®ã¬ããŒãã¯ããªãã®ããã§ãã
ãã®äžã§ãVictorã¯åæ£åŠçã®ãã¹ãŠã®è©³çŽ°ã«ã€ããŠè©±ãã圌ã®å人ã§ããOriented Acyclic Graphã«èŽè¡ã玹ä»ããJava 8 Stream APIäžã§æ å ±åŠçãã©ã®ããã«ç·šæããããã瀺ããŸãã é åžïŒ é«æ§èœïŒ ãã¡ã¢ãªå ãïŒ

å šææ€çŽ¢ã¯ãå€ãã®äººãææ°ã®ã¢ããªã±ãŒã·ã§ã³ã«æåŸ ãããã®ã§ãã åé¡ã¯ãå®è£ ãé£ãããã©ããã§ãã çãã¯èŠããã»ã©é£ãããããŸããã
ãã®ã¬ããŒããããå šææ€çŽ¢ãã©ã®ããã«æ©èœããããç°ãªãããŒã¿ããŒã¹ã䜿çšããå Žåã®éãã¯äœããåŠã³ãŸãã æ€çŽ¢ã®å質ãšé床ãæ£ããè©äŸ¡ããæ¹æ³ã Elasticsearchã䜿çšããŠãããããã¹ãŠãã¢ããªã±ãŒã·ã§ã³ã«åã蟌ãæ¹æ³ã

ããŒã«ãåçŽã§ããã°ããã»ã©ããè£åŽãã§ããå€ãã®éæ³ã䜿ããŸãã Spring BootãäŸå€ã§ã¯ãããŸããã ããã«ãSpring Testã®ããã¥ã¡ã³ãã§èª¬æãããŠãã䜿ãæ £ããããŒã«ã䜿çšãããšäœãèµ·ãããã«ã€ããŠèãã人ã¯ã»ãšãã©ããŸããã
Alpha Laboratoryã®ã¡ã€ã³éçºè ã§ããCyrilãšäžç·ã«ããã¡ãã¡ã«æ éã«é 眮ãããã¬ãŒãã®è©³çŽ°ãææ¡ããŸãã ãããè¡ãã«ã¯ããå žåçãªãã¢ããªã±ãŒã·ã§ã³ããã¹ãããSpringã䜿çšããŠããããããžã§ã¯ãã«Spring Bootãççã«å®è£ ããŠããéçºè ã«å°ãã質åãããŸãã

æ®å¿µãªããã倧èŠæš¡ãªåæ£ã·ã¹ãã ã®ããã©ãŒãã³ã¹ã¯ãé¢äžãããã·ã³ã®æ°ã«æ¯äŸããŠçŽç·çã«å¢å ããããšã¯ã»ãšãã©ãããŸããã äŸãšããŠApache Igniteã䜿çšããŠãåæ£ã·ã¹ãã ã®æ§ç¯ã«ãããããã°ã©ããŒã®ä»äºãšãã¬ãŒã ã¯ãŒã¯ã®å 容ãèŠãŠã¿ãŸãããã Apache Igniteã®å éšã³ã³ããŒãã³ããèŠãŠã¿ãŸãããããããã¯äžŠååŠçãšã¹ã±ãŒãªã³ã°ãæ åœããã€ã³ã¡ã¢ãªã·ã¹ãã ã«åºã¥ããŠã¢ããªã±ãŒã·ã§ã³ãèšèšããéã«çããæãéèŠãªãã¬ãŒããªããšççŸãèæ ®ããŸãã
ã³ãŒãå®äºïŒJBreakãšãã£ã·ã§ã³
ããã°ã©ãã³ã°ãšã¯ãã³ãŒããæžãããšã ãã§ã¯ãªããMcConellããã€ãŠèšã£ãããã«ãèšèšããããšã§ããããŸãã ããªãã¯ããªãèªèº«ã®ã¹ã¿ã€ã«ãæã£ãŠãããããããŸãããã圌ãçããæš©å©ãæã€ããã«ã¯ãåé¡ãæ£ãã解決ããæ¹æ³ãç¥ã£ãŠããå¿ èŠããããŸãã ããã§ã¯ã䞊ååŠçã競åãã³ãŒãåæã®åéã§æ¢ç¥ã®åé¡ã解決ããããã®æ£ããã¢ãããŒããšæ¹æ³ã«ã€ããŠåŠã¶ããšãã§ããã¬ããŒããåéããŸããã

IntelliJ IDEAã¯åžžã«ã³ãŒãã匷調ããããè¯ããã®ã«çœ®ãæããããšãææ¡ããŸãã çµæãéæ³ã®ããã«èŠããå ŽåããããŸãã IDEã¯ãããã©ã®ããã«è¡ããŸããïŒ åœŒã¯ããªãã®ã³ãŒããã©ã®ããã«ç解ããå€ãã³ãŒãã眮ãæããæ°ããã³ãŒããã©ã®ããã«çæããèœãšãç©Žã¯äœã§ããïŒ
IntelliJ IDEAã®äžè¬çãªã³ãŒãã€ã³ã¹ãã¯ã·ã§ã³ã®æ§æãšãã¯ã³ã¯ãªãã¯ã§ã³ãŒããæ¹åããããã«IDEéçºè ãæã£ãŠããçœé«ªã®åºŠåãã確èªããŸãã

èããŠã¿ãŠãã ããïŒéåæã¬ããªã±ãŒã·ã§ã³ãšèª¿æŽã®æ¬ åŠãåããããã€ãã®ããŒã¿ã»ã³ã¿ãŒã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã¯ããããã¯ãŒã¯ã»ã°ã¡ã³ããŒã·ã§ã³ã®æ¡ä»¶ã§ã¢ã¯ã»ã·ããªãã£ãšæ£ããæäœãæäŸããã¯ã©ã€ã¢ã³ããšæ¥œèŠ³çãªUIã§è¶ é«éå¿çãæäŸããŸãã ãªã誰ãããããæã£ãŠããªãã®ã§ããïŒ ããã¯ãã¹ãŠç«¶åçãªå€æŽã«ã€ãªããå¯èœæ§ãããã競åçãªå€æŽã¯ã¿ã€ã ã¹ã¿ã³ãäžã®åçŽãªç«¶åãªãŸã«ããŒã§ã¯è§£æ±ºã§ããªã競åã«ã€ãªãããŸãã
ãã ããCRDTïŒç«¶åã®ãªãè€è£œãããããŒã¿åïŒã䜿çšããŠåé¡ã解決ã§ããŸãã ãã®ã¬ããŒãã§ã¯ãAndreiãããŸããŸãªã¿ã€ãã®CRDTããããã®é·æãšçæãããã³CRDTã®é©çšå¯èœæ§ã®éçã«ã€ããŠèª¬æããŸãã

ãããããã¯ã¯ããã«ãã¹ã¬ããã¢ããªã±ãŒã·ã§ã³ãéçºããéã®æãå·®ãè¿«ã£ãåé¡ã®1ã€ã§ãã ãã®ã¬ããŒãã®äžéšãšããŠãæœåšçãªãããããã¯ã®æ€çŽ¢ã«äœ¿çšãããDl-CheckããŒã«ãæ€èšãããŸãã ãã®ãããªããŒã«ã®éçºäžãASMãã¬ãŒã ã¯ãŒã¯ãäºå®äžã®æšæºã§ããå®è£ ã®ããã«ããã€ãã³ãŒãã®ã€ã³ã¹ãã«ã¡ã³ããŒã·ã§ã³ãªãã§ã¯ã§ããŸããã ã¬ããŒãã®æåã®éšåã§ã¯ãæå®ãããããŒã«ã®ã¡ã€ã³ã¢ã«ãŽãªãºã ã衚瀺ãããŸããããã«ãããã¢ããªã±ãŒã·ã§ã³äžã«æœåšçãªãããããã¯ãå¹æçã«èŠã€ããããšãã§ããŸãã ã¬ããŒãã®2çªç®ã®éšåã¯ããã€ãã³ãŒãã®èšæž¬ãšãããã«é¢é£ããæçšãªãã¯ããã¯ãšéèŠãªåé¡ã«å°å¿µããŸãã

Javaããã³ä»ã®å€ãã®ãªããžã§ã¯ãæåèšèªã®ææ³ãšããŠããŠãŒãã£ãªãã£ã¯ã©ã¹ã¯ã³ãŒãå ã®ããŸããŸãªå Žæããäžè¬çãªããã·ãŒãžã£ãžã®ã¢ã¯ã»ã¹ãæäŸããã®ã«éåžžã«äŸ¿å©ã§ãã äœåãã®ãã®ãããªã¯ã©ã¹ãšæé ã¯ãApache CommonsãGuavaãããã³JDKã«ãããŸãã ãããããã®ã¢ãããŒãã¯æ¬åœã«ãªããžã§ã¯ãæåãšåŒã°ãããŠãŒãã£ãªãã£ã¯ã©ã¹ã¯ã³ãŒããããããããããç解ããããããŸããïŒ OOPã§ãããã®æé ãå¿ èŠã§ããïŒ å¿ èŠãªãå Žåã代æ¿æ段ã¯äœã§ããïŒ Javaã§ãŠãŒãã£ãªãã£ã¯ã©ã¹ãªãã§ã³ãŒããåå©çšããã«ã¯ã©ãããã°ããã§ããïŒ ãããã¯ãYegor Bugaenkoã圌ã®ã¬ããŒãã§æèµ·ãããã¹ãŠã®è³ªåããã¯ã»ã©é ãããäžåºŠã«ãã¹ãŠã§ã¯ãªãã

ãã®æ©äŒã«ãDevOps-CPSUã®æ å ã®ãããªãã®-ã¯æ±ºããŠäººéã§ã¯ãªãããšãæãåºããŠãã ããã Olegã®ã¬ããŒãã¯ãJavaãããžã§ã¯ãã§DevOpsãé©åã«ã調çãããæ¹æ³ã«å°å¿µããŠãããããå€ãJava女æ§ã¯ããµããŒããšå±éã®åé¡ã«ã€ããŠãã¡ãã·ã§ããã«ãªGolangãšnode.jsã«å ãåœãŠãŠããŸãã ã©ã®ã€ã³ãã©ã¹ãã©ã¯ãã£ç®¡çããŒã«ã䜿çšãããšã管çè ã®ç掻ãæ¹åããéçºè ã®ç掻ãããé¢çœããè±ãã§ãçç£çã«ããããšãã§ããŸããã
äŒè°ã§ã®ã¬ããŒãã«å ããŠã ãã£ã¹ã«ãã·ã§ã³ãŸãŒã³ãæ©èœããããšãæãåºããŠãã ããïŒåã¬ããŒãã®åŸãã¹ããŒã«ãŒãšåœŒã«è³ªåããããã¹ãŠã®äººãç¹å¥ãªãŸãŒã³ã«çœåŒãããåå è ã¯ããã«1æéå-次ã®çµãããŸã§ã¹ããŒã«ãŒãšè©±ãæ©äŒããããŸãã¬ããŒãä»ãã®ã¹ãããã
äžè¬çã«ãæ¬åœã«å€ãã®èå³æ·±ãããšããããŸããã·ããªã¢ã«äœãã§ããŠJavaã§æžããŠãããªããJBreakã§ãäŒãã§ããŠããããã§ãã ç»é²ã¯éããŠããŸã ã äŒè°ã®ãŠã§ããµã€ããžããããã