Java ã¯ä»ã®äžè¬çãªèšèªãšã©ãéãã®ã§ãã? ãªã Java ãæåã«åŠã¶ã¹ãèšèªãªã®ã§ãããã? Java ããŒãããåŠç¿ããããšããä»ã®èšèªã®ããã°ã©ãã³ã° ã¹ãã«ãå¿çšããŠåŠç¿ããããšãã§ããèšç»ãç«ãŠãŠã¿ãŸãããã Java ã§ã®è£œåã³ãŒãã®äœæãšä»ã®èšèªã§ã®éçºã®éãããªã¹ãããŠã¿ãŸãããã ããã€ã«ã»ã¶ããã£ãã³ã¯å°æ¥ã®åå è
ã®ããã®äŒè°ã§ãã®å ±åæžãèªãã
â çããããã«ã¡ã¯ãç§ã®ååã¯ããŒã·ã£ã§ãã ç§ã¯ Yandex.Market ã®éçºè ã§ããä»æ¥ã¯ Java ãåŠã¶çç±ãšå¹æçãªåŠç¿æ¹æ³ã«ã€ããŠèª¬æããŸãã åœç¶ã®è³ªåãããããŸããããªãé·å¹Žã®çµéšãæã€åŒ·åãªéçºè ã§ã¯ãªããç§ããã®è©±ãããã®ã§ãããã? å®éãç§èªèº«ãæè¿ãçŽ XNUMX 幎ååã« Java ãå匷ããã®ã§ããããã©ã®ãããªãã®ããã©ããªèœãšãç©Žããã£ãã®ããä»ã§ãèŠããŠããŸãã
XNUMX 幎åãç§ã¯ Yandex.Market ã§ã€ã³ã¿ãŒã³ã·ããã«åå ããŸããã ç§ã¯ Beru çšã®ããã¯ãšã³ããéçºããŸãããããŒã±ããèªäœçšã«ãããããããªããããã䜿çšããã§ãããã ä»ãç§ã¯ããã§å¥ã®ããŒã ã§åãç¶ããŠããŸãã ããžãã¹ããŒãããŒåãã«Yandex.Marketã®åæãã©ãããã©ãŒã ãäœæããŸãã
å§ããŸãããã å®çšçãªèŠ³ç¹ãã Java ãåŠã¶çç±ã¯äœã§ãã? å®éã®ãšãããJava ã¯éåžžã«æåãªããã°ã©ãã³ã°èšèªã§ãã éåžžã«å€§ããªã³ãã¥ããã£ããããŸãã
äŸãã°ãããã°ã©ãã³ã°èšèªã®äººæ°ãè¡šãææšãšããŠTIOBEã€ã³ããã¯ã¹ãšããã®ããããŸãããããã§ã¯JavaãXNUMXäœã«ãªã£ãŠããŸãã ãŸããæ±äººãµã€ãã§ã¯ãã»ãšãã©ã®æ±äººã Java ã«é¢ãããã®ã§ããããšã«æ°ã¥ãã§ããããã€ãŸããJava ã§éçºããã°ããã€ã§ãä»äºãèŠã€ããããšãã§ããŸãã
ã³ãã¥ããã£ã¯éåžžã«å€§ãããããã©ããªè³ªåã§ã Stack Overflow ãŸãã¯ä»ã®ãµã€ãã§çããèŠã€ãããŸãã ãŸããJava ã§éçºããå Žåãå®éã«ã¯ JVM äžã§ã³ãŒããèšè¿°ããããšã«ãªããããKotlinãScala ãªã©ã® JVM ã䜿çšããèšèªã«ç°¡åã«åãæ¿ããããšãã§ããŸãã
ã€ããªãã®ãŒã®èŠ³ç¹ããèŠããšãJava ã®äœãè¯ãã®ã§ãããã? ããŸããŸãªããã°ã©ãã³ã°èšèªããããŸãã 圌ãã¯ããŸããŸãªåé¡ã解決ããŸãã ããšãã°ãPython ã¯ãç°¡åãªåé¡ã解決ããããã® XNUMX è¡ã®ã¹ã¯ãªãããäœæããã®ã«æé©ã§ãã
ãã©ã¹ã®é¢ãšããŠã¯ãå®è¡å¯èœã³ãŒããå®å šã«å¶åŸ¡ã§ããããšã§ãã ããšãã°ãYandex ç¡äººé転è»ãšããè»ããããŸããããã®ã³ãŒãã¯ãã©ã¹ã§æžãããŠããŸãã ãªãïŒ Java ã«ã¯ã¬ããŒãž ã³ã¬ã¯ã¿ãŒãšãããã®ããããŸãã RAMããäžèŠãªãªããžã§ã¯ããã¯ãªã¢ããŸãã ããã¯èªçºçã«éå§ãããstop-the-world ãå®è¡ããŸããã€ãŸããããã°ã©ã ã®æ®ãã®éšåãåæ¢ãããªããžã§ã¯ããã«ãŠã³ããããªããžã§ã¯ãã®ã¡ã¢ãªãã¯ãªã¢ããŸãã ãããŒã³ã§ãããªããšãã§ããããããã¯ã¯ãŒã«ã§ã¯ãããŸããã ãããŒã³ã¯çã£çŽãã«èµ°è¡ãããã®æç¹ã§ã¡ã¢ãªãæ¶å»ããéè·¯ããŸã£ããèŠãŸããã ãããã£ãŠããããŒã³ã¯ããã«æžãããŠããŸãã
Java ã¯ã©ã®ãããªåé¡ã解決ããŸãã? ããã¯äž»ã«ãæ°å人ãŸãã¯æ°çŸäººã«ãã£ãŠäœå¹ŽããããŠæžããã倧èŠæš¡ãªããã°ã©ã ãéçºããããã®èšèªã§ãã ç¹ã«ãYandex.Market ã®ããã¯ãšã³ãã®å€ã㯠Java ã§æžãããŠããŸãã ç§ãã¡ã¯è€æ°ã®éœåžã«åæ£ããããŒã ãæã£ãŠãããåéœåžã« XNUMX 人ããŸãã ãããŠãã³ãŒãã¯ä¿å®ãç°¡åã§ãXNUMX 幎以äžãµããŒããããŠãããåæã«æ°ãã人ãå
¥ã£ãŠããŠãã®ã³ãŒããç解ããŸãã
èšèªå ã®ã³ãŒããç°¡åã«ãµããŒãããã倧èŠæš¡ãªããŒã ã§ç°¡åã«éçºã§ããããã«ããã«ã¯ãèšèªã«ã©ã®ãããªç¹æ§ãå¿ èŠãã ãŸã第äžã«ãã³ãŒãã¯èªã¿ããããã®ã§ããå¿ èŠããããè€éãªã¢ãŒããã¯ã㣠ãœãªã¥ãŒã·ã§ã³ãç°¡åã«å®è£ ã§ããå¿ èŠããããŸãã ã€ãŸããé«ã¬ãã«ã®æœè±¡åãªã©ãç°¡åã«äœæã§ããå¿ èŠããããŸããããããã¹ãŠã Java ã«ãã£ãŠæäŸãããŸãã ããã¯ãªããžã§ã¯ãæåèšèªã§ãã é«ã¬ãã«ã®æœè±¡åãšè€éãªã¢ãŒããã¯ãã£ãå®è£ ããã®ã¯éåžžã«ç°¡åã§ãã
Java 㯠15 幎以äžåããããèšèªã§ãããããJava çšã®ãã¬ãŒã ã¯ãŒã¯ãã©ã€ãã©ãªãå€æ°ãããŸãã ãã®æ代ã«ã¯ãæžã蟌ãããã®ã¯ãã¹ãŠæžã蟌ãŸããŠãããããå¿ èŠãªãã®ãã¹ãŠãç¶²çŸ ããã©ã€ãã©ãªã倧éã«ãããŸãã
ç§ã®æèŠã§ã¯ãåå¿è
ã® JA ãã¬ã€ã€ãŒã¯ã©ã®ãããªåºæ¬çãªã¹ãã«ãåããŠããå¿
èŠããããŸãã? ãŸã第äžã«ããã㯠Java ã³ã¢èšèªã®ç¥èã§ãã 次ã¯ãããçš®ã®äŸåæ§æ³šå
¥ãã¬ãŒã ã¯ãŒã¯ã§ãã 次ã®ã¹ããŒã«ãŒã®ããªã«ãããã«ã€ããŠè©³ããã話ããŸãã ããŸãæ·±ãã¯å
¥ããŸããã 次ã«ã¢ãŒããã¯ãã£ãšãã¶ã€ã³ãã¿ãŒã³ã§ãã 倧èŠæš¡ãªã¢ããªã±ãŒã·ã§ã³ãäœæããã«ã¯ãã¢ãŒããã¯ãã£çã«çŸããã³ãŒããäœæã§ããå¿
èŠããããŸãã ããã¯ãããŒã¿ããŒã¹ãæäœããã¿ã¹ã¯ã®ããã®ããã皮㮠SQL ãŸã㯠ORM ã§ãã ãããŠãããã¯ããã¯ãšã³ãã«ããã«åœãŠã¯ãŸããŸãã
è¡ãïŒ Javaã³ã¢ã ããã§ã¯å®éã«ã¢ã¡ãªã«ã«ã€ããŠç¥ãã€ããã¯ãããŸãããèšèªèªäœãç¥ãå¿
èŠããããŸãã 泚æãã¹ãããšã ãŸããJava ã¯è¿å¹Žå€ãã®ããŒãžã§ã³ããªãªãŒã¹ããŸãããã€ãŸãã2014 幎ãã 2015 幎ã«ãã㊠4 çªç®ã®ããŒãžã§ã³ããªãªãŒã¹ããããã®åŸã8 çªç®ãXNUMX çªç®ãXNUMX çªç®ãšãããããã®æ°ããããŒãžã§ã³ããªãªãŒã¹ããããããã«ã¯å€ãã®æ°ããã¯ãŒã«ãªæ©èœãå°å
¥ãããŸãããäŸ: Java Stream API ãã©ã ããªã©ãå®çšŒåã³ãŒãã§äœ¿çšãããéåžžã«ã¯ãŒã«ã§æ°é®®ã§ã¯ãŒã«ãªãã®ãé¢æ¥ã§èãããããšãç¥ã£ãŠããã¹ãããšã ãããã£ãŠãJava-XNUMX ã©ã€ãã©ãªã®æ¬æ£ããæ¬ãåãåºããŠåŠç¿ããã¹ãã§ã¯ãããŸããã ãããç§ãã¡ã®èšç»ã§ããJava-XNUMX 以éãåŠç¿ããŸãã
ç§ãã¡ã¯ãStream APIãvar ãªã©ã®ã€ãããŒã·ã§ã³ã«çŽ°å¿ã®æ³šæãæã£ãŠããŸãããããã¯é¢æ¥äžã«è³ªåãããæ¬çªç°å¢ã§ãåžžã«äœ¿çšãããŸãã ã€ãŸããStream API ã¯ã«ãŒããããã¯ããã«åªããŠãããäžè¬çã«ã¯éåžžã«åªãããã®ã§ãã å¿ ãã泚æãã ããã
ã€ãã¬ãŒã¿ãäŸå€ãªã©ãããŸããŸãªãã®ããããŸãã èªåã§å°ããªã³ãŒããæžãéããéèŠã§ã¯ãªããšæããããã®ã ãããã®äŸå€ã¯å¿ èŠãããŸãããããããã誰ãå¿ èŠãšããã®ã§ãããã? ããããé¢æ¥ã§ã¯å¿ ãèãããŸãããæ¬çªã§ã¯å¿ ã圹ã«ç«ã¡ãŸãã äžè¬ã«ãäŸå€ãã€ãã¬ãŒã¿ããã®ä»ã®ãã®ã«æ³šæãæãå¿ èŠããããŸãã
ããŒã¿æ§é ã æ§é äœãªãã§é²ãããšã¯ã§ããŸããããã»ãããèŸæžãã·ãŒããããããšã ããç¥ã£ãŠããã°çŽ æŽãããã§ãããã ãŸããæ§é ã®ããŸããŸãªå®è£
ããããŸãã ããšãã°ãJava ã®åãèŸæžã«ã¯ãHashMap ã TreeMap ãªã©ã®å€ãã®å®è£
ããããŸãã ãããã¯ç°ãªã挞è¿ç·ãæã¡ãå
éšã®æ§é ãç°ãªããŸãã ããããã©ã®ããã«ç°ãªãããã€ã©ã¡ãã䜿çšããããç¥ãå¿
èŠããããŸãã
ãŸãããããã®ããŒã¿æ§é ãå éšã§ã©ã®ããã«æ©èœããããç¥ã£ãŠãããšãéåžžã«åœ¹ç«ã¡ãŸãã ã€ãŸããããããã©ãã ãæ©èœãããããã¹ãæ©èœããæéã ãã§ãªããå éšã®æ§é ãã©ã®ããã«æ©èœããããããšãã° HashMap ã®ãã±ãããäœã§ããããªã©ããããã®æŒžè¿ãç¥ãã®ã¯ç°¡åã§ã¯ãããŸããã
ããªãŒãã°ã©ãã«ã泚ç®ãã䟡å€ããããŸãã ãããã¯è£œåã³ãŒãã§ã¯ããŸãäžè¬çã§ã¯ãããŸããããã€ã³ã¿ãã¥ãŒã§ã¯ãã䜿ãããŸãã ãããã£ãŠãããªãŒãã°ã©ããå¹ ãšæ·±ãã§æšªæã§ããå¿ èŠããããŸãã ãããã¯ãã¹ãŠåçŽãªã¢ã«ãŽãªãºã ã§ãã
倧èŠæš¡ãªã³ãŒããè€éãªã³ãŒããã©ã€ãã©ãªã䜿çšããã³ãŒãããã«ãã¯ã©ã¹ ã³ãŒããæžãå§ãããšããã«ãã·ã¹ãã ãæ§ç¯ããŠäŸåé¢ä¿ã解決ããªããšé£ããããšã«æ°ã¥ãã§ãããã ãããã¯äž»ã« Maven ãš Gradle ã§ãã ãããã䜿çšãããšãã©ã€ãã©ãªã XNUMX è¡ã§ãããžã§ã¯ãã«ã€ã³ããŒãã§ããŸãã ã€ãŸããXNUMX è¡ã® XML ãäœæããã©ã€ãã©ãªããããžã§ã¯ãã«ã€ã³ããŒãããŸãã çŽ æŽãããã·ã¹ãã ã ãããã¯ã»ãŒåããªã®ã§ãMaven ãŸã㯠Gradle ã®ããããã䜿çšããŸãã
次ã«ãããçš®ã®ããŒãžã§ã³ç®¡çã·ã¹ãã ã§ãã Git ã¯äººæ°ãããããã¥ãŒããªã¢ã«ãè±å¯ã«ãããããGit ããå§ãããŸãã ã»ãšãã©ã®äººã Git ã䜿çšããŠããŸããããã¯çŽ æŽãããããšã§ãããGit ãªãã§ã¯çããŠãããŸããã
ãããŠããçš®ã®éçºç°å¢ã IntelliJ Idea ããå§ãããŸãã ããã¯éçºããã»ã¹ãå€§å¹ ã«ã¹ããŒãã¢ããããéåžžã«åœ¹ç«ã¡ããã¹ãŠã®å®åã³ãŒããèªåçã«äœæããŸããäžè¬çã«ãããã¯ã¯ãŒã«ã§ãã
ã¹ã©ã€ãããã®ãªã³ã¯: SQLZOO , ããã©ãã¹ã
SQLã ããã¯ãšã³ããŒã«ã€ããŠå°ãã å®ã¯ããã§é¢çœãäºä»¶ããããŸããã XNUMX åç®ã®ã€ã³ã¿ãŒã³ã·ããé¢æ¥ã® XNUMX æ¥åã人äºæ
åœã®å¥³ã®åããé»è©±ããããXNUMX æ¥ä»¥å
ã« SQL ãš HTTP ã«ã€ããŠèãããšã«ãªãã®ã§ããããåŠã¶å¿
èŠããããšèšãããŸããã ãããŠãSQL ã HTTP ã«ã€ããŠã¯ã»ãšãã©äœãç¥ããŸããã§ããã ãããŠããããªçŽ æµãªãµã€ããèŠã€ããŸãã -
ãŸããããŒã¿ããŒã¹ã®ã¢ãŒããã¯ãã£ãç¥ãããšãéèŠã§ãã ãããã¯ããããçš®é¡ã®ããŒãã€ã³ããã¯ã¹ãæ£èŠåã§ãã ããã«é¢ããäžé£ã®æçš¿ã Habré ã«ãããŸãã
Java ã«ã¯ãSQL ã«å ããŠãJPA ãªã©ã®ããããçš®é¡ã®ãªããžã§ã¯ã ãªã¬ãŒã·ã§ãã« ãããã³ã° ã·ã¹ãã ããããŸãã ããã€ãã®ã³ãŒãããããŸãã æåã®ã¡ãœããã«ã¯ãSQL ã³ãŒã - SELECT id name FROM info.users WHERE id IN userIds ããããŸãã ãŠãŒã¶ãŒ ããŒã¿ããŒã¹ã®ããŒãã«ããããŠãŒã¶ãŒã® ID ãšååãååŸãããŸãã
次ã«ãããŒã¹ã®ãªããžã§ã¯ãã Java ãªããžã§ã¯ãã«å€æããç¹å®ã®ããããŒããããŸãã ãããŠããã®ã³ãŒããå®éã«å®è¡ãã XNUMX çªç®ã®ã¡ãœããã以äžã«ãããŸãã ãããã¯ãã¹ãŠã以äžã«ç€ºãããã«ãJPA ã䜿çšã㊠XNUMX è¡ã§çœ®ãæããããšãã§ããŸãã åãããšãè¡ããŸã - All ByIdIn ãæ€çŽ¢ããŸãã ã€ãŸããã¡ãœããã®ååã«åºã¥ã㊠SQL ã¯ãšãªãçæããŸãã
ãšãŠãã¯ãŒã«ãªããšã ç§èªèº«ãSQL ãç¥ããªãã£ãé 㯠JPA ã䜿çšããŠããŸããã äžè¬ã«ã泚æããŠãã ããã SQL ãåŠã¶ã®ãæ ããã°ãããã¯å€§æšäºã§ãã ãããŠäžè¬çã«ãç«äºã§ãïŒ
æ¥ã Spring ãã¬ãŒã ã¯ãŒã¯ãªã©ãšãããã®ãèããããšããã人ã¯ããªãã§ããããã äœäººãããããããŸããïŒ çç±ããªãããã§ã¯ãããŸããã Spring ã¯ãJava ããã¯ãšã³ãã®ç©ºãã XNUMX ã€ããã®èŠä»¶ã«å«ãŸããŠããŸãã ããããªããã°ã倧èŠæš¡ãªéçºã¯å®çŸã§ããŸããã æ¥ãšã¯äœã§ããïŒ ãŸã第äžã«ãããã¯äŸåæ§æ³šå
¥ãã¬ãŒã ã¯ãŒã¯ã§ãã ããã«ã€ããŠã
Spring Boot ã¯ããã¿ã³ 8080 ã€ã§ãµãŒã㌠ã¢ããªã±ãŒã·ã§ã³ãå®è¡ã§ããããã«ãã Spring ã®äžéšã§ãã THID ã«ç§»åããããã€ãã®ãã¿ã³ãæŒããšããµãŒã㌠ã¢ããªã±ãŒã·ã§ã³ãèµ·åããlocalhost XNUMX äžã§å®è¡ãããããã«ãªããŸãã ã€ãŸãããŸã ã³ãŒãã XNUMX è¡ãæžããŠããŸãããããã§ã«åäœããŠããŸãã ãšãŠãã¯ãŒã«ãªããšã èªåã®äœããæžããããçºç«ããŠãã ããïŒ
Spring ã¯éåžžã«å€§ããªãã¬ãŒã ã¯ãŒã¯ã§ãã ãµãŒã㌠ã¢ããªã±ãŒã·ã§ã³ãååŸããŠäŸåé¢ä¿ã®æ¿å ¥ã解決ããã ãã§ã¯ãããŸããã ããã«ãããREST API ã¡ãœããã®äœæãªã©ãããŸããŸãªããšãå¯èœã«ãªããŸãã ã€ãŸããäœããã®ã¡ãœãããäœæããããã« Get ãããã³ã° ã¢ãããŒã·ã§ã³ãã¢ã¿ããããŸããã ããã§ãHello world ãæžã蟌ãã¡ãœããã localhost äžã«ãã§ã«äœæãããŸããã XNUMXè¡ã®ã³ãŒãã§åäœããŸãã ã¯ãŒã«ã
Spring ã䜿çšãããšããã¹ãã®äœæãç°¡åã«ãªããŸãã 倧èŠæš¡ãªéçºã§ã¯ãã¹ããè¡ããªãæ¹æ³ã¯ãããŸããã ã³ãŒãã¯ãã¹ãããå¿ èŠããããŸãã ãã®ç®çã®ããã«ãJava ã«ã¯åªããã©ã€ãã©ãª JUnit 5 ããããŸããäžè¬çã« JUnit ã§ãããææ°ããŒãžã§ã³ã¯ XNUMX çªç®ã§ãã ãã¹ãã®ããã®ãããããã®ãããããçš®é¡ã®ã¢ãµãŒã·ã§ã³ããã®ä»ã®ãã®ããããŸãã
ãããŠçŽ æŽããã Mockito ãã¬ãŒã ã¯ãŒã¯ããããŸãã ãã¹ããããæ©èœããããšæ³åããŠãã ããã ãã®æ©èœã¯ãäžéã®ã©ããã§ãããšãã° ID ã䜿çšã㊠VKontakte ã«ãã°ã€ã³ããID ãã VKontakte ãŠãŒã¶ãŒã®å§åãååŸãããªã©ãå€ãã®ããšãå®è¡ããŸãã ãããããã¹ãã« VKontakte ãå«ããªãã§ãããããããã¯å¥åŠã§ãã ããããæ©èœããã¹ãããå¿ èŠããããããMockito ã䜿çšããŠãã®ã¯ã©ã¹ãäœæããã¢ãã¯ããæš¡å£ããŸããã
ãªã©ã® ID ãæã€ãªã¯ãšã¹ãããã®ã¯ã©ã¹ã«æ¥ããšãå§ (ããšãã°ãVasya Pupkin) ãè¿ããããšèšãã§ãããã ãããŠããã¯ããŸããããŸãã ã€ãŸããmok XNUMX ã¯ã©ã¹ã®ãã¹ãŠã®æ©èœããã¹ãããŸãã ãããã¯ãŒã«ãªããšã
ã¹ã©ã€ãããã®ãªã³ã¯
ãã¶ã€ã³ãã¿ãŒã³ã ããã¯äœã§ããïŒ ãããã¯ãéçºäžã«çºçããå žåçãªåé¡ã解決ããããã®ãã³ãã¬ãŒãã§ãã éçºã§ã¯ãäœããã®åœ¢ã§ããŸã解決ããããšæãããåäžãŸãã¯é¡äŒŒã®åé¡ãé »ç¹ã«çºçããŸãã ãããã£ãŠã人ã ã¯ãããã®åé¡ã解決ããæ¹æ³ã«é¢ãããã¹ã ãã©ã¯ãã£ã¹ãç¹å®ã®ãã³ãã¬ãŒããèæ¡ããŸããã
æã人æ°ã®ãããã¿ãŒã³ãæ²èŒãã Web ãµã€ã - refactoring.guru ããããŸãããããèªãã§ãã©ã®ãããªãã¿ãŒã³ããããã調ã¹ã倧éã®çè«ãèªãããšãã§ããŸãã åé¡ã¯ããããå®è³ªçã«åœ¹ã«ç«ããªãããšã§ãã å®éãç·Žç¿ã®ãªããã¿ãŒã³ã¯ç¹ã«åœ¹ã«ç«ã¡ãŸããã
Singletone ã Builder ãªã©ã®ããã€ãã®ãã¿ãŒã³ã«ã€ããŠèãã§ãããã 誰ããã®èšèãèããã§ããããïŒ å€ãã®äººã ã èªåã§å®è£ ã§ãããããªç°¡åãªãã¿ãŒã³ããããŸãã ããããæŠç¥ãå·¥å Žããã¡ãµãŒããªã©ã®ãã¿ãŒã³ã®ã»ãšãã©ã¯ãã©ãã«é©çšããããæ確ã§ã¯ãããŸããã
ãããŠãä»ã®äººã®ã³ãŒãã§ãã®ãã¿ãŒã³ãé©çšãããç®æãå®éã«èŠããŸã§ã¯ãèªåèªèº«ã«é©çšããããšã¯ã§ããŸããã ãããã£ãŠããã¿ãŒã³ã«ã€ããŠã¯ç·Žç¿ãéåžžã«éèŠã§ãã refactoring.guru ã§ãããã«ã€ããŠèªãã ãã§ã¯ããŸã圹ã«ç«ã¡ãŸããããå®è¡ãã䟡å€ã¯ééããªããããŸãã
ãªããã¿ãŒã³ãå¿
èŠãªã®ã§ãããã? ç¹å®ã® User ã¯ã©ã¹ããããšããŸãã ID ãšååããããŸãã åãŠãŒã¶ãŒã¯ ID ãšååã®äž¡æ¹ãæã£ãŠããå¿
èŠããããŸãã å·Šäžãæ宀ã§ãã
ãŠãŒã¶ãŒãåæåããã«ã¯ã©ã®ãããªæ¹æ³ããããŸãã? ã³ã³ã¹ãã©ã¯ã¿ãŒãŸãã¯ã»ãã¿ãŒã® XNUMX ã€ã®ãªãã·ã§ã³ããããŸãã äž¡æ¹ã®ã¢ãããŒãã®æ¬ ç¹ã¯äœã§ãã?
ã³ã³ã¹ãã©ã¯ã¿ã æ°ãããŠãŒã¶ãŒ (7ããçµã)ãããããŸããã ããã§ãUser ã¯ã©ã¹ã¯ãªããXNUMX ã€ã®æ°å€ãã£ãŒã«ããæã€å¥ã®ã¯ã©ã¹ããããšããŸãã XNUMX ã€ã®é£ç¶ããæ°å€ãå«ãã³ã³ã¹ãã©ã¯ã¿ãŒãäœæãããŸãã ãããã®æ°åãäœã§ãããããããŠãããã®ã©ããã©ã®ããããã£ã«å±ããŠãããã¯æããã§ã¯ãããŸããã ãã¶ã€ããŒã¯å倧ã§ã¯ãããŸããã
7 çªç®ã®ãªãã·ã§ã³ã¯ã»ãã¿ãŒã§ãã setId(XNUMX), setName(âBondâ) ãšæ確ã«èšè¿°ããŸãã ã©ã®ããããã£ãã©ã®ãã£ãŒã«ãã«å±ããããç解ã§ããŸãã ããããã»ãã¿ãŒã«ã¯åé¡ããããŸãã 第äžã«ãäœããå²ãåœãŠãã®ãå¿ããå¯èœæ§ãããã第äºã«ããªããžã§ã¯ããå€æŽå¯èœã§ããããšãå€æããŸãã ããã¯ã¹ã¬ããã»ãŒãã§ã¯ãªããã³ãŒãã®å¯èªæ§ããããã«äœäžããŸãã ã ããããã人ã ã¯ãã«ããŒãšããã¯ãŒã«ãªãã¿ãŒã³ãæãã€ããŸããã
ããã¯äœã«ã€ããŠã§ãã? ã»ãã¿ãŒãšã³ã³ã¹ãã©ã¯ã¿ãŒãšããäž¡æ¹ã®ã¢ãããŒãã®å©ç¹ã XNUMX ã€ã«çµã¿åãããŠã¿ãŸãããã ç¹å®ã®ãªããžã§ã¯ã Builder ãäœæããŸããããã«ã¯ Id ãã£ãŒã«ããš Name ãã£ãŒã«ãããããããèªäœãã»ãã¿ãŒã«åºã¥ããŠæ§ç¯ããããã¹ãŠã®ãã©ã¡ãŒã¿ãŒãåããæ°ãããŠãŒã¶ãŒãè¿ã Build ã¡ãœããããããŸãã äžå€ãªããžã§ã¯ããšã»ãã¿ãŒãååŸããŸãã ãããïŒ
åé¡ç¹ã¯äœã§ãã? ããã«ã¯å€å žçãªãã«ããŒããããŸãã åé¡ã¯ãäŸç¶ãšããŠäžéšã®ãã£ãŒã«ãã®ãã§ãã¯ãå¿ããå¯èœæ§ãããããšã§ãã ID ã«ã¢ã¯ã»ã¹ããã®ãå¿ããå Žåããã®å ŽåãBuilder ã§ã¯ int åã null å€ã蚱容ããªããããID ã¯ãŒãã«åæåãããŸãã ãããŠãååããBondãã«ã㊠ID ãªãã£ã¹ã«è¡ãã®ãå¿ããå ŽåãIDã0ããšååãBondããæã€æ°ãããŠãŒã¶ãŒãäœæãããŸãã ã¯ãŒã«ã§ã¯ãããŸããã
ãããšæŠã£ãŠã¿ãŸãããã Builder ã§ã¯ãnull ã蚱容ã§ããããã« int ã int ã«å€æŽããŸãã ä»ã§ã¯ãã¹ãŠãçŽ æŽãããã§ãã
ID ãå
¥åããã®ãå¿ããŠãBondããšããååã®ãŠãŒã¶ãŒãäœæããããšãããšããã« ãã€ã³ã¿ãŒäŸå€ãçºçããŸããããã¯ãID ããã«å¯èœã§ã¯ãªãããã«ããŒã«ã¯ãã«ãå
·äœçã«ã¯ãã€ã³ã¿ãŒäŸå€ãããããã§ãã
ãã ããååãä»ããããšãå¿ããå¯èœæ§ãããããããªããžã§ã¯ãã®åçã null ã«èšå®ããŸãã ããã§ãBuilder ãããªããžã§ã¯ããæ§ç¯ãããšãã«ããã£ãŒã«ãã NULL å¯èœã§ãªãããšããã§ãã¯ããŸãã ããã ãã§ã¯ãããŸããã
æåŸã®äŸãèŠãŠã¿ãŸãããã ãã®å Žåãäœããã®æ¹æ³ã§ ID ã©ã³ã¿ã€ã ã« null ãèšå®ããå Žåããããå®è¡ããããšãããã«ãããã®ã¯çŽ æŽãããããšã§ãããä»ééããç¯ããŠããã®ã¯ã¯ãŒã«ã§ã¯ãããŸããã
ãŠãŒã¶ãŒäœææã§ã¯ãªããID ã« null ãèšå®ãããšãã«ãšã©ãŒãã¹ããŒããå¿
èŠããããŸãã ãããã£ãŠãBuilder ã§ã¯ãã»ãã¿ãŒ Integer ã int ã«å€æŽããŸãããããããšãããã« null ãã¹ããŒãããããšãèªãããšã«ãªããŸãã
èŠããã«ãã©ãããããšã§ããïŒ ã·ã³ãã«ãª Builder ãã¿ãŒã³ããããŸããããã®å®è£ ã«ãããã€ãã®åŸ®åŠãªç¹ãããããããã¿ãŒã³ã®ããŸããŸãªå®è£ ã確èªããã®ã¯éåžžã«èå³æ·±ãããšã§ãã åãã¿ãŒã³ã«ã¯æ°åã®å®è£ ããããŸãã ããã¯ã©ããéåžžã«èå³æ·±ããã®ã§ãã
å®çšŒåã³ãŒã㧠Builder ãèšè¿°ããã«ã¯ã©ãããã°ããã§ãããã? ãã¡ãããŠãŒã¶ãŒã§ãã Lombok ã©ã€ãã©ãªããã® Builder ããŒããŒã·ã§ã³ãããã«ã¢ã¿ãããããšãããèªäœã Builder ãçæããŸãã ã€ãŸããã³ãŒãã¯äœãèšè¿°ããŸããããJava ã¯ãã®ã¯ã©ã¹ã«ãã«ããŒããããšãã§ã«èªèããŠããã®ã§ããã®ããã«åŒã³åºãããšãã§ããŸãã
Java ã«ã¯ãå®åæã®èšè¿°ãåé¿ã§ããã¯ãŒã«ãªã©ã€ãã©ãªã§ãã Lombok ãå«ããã»ãšãã©ãã¹ãŠã®ã©ã€ãã©ãªãããããšã¯ãã§ã«è¿°ã¹ãŸããã ãã«ããŒãã²ããã
ãã¿ãŒã³ã¯ã¢ãŒããã¯ãã£çãªãã®ã«ãªãå¯èœæ§ããããXNUMX ã€ã®ã¯ã©ã¹ã ãã§ãªãã·ã¹ãã å
šäœã«ãé¢é£ããŸãã ã·ã¹ãã èšèšã«ã¯ãåäžè²¬ä»»ååãšãããã°ãããååããããŸãã 圌ã¯äœã«ã€ããŠè©±ããŠããã®ã§ãããã? åã¯ã©ã¹ãç¬èªã®æ©èœã®äžéšãæ
åœããå¿
èŠããããšããäºå®ã ãã®å ŽåããŠãŒã¶ãŒãšéä¿¡ããã³ã³ãããŒã©ãŒãã€ãŸã JSON ãªããžã§ã¯ãããããŸãã Facade ã¯ãJSON ãªããžã§ã¯ãã Java ã¢ããªã±ãŒã·ã§ã³ã䜿çšããã¢ãã«ã«å€æããŸãã ãããã®ã¢ãã«ã§åäœããè€éãªããžãã¯ãåãããµãŒãã¹ããããŸãã ãããã®ã¢ãã«ãããŒã¿ããŒã¹ã«é
眮ããããŒã¿ããŒã¹ããååŸããããŒã¿ ã¢ã¯ã»ã¹ ãªããžã§ã¯ãããããŸãã ãããŠããŒã¿ããŒã¹èªäœããããŸãã ã€ãŸããäžã€ã®ã¯ã©ã¹ã§ã¯ãªããŠãäºã€ã®ã¯ã©ã¹ãäœã£ãŠãããããããã¿ãŒã³ã§ãã
Java ãããçšåºŠåŠç¿ããããããŒã¿ããŒã¹ãåããä»ã® API ãæäœãããµãŒã㌠ã¢ããªã±ãŒã·ã§ã³ã REST API ã¯ã©ã€ã¢ã³ãã«å
¬éããç¬èªã®ãããžã§ã¯ããäœæãããšäŸ¿å©ã§ãã ãããããªãã®å±¥æŽæžã«è¿œå ããã®ã¯çŽ æŽãããããšã§ãããããªãã®æè²ãã¯ãŒã«ã«çµããããããšã«ãªãã§ãããã ããã§ããªãã¯ä»äºãåŸãããšãã§ããŸãã
ããã¯ç§ã®ãµãŒã㌠ã¢ããªã±ãŒã·ã§ã³ã®äŸã§ãã XNUMX幎ç®ã®ãšããç§ã¯ã¿ããªãšäžç·ã«ææ«ã¬ããŒããæžããŸããã 圌ãã¯ã€ãã³ããéå¬ããããã®ã¢ãã€ã« ã¢ããªã±ãŒã·ã§ã³ãäœæããŠããŸããã ããã§ãŠãŒã¶ãŒã¯ãVKontakteçµç±ã§ãã°ã€ã³ããå°å³äžã«ãã€ã³ããé
眮ããã€ãã³ããäœæããå人ãã€ãã³ãã«æåŸ
ããã€ãã³ãã®ç»åãä¿åããããšãã§ããŸããã
ãããžã§ã¯ãã§ç§ã¯äœãããŸããã? SQLã䜿çšããã«Spring Bootã§ãµãŒããŒã¢ããªã±ãŒã·ã§ã³ãäœæããŸããã ç§ã¯åœŒã®ããšãç¥ããŸããã§ãããJPAã䜿çšããŠããŸããã äœãã§ããã§ããããïŒ OAuth-2 çµç±ã§ VK ã«ãã°ã€ã³ããŸãã ãŠãŒã¶ãŒã®ããŒã¯ã³ãååŸããããã䜿çšã㊠VK ã«ç§»åãããããå®éã®ãŠãŒã¶ãŒã§ããããšã確èªããŸãã VKontakte ãéããŠãŠãŒã¶ãŒã«é¢ããæ å ±ãåãåããŸãã JPA ãä»ããŠæ å ±ãããŒã¿ããŒã¹ã«ä¿åããããšãã§ããŸããã åçããã®ä»ã®ãã¡ã€ã«ãã³ã³ãã¥ãŒã¿ã®ã¡ã¢ãªã«äžæã«ä¿åããããããžã®ãªã³ã¯ãããŒã¿ããŒã¹ã«ä¿åããŸãã åœæã¯ããŒã¿ããŒã¹ã« CLOB ãªããžã§ã¯ããããããšãç¥ããªãã£ãã®ã§ããã®ããã«ããŸããã ãŠãŒã¶ãŒãã¯ã©ã€ã¢ã³ã ã¢ããªã±ãŒã·ã§ã³çšã® REST API ããããŸããã ãããŠãåºæ¬çãªæ©èœã®åäœãã¹ãããããŸããã
[âŠ] Java ã®åŠç¿ã«æåããç§ã®å°ããªäŸã§ãã 倧åŠã® XNUMX 幎ç®ã§ãç§ã¯ C# ãæããããOOP ããã°ã©ãã³ã°ãã€ãŸãã¯ã©ã¹ãã€ã³ã¿ãŒãã§ã€ã¹ãæœè±¡åãšã¯äœãããããŠãããããªãå¿ èŠãªã®ããç解ããŸããã ãšãŠãå©ãããŸããã ããããªããã°ãJava ãåŠç¿ããã®ã¯éåžžã«é£ããããªãã¯ã©ã¹ãå¿ èŠãªã®ããæ確ã§ã¯ãããŸããã
倧åŠã® XNUMX 幎ç®ã«ã圌ãã¯åã³ Java ã³ã¢ãæããŸããããç§ã¯ããã§æ¢ãŸãããèªå㧠Spring ãå匷ããäžã§è¿°ã¹ãã³ãŒã¹ããŒããŒãã€ãŸãç§ã®ãããžã§ã¯ããæžããŸããã ããããã¹ãŠãèžãŸããŠãç§ã¯ Yandex ã§ã®ã€ã³ã¿ãŒã³ã·ããã«è¡ããé¢æ¥ã«åæ ŒããYandex.Market ã«å
¥ç€ŸããŸããã ããã§ç§ã¯ãBeruããããç§ãã¡ã®ããŒã±ãããã¬ã€ã¹ããã㊠Yandex.Market èªäœã®ããã¯ãšã³ããæžããŸããã
ãã®åŸãå幎åã«åãããŒã±ããå ã®å¥ã®ããŒã ã«ç§»ç±ããŸããã ç§ãã¡ã¯ããžãã¹ããŒãããŒã®ããã«åæãè¡ã£ãŠããŸãã ç§ãã¡ã¯åæãã©ãããã©ãŒã ã«æå±ããŠãããããã¯ãšã³ãã«ã¯ XNUMX 人ãããŸãããã®ãããç§ã¯ãããžã§ã¯ãã«å¯ŸããŠéåžžã«å€§ããªåœ±é¿åãæã£ãŠããŸãã å®ã¯ãšãŠãèå³æ·±ããã§ãã ã€ãŸããååŒå ãæå倧äŒæ¥ã«å¯ŸããŠãã©ã®ãããªã«ããŽãªãŒã§ãã©ã®ã¢ãã«ã§ã©ã®ãããªå£²äžãäžãã£ãŠããã®ããšããåžå ŽããŒã¿ãå®éã«æäŸããŠããŸãã ç§ãã¡ã¯ãã£ã XNUMX 人ã§ãã®ã³ãŒããæžããŠããŸããããšãŠãã¯ãŒã«ã§ãã
ããããšãïŒ åœ¹ç«ã€ãªã³ã¯:
-
-
-
-
-
-
-
-
åºæïŒ habr.com