JPoint 2018ã®ã¬ããŒãã®ãããªãYouTubeã«ãã§ã«æçš¿ããŠãããç¹ã«Habréã®Javaããã«ã€ããŠã¯ãäŒè°ã®èšªåè
ã«å¿ããŠããããã®ãã¹ãã®äŒçµ±çãªéžæãè¡ããŸããã
ãã€ãã®ããã«ãäžéšã«ããžã¥ãã¢ãã¬ããŒãããããæåŸã«æé«ã®è©äŸ¡ããããŸãã ãã¡ãããããã¯ããã¬ããŒããå¥ã®ã¬ããŒããããã¯ããã«æªãããšãæå³ãããã®ã§ã¯ãããŸãããèšç®æ¹æ³ãå€æŽãããšãå Žæãç°¡åã«å€æŽãããå¯èœæ§ããããŸãã å®éã«ã¯å€æŽããŸãããçŸåšãã¬ããŒãã«åå ããŠããåå è
ã®æ°ãèæ
®ããŠãããœããã¯ã©ãŒã©ã ãããŒãžã§ã³ã®è©äŸ¡ã䜿çšãããŠããŸãã ãã®ã¢ãããŒãã«ã¯æ¬ ç¹ããããŸãïŒããšãã°ãåã«èŽè¡ã«éžæã®äœå°ããªããšããçç±ã ãã§ãéåžžã®ã¬ããŒããããåºèª¿è¬æŒããã人ãå€ããªããŸãïŒããå
šäœçã«äœãèµ·ãã£ãã®ããããããããŸãã
ã«ããã®äž-æé«ã®ã¬ããŒãã®ãããªããã¬ãŒã³ããŒã·ã§ã³ãžã®ãªã³ã¯ãçã説æãããã³å®å
šãªãã¬ã€ãªã¹ããžã®ãªã³ã¯ã
ãã«ãã¬ã€ãªã¹ã
以äžã§èª¬æãããã¹ãŠã®ãããªãå«ãå®å
šãªãã¬ã€ãªã¹ãã¯ã ããããå
¥æã§ããŸã ã
â ã¹ã©ã€ããããŠã³ããŒã
ã³ã³ããé©åœã¯çãåžå·»ããŸãã-Javaã®äžçã¯ãããªãã§ã¯ãããŸããã§ããã ããã§ããJavaã«ã¯åžžã«åé¡ããããç¹å®ã®åé¡ãšæ©èœããããŸãããããã«ã€ããŠã¯ãSasha Goldsteinã®ã¬ããŒãã§èª¬æããŸãã
ãµãŒã·ã£ã¯ãããŒãã³ã¢ããã©ãŒãã³ã¹ã®é£ç¶å¶äœè
ã§ãã æšå¹ŽJPointã§ã圌ã¯JVMã§Berkeley Packet Filterã䜿çšããããšã«ã€ããŠçŽ æŽãããè¬æŒãè¡ããŸããïŒYouTubeã®æçš¿ãèŠãããšã匷ããå§ãããŸãïŒã圌ãã³ã³ããåã®è©³çŽ°ãªæ€èšã«å
¥ãç¹ã«ãã©ãçãã®ã¯æéã®åé¡ã§ããã äžçã¯é²ãšæž¯æ¹ŸåŽåè
ã«ãªãããããç§ãã¡ã«å€ãã®æ°ããåé¡ããããããŸãã ãæ°ã¥ããããããŸããããã»ãšãã©ã®äœã¬ãã«ã®ãããã°ããã³ãããã¡ã€ãªã³ã°ã·ã¹ãã ã¯ãããããã³ã³ããã«é©çšããåŸãããŸããŸãªæ©èœã劚害ç©ã§å€§ãããªããããŠããŸãã Sashaã¯ãBCCãperfãå«ãGNU / Linuxãã©ãããã©ãŒã ã§ææ°ã®ããŒã«ã䜿çšãããšããããªãºã ãéããŠãäž»èŠãªã·ããªãªïŒCPU䜿çšçãIOå¿çæ§ãå
±æããŒã¿ããŒã¹ãžã®ã¢ã¯ã»ã¹ãªã©ïŒã§ã¹ã±ãŒããããŸããã
誰ãããã®ç¹ç°æ§ãå¿
èŠãšããããã§ã¯ãããŸããã ããã¯ãã¬ããŒãã10äœã«éããªãã£ãçç±ã®1ã€ã§ã-çŽ200人ãåºåžããŸããïŒãã«ã«ãã§ããšããªãœãããã®1,000人以äžãšæ¯èŒããŠãã ããïŒãç§ãã¡ã®è©äŸ¡èšç®ã¢ã«ãŽãªãºã ã¯èŽè¡ã®èŠæš¡ã«éåžžã«ææã§ãã
äœããã®æ¹æ³ã§ã³ã³ããã«æ¥ç¶ããŠãã人ã¯ããã®ã¬ããŒãã衚瀺ããå¿
èŠããããŸãã ç¡æ°ã®ãŠãŒãã£ãªãã£ãšãã®äœ¿çšæ¹æ³ãå®å
šã«äžŠã¹æ¿ããããšã«ããããã¹ãŠã®è©³çŽ°ãç¬ç«ããŠæ€çŽ¢ããæéã倧å¹
ã«ç¯çŽã§ããŸãã
ãŸããããã10ããã®Sashaã®ã¬ããŒãã¯ãåäœæéãããã®å®çšçãªæ
å ±éã®ç¹ã§ã»ãŒæãå¯åºŠãé«ãããšã«ã泚æããŠãã ããã ã»ãšãã©ãã¹ãŠã®ã¹ã©ã€ãããã䟿å©ãªãã®ãèªåã§ã³ããŒã§ããŸãã 詳现ãªèª¬æãè¡ããªãããã«ããã¬ãŒã³ããŒã·ã§ã³ã®è¡šé¢æ§é ã®ã¿ã瀺ããŸãã
ã¬ããŒãæŠèŠ- ã³ã³ããã¯ã©ã®ããã«é
眮ãããŠããŸããïŒ
- å¶åŸ¡ã°ã«ãŒãïŒCPUãã¡ã¢ãªããããã¯I / O;
- åå空éïŒpidåå空éãããŠã³ãåå空éããããã¯ãŒã¯åå空éã
- åé¡ã®éãïŒ
- ãã¹ãäž;
- ã³ã³ããå
;
- ãœãªã¥ãŒã·ã§ã³ã®åé¡ã®äŸïŒ
- JVMãžã®æ¥ç¶ïŒ
- JVMããã©ãŒãã³ã¹ããŒã¿ïŒ
- ãã¹ãäžã®JVMããŒã«ã®ãã¢ã
- ãªãœãŒã¹æ
å ±ããŒã«ïŒ
- ç£èŠçšã®ãµã€ãã«ãŒã
- ããã«ãŒã®çµ±èšã
- systemd-cgtop;
- htop + cgroup ID;
- nsenterãŸãã¯docker exec;
- ã³ã³ãããªãœãŒã¹ã®ãã¢ç£èŠã
- CPUã³ã³ãããŒã®ãããã¡ã€ãªã³ã°ïŒ
- ãã¹ãã®perfïŒ-Gãã·ã³ãã«ãããã³ã°ãPIDãããã³ã°ãperfãããã®å
±æïŒperf-map-agentïŒã
- ãã¬ãŒã ã°ã©ã ã䜿çšãããã¢ã oos;
- éç¹æš©ã¢ãŒãã®ã³ã³ããã®ããã©ãŒãã³ã¹ã
- æ£çŽãããã¡ã€ã©ãéåæãããã¡ã€ã©ãperf vséåæãããã¡ã€ã©ã
- ãã¢async-profiler;
- BCCã¯ãããã¡ã€ãªã³ã°ããŒã«ã§ãïŒå€ãã®åé¡ãèªåçã«è§£æ±ºããŸãããLinux 4.9以éã§ã®ã¿æ©èœããŸãïŒã
- 調æŽ;
- ãã®ä»ã®ç£èŠæ¹æ³ïŒ
- cAdvisorãSysDigãNew RelicãDataDog ...
9.幎ã«äžåºŠãåºãå²ãïŒã1åã ããã®Apache Kafkaã®ã»ãã³ãã£ã¯ã¹ã®è§£æ
â ã¹ã©ã€ããããŠã³ããŒã
ãã¯ã¿ãŒã¬ã¢ãã¯ãä»ã®ã¹ããŒã«ãŒãããå®å
šã«äžå
¬å¹³ãªå©ç¹ããããŸãã ããã¯ã200件è¿ãã®Debriefingããããã£ã¹ãã®åé¡ãO'Reillyã«ããå€æ°ã®ã¬ããŒããããã¹ããæçš¿ãããã«ã¯ãEnterprise Web Developmentããšããæ¬ã®èè
ã§ããã人ç©ã§ãã Gamowã®ååšèªäœããããè¯ãçµæããããããŸãã 圌ã¯ã«ãã«ã«ã€ããŠã§ã¯ãªããçªèŸºã§ã®ãŒã©ããŠã ã®æé·ã«ã€ããŠåãã€ã³ãããŒã·ã§ã³ã§èªãããšãã§ãããšç¢ºä¿¡ããŠãããããã¯ãŸã é
åçã§ãã
ããã«ã¯ç¹å¥ãªã±ãŒã¹ããããŸãããexactly onceãã®ã»ãã³ãã£ã¯ã¹ã«é¢ããæåã¯å€§éæãªãããã¯ã§ãã Kafkaã¯ãåŸæ¥ã®ã¡ãã»ãŒãžé
ä¿¡ã»ãã³ãã£ã¯ã¹ã®åŠçãå¿
èŠãšããããã¹ãŠãç°åžžãªèŠæš¡ã§äœ¿çšããããã«æ¥ããŸããã å£ã«æãå
¥ããªãã§ãã ããã圌ãã¯æ£ãããããã³ã«ãšã¡ãã»ãŒãžåœ¢åŒã§å€åºå
ã§éŽãå€ããå¿
èŠãªããšããã¹ãŠè¡ããŸããã ã¬ããŒãå
šäœã§ãVictorã¯ãå
éšã§ã®é
眮æ¹æ³ãšãã®åœ±é¿ã«ã€ããŠèª¬æããŠããŸãã
è¯ãç¹ãšæªãç¹ã®2ã€ã®ãã¥ãŒã¹ã è¯ãïŒãã¹ãŠãKafkaã§èšå®ãããŠããŸãã æªãïŒãã¹ãŠãKafkaã§èšå®ãããŠããŸãã ãããšäžç·ã«æ®ããã«ã¯ããããã©ã®ããã«æ©èœããæ±ããæã§ã©ãã«ç»ãã®ããç解ããå¿
èŠããããŸãã
ãã¯ã¿ãŒã«äœããã®ã¹ã ãŒãžãŒãæåŸ
ã§ããŸãããå¿
æ»ã®ããŒãã³ã¢ãæã«å
¥ããã®ã§ãèšç»ã¯æ¬¡ã®ããã«ãªããŸãã
ã¬ããŒãæŠèŠ- ã«ãã«ã®çŽ¹ä»ïŒ
- ãããã¯ã¹
- ããŒãã£ã·ã§ã³
- ãã°ãšãªãã»ãã
- æããããšãªãŒããŒ
- 顧客ïŒçç£è
ãšæ¶è²»è
- ãããã¥ãŒãµãŒ
- äŸã§ã®ä»çµã¿
- çç£è
ãããã³ã«
- æ¶è²»è
- äŸã§ã®ä»çµã¿
- æ¶è²»è
ãããã³ã«
- åŠçã¢ãã«
- èªã¿åããã«ãŠã³ããèšé²
- ã°ãªããã®çš®é¡ïŒãã¹ãŠå£ããããŸã³ãïŒ
- ã»ãã³ãã£ã¯ã¹ã®åŠç
- å°ãªããšã1åãæ倧1åãæ£ç¢ºã«1å
- ã»ãã³ãã£ã¯ã¹ã1åã ãã
- äŸä»ã
- 匱ç¹
- å®å
šã§ãªãåè©Šè¡
- éååãªãã»ããèšé²
- ãŸã³ã
- æåã®åŒ±ç¹ã®ä¿®æ£ïŒã¹ãçãããã¥ãŒãµãŒ
- 2çªç®ã®åŒ±ç¹ãä¿®æ£ããŸãã
- ã·ã£ã³ãã£ã©ã³ããŒãã¹ãããã·ã§ãã
- åç
- 倱æã«èããæ¹æ³ã¯ïŒ
- ããŒãïŒåŠçäžã«ã¯ã©ãã·ã¥ãã
- ãœããïŒã¹ãããã·ã§ããã®åé€åãŸãã¯åé€äžã«ã¯ã©ãã·ã¥ããŸã
- ã«ãã«ã§ã®ååŒ
- 2çš®é¡ã®ããŒã«ãŒïŒCOMMITãABORTïŒ
- å€ãã®ããŒãã£ã·ã§ã³ã§ã®ååèšé²ïŒå«ãïŒ_Consumer_offsetsïŒ
- 3çªç®ã®åŒ±ç¹ãä¿®æ£ïŒãŸã³ããã§ã³ã·ã³ã°
- æ¶è²»è
èªæžéé¢
- ãšã³ãããŒãšã³ãã®EOS
- Kafkaæ¥ç¶ãœãŒã¹
- ã«ãã«ã¹ããªãŒã
- ã«ãã«ã³ãã¯ãã·ã³ã¯
8. Kafka StreamsãšFirehose APIã䜿çšãããã·ã¢ã®ããã«ãŒãšã®æŠã
â ã¹ã©ã€ããããŠã³ããŒã
åã³ã«ãã«ïŒ ãŸãã¬ã¢ãïŒ ã¯ãããããŠä»ãBaruch SadogurskyïŒ jbaruch ïŒãšäžç·ã«ã ããã§ãããã®ã¬ããŒãã¯ã¹ã ãŒãžãŒã§ã¯ãããŸããããBintrayãã©ãããã©ãŒã ïŒBaruchãç¥ïŒã§ãApache KafkaïŒVictorãæ
åœïŒãšFirehoseã®å©ããåããŠãè¡åãã¿ãŒã³ãåæãã倧éã®ããŒã¿ãåŠçããæ¹æ³ã«é¢ããéåžžã«å
·äœçãªå®çšçãªãã®ã§ãã
Kafkaã®å
éšã«é¢ãã以åã®ã¬ããŒãã«245æã®ã¹ã©ã€ãããã£ãå Žåããã®ã¹ã©ã€ãã«ã¯17æãããããŸãããããã¯ãç£èŠããå¿
èŠãããããã§ãã ããã¯äž»ã«ãäž»èŠãªãã¢ãšã©ã€ããã¢ã®éã®æŽ»çºãªå¯Ÿè©±ã§ãã æ®ãããvidosikãéããŠèŠãŠãã ããã
7. Javaã®ããŒããŠã§ã¢ãã©ã³ã¶ã¯ã·ã§ã³ã¡ã¢ãª
â ã¹ã©ã€ããããŠã³ããŒã
Nikita KovalïŒ ndkoval ïŒã¯ãKotlinããŒã ã®JetBrainsã®ç 究è
ã§ãããISTãªãŒã¹ããªã¢ã®å士課çšã®åŠçã§ãïŒåœŒã¯è¬æŒæã«Devexpertsã«ããŸããïŒã 圌ã®ã¬ããŒãã¯ããã·ã¢ã®ããã«ãŒããšã¯ãŸã£ãã察ç
§çã§ãããªããªããããã¯ç°¡åã§æ¥œããèªã¿ç©ã§ã¯ãªããVMã®è€éãªå
éšæ§é ã«é¢ããç©èªã ããã§ãã ã¹ã©ã€ããèŠããšã150æã®ã·ãŒããããããã®ã»ãšãã©ãã³ãŒãã§ãã
2018幎ã®åãã«JBreakã«ããå Žåãå®å
šã«ç°ãªãããšã«ã€ããŠã®Nikitaã®ç©èªãèŠã€ãããããããŸãã-çŸä»£ã®ãã«ãã³ã¢ã¢ãŒããã¯ãã£ãšç¹å¥ãªã¢ã«ãŽãªãºã ã®ãã¯ãŒã䜿çšããŠé«éãªãã«ãã¹ã¬ããããã·ã¥ããŒãã«ãæžãããšã«ã€ããŠã åæããŠããããŒã¿ã«ã¯ã¹ã¿ã€ã«ããããŸãã ããã«ã·ããªãšããæãåºããŸãã
ä»åã¯ããã©ã³ã¶ã¯ã·ã§ã³ã¡ã¢ãªã«ã€ããŠèª¬æããŸãããã©ã³ã¶ã¯ã·ã§ã³ã¡ã¢ãªã¯ãçŸä»£ã®ããã»ããµã«åŸã
ã«ç»å ŽããŸãããJVMã®äžçã®æ®éã®äººã«ã©ã®ããã«äœ¿çšãããã¯ãŸã äžæã§ãã ãã¡ãããJVMã®å€ã§ã¯ããã¹ãŠãããã·ã³ãã«ã§ãã ããããéåžžã®Spring Webéçºè
ã«ãã¯ããvmstructãç·šéããçµã¿èŸŒã¿é¢æ°ãéããOpenJDKãåæ§ç¯ããã°å®äºã§ãïŒã ãããŠã圌ã¯æ¬¡ã®ãããªãã®ã§ããããŸãããã¡ãããæ¯æ¥ããïŒã Nikitaã¯ã䜿çšæ¹æ³ãOpenJDKã«ãã§ã«ããæé©åãããã³Javaã³ãŒãããçŽæ¥ãã©ã³ã¶ã¯ã·ã§ã³ãå®è¡ããæ¹æ³ã«ã€ããŠéåžžã«æ確ã«èªã£ãŠããŸãã
ã¬ããŒãæŠèŠ- ã¯ããã«ïŒãã«ãã¹ã¬ãããå¿
èŠãªçç±
- ã¢ã«ãŽãªãºã æ§ç¯ã¢ãããŒã
- ã©ãããã¯
- èãããã¯
- ãã³ããããã³ã°åæ
- 3ã€ã®ã¿ã€ãã¯ãã¹ãŠãããã¡ãã®éè¡ã«é¢ããã¿ã¹ã¯ã®äŸã«ç€ºãããŠããŸãã
- ãã«ãã¹ã¬ããã¯è€éã§ãã ã©ããã
- å®ç§ãªäžçã§ã®ååŒã ã¢ãããã¯ãæžãã ãã§ãïŒ
- ã¢ãããã¯ãååŸããå ŽæïŒ
- ãœãããŠã§ã¢ãã©ã³ã¶ã¯ã·ã§ã³ã¡ã¢ãªïŒSTMïŒã Scala STMãNOrecãã³ã«ãŒãã³ã
- ããŒããŠã§ã¢ãã©ã³ã¶ã¯ã·ã§ã³ã¡ã¢ãªïŒHTMïŒã ãã¹ãŠã§ã«ããã¯ãŒ8ã
- ãã€ããªãããã©ã³ã¶ã¯ã·ã§ã³ã¡ã¢ãª
- äŸã«ããIntel RTM
- XBEGINãXENDãXABORTãXTEST
- Intel RTM + Java
- ããã¯ã®çç¥
- java.util.concurrent.RTMSupport
- çµã¿èŸŒã¿é¢æ°ïŒã€ã³ã¿ãŒããªã¿ãŒãC1ãC2
- ç²èŠå/ããã¯ããªãŒ+ RTMãã£ãŒãã§ã®ãµããŒã
6.ãã€ã¯ãç§ããã³ããã»ããµåœä»€ãŸã§æ£ç¢ºã«ãããã¡ã€ã«ããŸã
â ã¹ã©ã€ããããŠã³ããŒã
Raiffeisenbankã®Sergey MelnikovïŒ RainM ïŒã2çªç®ã®ãããã¡ã€ãªã³ã°ã¬ããŒããæäŸããŠãããŸããã èå³æ·±ãããšã«ãäœé
延ã®Javaã³ãŒãã«åãçµãåã¯ãIntelã§C / C ++ / FORTRANèšèªã®ã³ã³ãã€ã©ããã©ãŒãã³ã¹ãšã³ãžãã¢ãšããŠåããŠããŸããã ãã®ã¬ããŒãã«ã¯ããã©ãŒãã³ã¹ããããŸãïŒ :-)ããã»ããµã®ããŒããŠã§ã¢æ©èœãšIntelããã»ããµãã¬ãŒã¹ãã¯ãããžã«ã€ããŠããããŸããããã«ããããããã¡ã€ãªã³ã°ç²ŸåºŠã®æ¬¡ã®ã¹ããããå®è¡ããããã°ã©ã ã»ã¯ã·ã§ã³ã®å®è¡ãåæ§ç¯ã§ããŸãã ãã®ãããªã¬ããŒãã¯ã»ãšãã©ãããŸããïŒããšãã°ãTracing Summit 2015ã§Andi Kleenã¬ããŒããèŠã€ããããšãã§ããŸãïŒãéåžžãå€ãã®çåãæ®ããJavaã«é¢ããŠã¯å®çšæ§ã«æ¬ ããŠããŸãã ããã§ã¯ãäž¡æ¹ã®äžçïŒIntelãšJavaã®äž¡æ¹ïŒã蚪ãã人ã ãã§ãªããè€éãªãããã¯ãæ確ã«èª¬æããæ¹æ³ãç¥ã£ãŠããŸãã
ã¬ããŒãæŠèŠ- ããã¯äœã§ããªãå¿
èŠãªã®ã
- ãµããžã§ã¯ããšãªã¢-äœé
延ã¢ããªã±ãŒã·ã§ã³
- ã¢ã¹ã¯ã¯ååŒæã®äŸ
- ãããã¡ã€ã©ãŒãéžæãã
- ãããã¡ã€ã«ããæ¹æ³ ãµã³ããªã³ã°ããã³èšè£
ãããã¡ã€ã©ãŒ
- éåæãããã¡ã€ã©ãŒ
- ãããã¡ã€ã©ãŒã«è©³çŽ°ãªãããã¡ã€ã«ãäœæããããã«æããŸã
- perfã®å®è¡æ¹æ³
- åŒã³åºãå±¥æŽã§ãããã¡ã€ã«ã確èªããæ¹æ³
- perf-map-agentãsysctlãdmesg ...
- perfã§PMU / PEBSã€ãã³ãã䜿çšãã
- Intel Processor Trace-ããã¯äœã§ãããJavaããããã¡ã€ã«ããæ¹æ³
- èŠä»¶ïŒããã±ãŒãžãããŒããŠã§ã¢ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã
- Skylake-XïŒXeonããã³i9ïŒã§å®è¡ããæ¹æ³
5. VMStructsïŒã¢ããªã±ãŒã·ã§ã³ãJVMå
éšã«ã€ããŠç¥ãå¿
èŠãããçç±
â ã¹ã©ã€ããããŠã³ããŒã
ã¢ã³ãã¬ã€ïŒ apangin ïŒã¯ãäœåºŠãäœåºŠããæãæ·±ã匷åãªã¬ããŒããåéãã人ã§ãã éå»ã«ã¯ããžã§ãŒã«ãŒã¯1,000人匱ã®äººã
ãéããŠããŸãããããã¯åºèª¿è¬æŒã§ã¯ãªãå®æå ±åæžã§ã®èŽè¡èŠæš¡ã®èšé²ã§ãã ãã®äžã§åœŒã¯ãä»®æ³ãã·ã³ã§ã®10幎ã®çµéšãšãæè¡çãªããŒãã³ã¢ã説æããèœåã«å©ããããå®éã«ãããç¹°ãè¿ãããšãã§ããŸãã
Tomcatã«éåžžã®ã¢ããªã±ãŒã·ã§ã³ããããããŒã¿ããŒã¹ãããããã¹ãŠãæ£åžžã§ããå Žåãå€ãã®äººã¯ãªãä»®æ³ãã·ã³ãæãäžããã®ããããç解ããŠããŸããã ãã®ã¬ããŒãã«ã¯ããã©ã®ã¯ãšãªãå€ãã®ããŒã¿ããã«ããããç解ããæ¹æ³ãã®ã¬ãã«ã§è¯ãè°è«ããããŸãã JMXã䜿çšããŠã³ãŒããæ瀺ããããšãããšãããã©ãŒãã³ã¹ã«å¥åŠãªããšãèµ·ããå§ããŸãã 第äžã«ããããèµ·ããçç±ãç解ã§ãã第äºã«ãããã«ã€ããŠäœãã§ããããç解ã§ããŸãã ç§ã®æèŠã§ã¯ããã®ã¬ããŒãã¯ããŒã«ã®ã»ããã§ã¯ããã»ã©äŸ¡å€ã¯ãããŸãããïŒããã«ã¯å€å°ã®å©ãã¯ãããŸããïŒãæ£ããOpenJDKéçºè
ã®èãæ¹ãšå°é£ãªç¶æ³ã§ã®æ¯ãèãã®ãã¢ã³ã¹ãã¬ãŒã·ã§ã³ããããŸãã ãã¬ãŒã³ã¹ã«ã€ããŠè©±ããTLABãã³ãŒããã£ãã·ã¥ãã³ã³ã¹ã¿ã³ãããŒã«ãªã©ã®ç¹å®ã®ãã®ã®æå³ã説æããŸãã
4.ã³ããªã³ã®ã³ã«ãŒãã³
â ã¹ã©ã€ããããŠã³ããŒã
æ laãªäººã ããKotlinãç¥ããªãã®ã§ãèªè
ã®ããªãã¯ãã€ãŠ4çªç®ã®æ®µèœãŸã§èªãã ããšããããŸã-æ ãè
ããã§ã¯ãããŸããã ããŒãã³ïŒ elizarov ïŒã¯é«æ§èœãã¬ãŒãã£ã³ã°ãœãããŠã§ã¢ã®å
éçºè
ã§ãããçŸåšã¯Kotlinã©ã€ãã©ãªã®ãªãŒãã§ãã ã³ã«ãŒãã³ã«ã€ããŠã¯ãã§ã«Romaãšã®ã€ã³ã¿ãã¥ãŒãè¡ã£ãŠãããã¬ããŒããèŠãåãŸãã¯åŸã«ããäžåºŠèªã䟡å€ããããããããŸããã Simulaã®æ代ããã³ã«ãŒãã³ã¯éåžžã«å€ãæŠå¿µã§ããããã¹ãŠã®äž»æµèšèªãã³ã«ãŒãã³ããµããŒãããŠããããã§ã¯ãªããJavaã«ã¯ããã«ã¯ç»å ŽããŸããã ããããKotlinã§ã¯æ¢ã«å®å®ããŒãžã§ã³ã«ãªã£ãŠããŸãã
ãã®ã¬ããŒãã¯ãã³ã«ãŒãã³ã«é¢ãããã¹ãŠã®é¢é£ãã質åãã€ãŸããäžè¬çã«ç§ãã¡ã®æ代ã®ãã¹ãŠã®é¢é£ããåé¡ã«çããŸã:-)
ã¬ããŒãæŠèŠ- èšèªéçºã®å
šäœå
- éåæã³ãŒã«ããã¯ããã°ã©ãã³ã°
- å
ç©/çŽæ/ Rx
- ã³ããªã³ã®ã³ã«ãŒãã³
- éåžžã®ã«ãŒããäŸå€åŠçãé«éé¢æ°
- ã«ã¹ã¿ã é«éé¢æ°
- ã³ãŒãããããã¯ãããšããã¹ãŠã次ã®ããã«ãªããŸã
- ã©ã®ããã«æ©èœããŸããïŒ
- äžææ©èœãäžæãã€ã³ãã®ããã³ãŒã
- çµ±å
- ã¬ãããã£ããéåæ
- ã³ãŒã«ããã¯ãšç¶ç¶ïŒSchemeããã®åŒã³åºã/ ccïŒïŒ
- contlinx-coroutines-core
- jdkãguavaãnioãreactorãrx1ãrx2
- ã³ã«ãŒãã³ãå®è¡ããæ¹æ³ã¯ïŒ
- éåæ/åŸ
æ©
- Kotlinã«awaitããŒã¯ãŒãããªãã®ã¯ãªãã§ããïŒ
- åæå®è¡ã¯å°é£ã§ãã ãããæ瀺çã«è¡ãå¿
èŠããããŸãã
- éåæãžã®ã³ããªã³ã®ã¢ãããŒã
- Corutinã®æŠå¿µïŒéåžžã«è»œãã¹ã¬ãã
- Javaãšã®çžäºéçš
- åæã³ã«ãŒãã³-çæ/çæ
- ãã£ããããæ°ã®äŸ
- é 次ããã»ã¹ã®éä¿¡ïŒCSPââïŒ
- ã©ã€ãã©ãªãŒvsèšèª
- èã®è¯ã¯å°ãããªããã°ãªããŸããïŒ
- ããŒã¯ãŒãïŒasync / awaitãgenerate / yield
- 修食åïŒãµã¹ãã³ã
- kotlinx-coroutinesïŒèµ·åãéåæãrunBlockingãå°æ¥ãé
延ããžã§ããé
延ã...
3.巚人ã®è©ã®äžïŒã³ããªã³ãç 究ããèšèª
â ã¹ã©ã€ããããŠã³ããŒã
èšèªã®äœæè
ã®1人ããKotlinã«ã€ããŠå ±åããŠãã ããã幞çŠã«å¿
èŠãªãã®ã¯ä»ã«ãããŸããïŒ ãã¬ãŒã³ããŒã·ã§ã³ã®æ¬è³ªãšæ§é ã¯ããšãªã¶ããã®ä»¥åã®ã¬ããŒãã®ãã®ãšã¯ãŸã£ããç°ãªããŸãã å°èª¬ã¯ç¹å®ã®äºæ-ã³ã«ãã³ã®èšèšã«ãããäœãã©ã®ããã«ããªãããããŠãããã©ã®ããã«äœ¿çšãããã«ã€ããŠèªããŸãããKotlinã®ããã°ã©ãã³ã°ã¹ãã«ãåäžãããããã«ãããå¿
èŠã§ãã ããã§ã¯ãã¢ã³ãã¬ã€ïŒ abreslav ïŒã人çã®åèå
šè¬ãæ¹åããäžçã§ã®èªåã®äœçœ®ãç解ããããšã«ã€ããŠèªã£ãŠããŸãã JavaãCïŒãScalaãGroovyãPythonãGosu-ãããã®èšèªããã¹ãŠèªåã®ç®ã§èŠãå Žåãããã¯ããã«èå³æ·±ããã®ã§ãããªããªããè°è«ã®çç±ãããããã§ãïŒ ããã¯ã7é±éã§7èšèªãã§ãããããã1æéã§ãã
ãšããã§ãç§ãã¡ã¯æè¿ã¢ã³ãã¬ã€ãšå¥ã®ã€ã³ã¿ãã¥ãŒãè¡ããŸããããããã¯ã³ããªã³ã ãã§ãªããå€ãã®ç°ãªãããšã«ã€ããŠã§ãã
2.ãœãããŠã§ã¢éçºã®äžçã«ãããã·ãã¢ããŒã ãºãšãžã¥ãã¢ã¯ããœã³ã®åéº
â ã¹ã©ã€ããããŠã³ããŒã
è€æ°ã®ã¹ããŒã«ãŒãé¢äžããã¬ããŒããäœæããããšã¯éåžžã«å°é£ã§ãã å€ãã®å Žåãããã¯æ¬¡ã®ããã«ãªããŸããååã®æéã¯ã¹ããŒãžã«ç«ã£ãŠéå±ããéåžžã«éå±ã«èŠããŸãã Baruch SadogurskyãšEvgeny BorisovïŒ EvgenyBorisov ïŒã®å
±åæŒå¥ã«ã€ããŠèšããããš-ããã©ããããèŠäºã«è¡ããããããã¯èžè¡äœåã§ãã æã¯æ£ããé åºã§éãŸããçŽ æŽãããçµéšãšãã¢ã®ã¬ããŒããå®è¡ããå®è·µãè¡ã£ã2人ã®ãããã¹ããŒã«ãŒãã¹ããŒãžã«ç»å ŽããŠãäž¡è
ã«ãšã£ãŠèå³æ·±ããããã¯ã«ã€ããŠè©±ãåããŸããã ãªãããã匷調ããã®ã-éåžžãèŠèŽè
ã¯ãã®ãããªãã¬ãŒã³ããŒã·ã§ã³ã®äœæãäœã§ããããç¥ãããåœç¶ã®ããšãšã¿ãªããŸãã
ããããçµæã¯æè³ãæ£åœåããŸããã ããªãèªèº«ã®å€æã§ãããã¯å€æ¹ã®åºèª¿è¬æŒã§ãããææ°ã®äŒè°å ±åæžã§ããããã®éã人ã
ã¯ãã§ã«2æ¥éã®é«ã§ç²ãæãŠãŠãããç ãããã誰ããä»ãã家ã«åž°ãå¿
èŠããããªã©ã§ãã ããã«ããããããã600人以äžã確ãã«ããŒã«ã«æ®ã£ãŠããŸããã
ããã¯ã¬ããŒãã¬ããŒãã§ã¯ãªããã¬ããŒãã衚瀺ãããã®ã§ãããç£èŠããå¿
èŠããããŸãã ãã®äžã§ãããŒã ãºãšã¯ããœã³ã¯ãæ¥åžžã®éçºã§ééãããééããããŸãã¯ééããããã€ãã®ããºã«ãæããã«ããŸãã ã¬ããŒãžã³ã¬ã¯ã¿ãŒããã€ãã³ãŒãã®ã¬ããã¯ãããŸããããéåžžã®éçºè
ãæ¥åžžæ¥åã§å°æãããããŠã³ã¿ã€ã ãç· ãåãã®ãããã¡ã€ãªã³ã°ãé·æã«ãããäžæ³ã«ã€ãªããããŒã«ãã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯ããããŸãã å®éã«ã¯ããã®ã¬ããŒãã§ã¯ãSherlockãšWatsonã¯ã誰ãããã§ã«èžã¿ã€ããé¡ã®æã®ã²ããçæããé¡ãå®ããŸãã
ãããã£ãŠãããã§ã¯ç°¡åãªèŠçŽã¯ãããŸããããããªãéå§ããŠèŠèŽããã ãã§ãã
1.èªåã§èµ·åããŠãã ãããæ¥ãæ¥ãŠããŸã
â ã¹ã©ã€ããããŠã³ããŒã
Baruch + GamowãBaruch + Borisovã人æ°ã®ãããã¢ã¬ããŒãã®èè
ã®äžã§è¡æ¹äžæã«ãªã£ãŠããã®ã¯èª°ã§ããïŒ ããã§ããããªãœã+ ãã«ã«ãã§ã ïŒ tolkkv ïŒã åºèª¿è¬æŒã§ã¯ãªãããèšé²çãªæ°ã®åå è
ãéããå¥ã®ã¯ãŒã«ãªã¬ããŒã-å人以äžã éåžžã«å€ãã®è³æããããäŒè°ããã°ã©ã ã§2ã€ã®ã¹ãããå
šäœãå²ãåœãŠããããããYouTubeã§2ã€ã®ãããªå
šäœãèŠèŽããå¿
èŠããããŸãã
äœå¹ŽãåãJavaããã°ã©ããŒã¯ãæ°èŠãã䜿çšããŠãµãŒãã¹ãäœæããŠããŸããã å€ãã®æåã¢ã¯ã·ã§ã³ãå®è¡ããæ§æãããžãã¹ããžãã¯ãšæ··åããŸããã 圌ãã¯ã³ããŒã»ããŒã¹ãæè¡ã䜿çšããŸããã æšããªã³ãŒãã®å€ãã®è¡ãæžãããŠããŸããããæã«ã¯ããŸããããŸããã
ããããæ¥ãæ¥ãŸããã 圌ãšäžç·ã«å€ãã®ããšãå€ãããŸãã... Springã®ããžãã¯ã·ãªã³ããŒããå€ãã®ãããžãã¯ããååŸããã³ãŒããããã¯ãªãŒã³ã§ã·ã³ãã«ã§ä¿å®å¯èœã«ãªããŸããã
ãããŠãSpring Bootãç»å ŽããŸããã äžæ¹ã§ãããŒãžã§ã³ã®ç«¶åãæ§æã¿ã¹ã¯ãã€ã³ãã©ã¹ãã©ã¯ãã£ãã³ã®æäœãç°å¢ã®ã»ããã¢ããã®åé¡ããããŠãã¡ãããjar / warã¢ãŒã«ã€ãã®æ§ç¯ãå«ãã¢ããªã±ãŒã·ã§ã³ã®èµ·åãŸãã¯ãããã€ãªã©ãæ¢åã®æ°åã®åé¡ã解決ããŸãã äžæ¹ãSpring Bootã¯ããžãã¯ã·ãªã³ããŒã«ããã«å€ãã®ããžãã¯ãè¿œå ããŸããã ãã®çµæã2ã€ã®ã·ããªãªããããŸãã
- 誰ãæ¹æ³ãç¥ããŸãããããã¹ãŠãããŸãæ©èœããŸãã
- äœãæ©èœããããã®çç±ã¯èª°ã«ãããããŸããã
ãã®ã¬ããŒãã¯ãSpring Bootããžãã¯ã®åºæ¬çãªç§å¯ãæããã«ããŠããŸãã äžè¬çãªSpring Bootã¢ããªã±ãŒã·ã§ã³ã®åºæ¬çãªååãšèŠåãç解ã§ããŸãã CyrilãšEugeneã®ã¿ã¹ã¯ãã·ãªã³ããŒããã®ãã¹ãŠã®éæ³ãããªãã«ãšã£ãŠããéæãªããã»ã¹ã«å€ããããã¹ãŠãããŸããããšãã ãã§ãªããåé¡ã®æ¬è³ªãç解ããææ¥è»ãä»ã®ãµãŒãã¹ã®å©ããªãã§åé¡ã解決ããããšãã§ããŸãç·æ¥é»è©±ã
ãããã«
ãªã¹ããããã¹ãŠã®ãããªãèŠãã®ã«æ°æ¥ããããŸããã ç°¡åã§ã¯ãããŸããã§ããããããã ãã®äŸ¡å€ãããããšã¯æããã§ãã çŸå®ã«ã¯ãã«ã³ãã¡ã¬ã³ã¹ã«ã¯ããã«å€ãã®ã¬ããŒãããããŸãããããããã®ããã10ã衚瀺ããããšã¯ãã¯ããã«å€§ããªæ¹æ³ã®è¯ãåºçºç¹ã§ãã ãããã®ã¬ããŒããã芧ã«ãªãå Žåã¯ãæ brã«ãªããªãã§ãHabréã®ã³ã¡ã³ãã«ã¬ãã¥ãŒãæžããŠãã ããã
äžæ¹ã次ã®JPointã®ãã±ããã賌å
¥ããããšã¯ãã§ã«å¯èœã§ãã 2019幎4æ5ã6æ¥ã«WTC Congress Centerã§éå¬ãããŸãã 1æ1æ¥ãŸã§ãäœäŸ¡æ Œã§ãã±ããã賌å
¥ããæ©äŒããŸã ãããŸãïŒ