ä»å¹Žã¯ã³ã³ããããŒããæ¬æ Œçã«éçºããäºå®ã§ãã
Java ãš JVM ã¯äŸç¶ãšããŠéåžžã«äººæ°ããããŸããããµãŒããŒã¬ã¹ ãã¯ãããžãã¯ã©ãŠã ãã€ãã£ãã®ãã€ã¯ããµãŒãã¹ã䜿çšããå ŽåãJava ããã®ä»ã® JVM èšèªã¯ã¡ã¢ãªç©ºéãå æããããèªã¿èŸŒã¿ãé
ãããããããŸããŸã䜿çšãããªããªããŸããã寿åœã®çãã³ã³ããã§ã®äœ¿çšã«ã¯ããŸãé©ããŠããŸããã 幞ããªããšã«ãQuarkus ã®ãããã§ããã®ç¶æ³ã¯å€ããå§ããŠããŸãã
è¶ é«éã®ãµãã¢ããã㯠Java ãæ°ããªã¬ãã«ã«å°éããŸããã
42 ã®ãªãªãŒã¹ã8 ãæã®ã³ãã¥ããã£äœæ¥ã177 人ã®çŽ æŽãããéçºè
- ãã®ãã¹ãŠã®çµæã 2019 幎 XNUMX æã®ãªãªãŒã¹ãšãªããŸããã
ä»æ¥ã¯ãQuarkus ãåœä»€åããã°ã©ãã³ã° ã¢ãã«ãšãªã¢ã¯ãã£ã ããã°ã©ãã³ã° ã¢ãã«ãåäžã®ãªã¢ã¯ãã£ã ã³ã¢ã«çµåããæ¹æ³ã説æããŸãã ãŸãç°¡åãªæŽå²ããå§ããŠãQuarkus ã®ãªã¢ã¯ãã£ã ã³ã¢äºå
è«ãšã¯äœãããŸããã®ä»çµã¿ã«ã€ããŠè©³ãã説æããŸãã
ãŸããæŽå²ãèŠãŠã¿ãŸãããã
ã¹ããªãŒã ãšã³ã³ãã
ããŒãžã§ã³ 8u131 以éã人éå·¥åŠæ©èœã®æ¹åã«ãããJava ã¯å€ããå°ãªããã³ã³ããããµããŒãããããã«ãªããŸããã ç¹ã«ãJVM ã¯å®è¡äžã®ããã»ããµ ã³ã¢ã®æ°ãèªèããããã«å¿ããŠã¹ã¬ãã ããŒã« (éåžžã¯ãã©ãŒã¯/ãžã§ã€ã³ ããŒã«) ãæ§æã§ããããã«ãªããŸããã ãã¡ãããããã¯çŽ æŽãããããšã§ãããHTTP ãµãŒãã¬ããã䜿çšããTomcatãJetty ãªã©ã§å®è¡ãããåŸæ¥ã® Web ã¢ããªã±ãŒã·ã§ã³ããããšããŸãã ãã®çµæããã®ã¢ããªã±ãŒã·ã§ã³ã¯åãªã¯ãšã¹ãã«åå¥ã®ã¹ã¬ãããäžããI/O æäœãåŸ æ©ããŠããé (ããŒã¿ããŒã¹ããã¡ã€ã«ããŸãã¯ãã®ä»ã®ãµãŒãã¹ã«ã¢ã¯ã»ã¹ãããšããªã©)ããã®ã¹ã¬ããããããã¯ã§ããããã«ããŸãã ã€ãŸãããã®ãããªã¢ããªã±ãŒã·ã§ã³ã®ãµã€ãºã¯ãå©çšå¯èœãªã³ã¢ã®æ°ã§ã¯ãªããåæãªã¯ãšã¹ãã®æ°ã«äŸåããŸãã ããã«ãããã¯ãKubernetes ã®ã³ã¢æ°ã«é¢ããã¯ã©ãŒã¿ãå¶éãããã§ã¯ããŸã圹ã«ç«ãããåé¡ã¯æçµçã«ã¯ã¹ãããã«ã«çµããããšãæå³ããŸãã
ã¡ã¢ãªäžè¶³
ã¹ã¬ããã¯ã¡ã¢ãªã§ãã ãŸããã³ã³ããå ã¡ã¢ãªã®å¶éã¯æ±ºããŠäžèœè¬ã§ã¯ãããŸããã ã¢ããªã±ãŒã·ã§ã³ãšã¹ã¬ããã®æ°ãå¢ããå§ãããšãé ããæ©ããã¹ã€ããã³ã°é »åºŠãå€§å¹ ã«å¢å ãããã®çµæãããã©ãŒãã³ã¹ãäœäžããããšã«ãªããŸãã ãŸããã¢ããªã±ãŒã·ã§ã³ãåŸæ¥ã®ãã€ã¯ããµãŒãã¹ ãã¬ãŒã ã¯ãŒã¯ã䜿çšããŠããå ŽåãããŒã¿ããŒã¹ã«æ¥ç¶ããŠããå Žåããã£ãã·ã¥ã䜿çšããŠããå ŽåããŸãã¯ãã®ä»ã®æ¹æ³ã§ã¡ã¢ãªã䜿ãæãããŠããå Žåã¯ãæããã« JVM ã®å éšã調ã¹ãŠãJVM ã匷å¶çµäºããã«ã¡ã¢ãªãã©ã®ããã«ç®¡çããŠãããã確èªã§ããããŒã«ãå¿ èŠã§ãã JVM èªäœ (XX:+UseCGroupMemoryLimitForHeap ãªã©)ã Java 9 以éãJVM 㯠cgroup ãåãå ¥ããããã«å¿ããŠé©å¿ããããšãåŠç¿ããŸããããã¡ã¢ãªã®äºçŽãšç®¡çã¯äŸç¶ãšããŠããªãè€éãªåé¡ã§ãã
å²ãåœãŠãšå¶é
Java 11 ã§ã¯ãCPU ã¯ã©ãŒã¿ (PreferContainerQuotaForCPUCount ãªã©) ã®ãµããŒããå°å
¥ãããŸããã Kubernetes ã¯ãå¶éãšã¯ã©ãŒã¿ã®ãµããŒããæäŸããŸãã ã¯ããããã¯ãã¹ãŠçã«ããªã£ãŠããŸãããã¢ããªã±ãŒã·ã§ã³ãåã³å²ãåœãŠãããã¯ã©ãŒã¿ãè¶
ãããšãåŸæ¥ã® Java ã¢ããªã±ãŒã·ã§ã³ã®å Žåãšåæ§ã«ããµã€ãºã¯ã³ã¢ã®æ°ãšã³ã¢ããšã«åå¥ã®ã¹ã¬ããã®å²ãåœãŠã«ãã£ãŠæ±ºãŸããŸããèŠæ±ããå Žåãããã«ã¯ã»ãšãã©æå³ããããŸããã
ããã«ãã¯ã©ãŒã¿ãšå¶éããŸã㯠Kubernetes ã®åºç€ãšãªããã©ãããã©ãŒã ã®ã¹ã±ãŒã«ã¢ãŠãæ©èœã䜿çšããŠããå Žåããåé¡ã¯èªåçã«è§£æ±ºãããŸããã åã«å
ã®åé¡ã解決ããããã«ããå€ãã®ãªãœãŒã¹ãè²»ããããéå°ãªè²»çšãè²»ãããŠããŸãã ãã§ãã ãŸãããããªã㯠ãããªã㯠ã¯ã©ãŠãå
ã®é«è² è·ã·ã¹ãã ã®å Žåã¯ãã»ãŒç¢ºå®ã«ãå®éã«å¿
èŠä»¥äžã®ãªãœãŒã¹ã䜿çšããããšã«ãªããŸãã
ãããŠãããããã¹ãŠãã©ãããã°ããã§ããããïŒ
ç°¡åã«èšããšãNetty ãªã©ã®éåæã§ãã³ããããã³ã°ã® I/O ã©ã€ãã©ãªãšãã¬ãŒã ã¯ãŒã¯ã䜿çšããŸãã
ãã³ããããã³ã° I/O ã§ã¯ã䞊è¡ããŠå®è¡ã§ãã I/O ã¹ã¬ããã®æ°ã決å®ããããããã³ã¢ã®æ°ãéèŠãªãã©ã¡ãŒã¿ãŒã«ãªããŸãã ãããæ£ãã䜿çšãããšãã³ã¢éã§è² è·ãå¹æçã«åæ£ããããå°ãªããªãœãŒã¹ã§ããé«ãã¯ãŒã¯ããŒããåŠçã§ããããã«ãªããŸãã
ã©ããã£ãŠãããã ãã§ããïŒ
ããããä»ã«äœããããŸãã ãªã¢ã¯ãã£ã ããã°ã©ãã³ã°ã¯ãªãœãŒã¹ãæå¹ã«æŽ»çšããã®ã«åœ¹ç«ã¡ãŸããã代åã䌎ããŸãã ç¹ã«ããã³ããããã³ã°ã®ååã«åŸã£ãŠã³ãŒããæžãçŽããI/O ã¹ã¬ããã®ãããã¯ãåé¿ããå¿ èŠããããŸãã ãããŠãããã¯éçºãšå®è¡ã®ãŸã£ããç°ãªãã¢ãã«ã§ãã ããã«ã¯äŸ¿å©ãªã©ã€ãã©ãªããããããããŸãããããã§ãéåžžã®èãæ¹ã§ã¯æ ¹æ¬çãªå€åã§ãã
ãŸããéåæã§å®è¡ãããã³ãŒãã®æžãæ¹ãåŠã¶å¿ èŠããããŸãã ãã³ããããã³ã° I/O ã®äœ¿çšãéå§ãããããªã¯ãšã¹ãã«å¯Ÿããå¿çãåä¿¡ãããšãã«äœãèµ·ããããæ瀺çã«æå®ããå¿ èŠããããŸãã åã«ãããã¯ããŠåŸ ã€ã ãã§ã¯æ©èœããªããªããŸãã 代ããã«ãã³ãŒã«ããã¯ãæž¡ãããããªã¢ã¯ãã£ã ããã°ã©ãã³ã°ãç¶ç¶ã䜿çšãããã§ããŸãã ããããããã ãã§ã¯ãããŸããããã³ããããã³ã° I/O ã䜿çšããã«ã¯ããã³ããããã³ã° ãµãŒããŒãšã¯ã©ã€ã¢ã³ãã®äž¡æ¹ããã§ããã°ã©ãã§ãå¿ èŠã§ãã HTTP ã®å Žåã¯ãã¹ãŠãåçŽã§ãããããŒã¿ããŒã¹ããã¡ã€ã« ã·ã¹ãã ãªã©ããããŸãã
ãŸãããšã³ãããŒãšã³ãã®åå¿æ§ãç·åãããšå¹çãæ倧åãããŸãããå®éã«ã¯ãã®ãããªå€åã«å¯ŸåŠããã®ã¯å°é£ã§ãã ãããã£ãŠã次ã®ããšãè¡ãã«ã¯ããªã¢ã¯ãã£ã ã³ãŒããšåœä»€åã³ãŒããçµã¿åãããæ©èœãåææ¡ä»¶ã«ãªããŸãã
- ãœãããŠã§ã¢ ã·ã¹ãã ã®æãè² è·ã®ãããé åã®ãªãœãŒã¹ãå¹æçã«äœ¿çšããŸãã
- æ®ãã®éšåã§ã¯ãããåçŽãªã¹ã¿ã€ã« ã³ãŒãã䜿çšããŸãã
ã¯ãªãŒã¯ã¹ã®çŽ¹ä»
å®éãããã Quarkus ã®æ¬è³ªã§ãããåäžã®ã©ã³ã¿ã€ã ç°å¢å ã§ãªã¢ã¯ãã£ã ã¢ãã«ãšåœä»€åã¢ãã«ãçµã¿åããããšããããšã§ãã
Quarkus 㯠Vert.x ãš Netty ãããŒã¹ã«ããŠãããéçºè ãæ¯æŽããããŸããŸãªãªã¢ã¯ãã£ã ãã¬ãŒã ã¯ãŒã¯ãšæ¡åŒµæ©èœããã®äžã«çµã¿èŸŒãŸããŠããŸãã Quarkus ã¯ãHTTP ãã€ã¯ããµãŒãã¹ã ãã§ãªããã€ãã³ãé§ååã®ã¢ãŒããã¯ãã£ãæ§ç¯ã§ããããã«èšèšãããŠããŸãã ãã®åå¿çãªæ§è³ªã«ãããã¡ãã»ãŒãžã³ã° ã·ã¹ãã (Apache KafkaãAMQP ãªã©) ãšéåžžã«å¹æçã«æ©èœããŸãã
éèŠãªã®ã¯ãåœä»€åã³ãŒããšãªã¢ã¯ãã£ã ã³ãŒãã®äž¡æ¹ã«åããªã¢ã¯ãã£ã ãšã³ãžã³ã䜿çšããæ¹æ³ã§ãã
Quarkus ã¯ãããèŠäºã«å®è¡ããŸãã åœä»€åãšãªã¢ã¯ãã£ãã®ã©ã¡ããéžæãããã¯æããã§ããäž¡æ¹ã«ãªã¢ã¯ãã£ã ã«ãŒãã«ã䜿çšããŠãã ããã ãããæ¬åœã«åœ¹ç«ã€ã®ã¯ãã€ãã³ã ã«ãŒã ã¹ã¬ãã (å¥å IO ã¹ã¬ãã) ãééããã»ãŒãã¹ãŠã®ãã®ãåŠçãããé«éã§ãã³ããããã³ã°ã®ã³ãŒãã§ãã ãã ããå€å žç㪠REST ãŸãã¯ã¯ã©ã€ã¢ã³ãåŽã¢ããªã±ãŒã·ã§ã³ãããå ŽåãQuarkus ã«ã¯åœä»€åããã°ã©ãã³ã° ã¢ãã«ãçšæãããŠããŸãã ããšãã°ãQuarkus ã§ã® HTTP ãµããŒãã¯ããã³ããããã³ã°ã§ãªã¢ã¯ãã£ããªãšã³ãžã³ (Eclipse Vert.x ããã³ Netty) ã®äœ¿çšã«åºã¥ããŠããŸãã ã¢ããªã±ãŒã·ã§ã³ãåä¿¡ãããã¹ãŠã® HTTP ãªã¯ãšã¹ãã¯ããŸãã€ãã³ã ã«ãŒã (IO ã¹ã¬ãã) ãééãã次ã«ãªã¯ãšã¹ãã管çããã³ãŒãã®éšåã«éä¿¡ãããŸãã å®å ã«å¿ããŠããªã¯ãšã¹ã管çã³ãŒãã¯å¥ã®ã¹ã¬ãã (ãµãŒãã¬ããã Jax-RS ã®å Žåã«äœ¿çšããããããããã¯ãŒã«ãŒ ã¹ã¬ãã) å ã§åŒã³åºãããšãããœãŒã¹ I/O ã¹ã¬ãã (ãªã¢ã¯ãã£ã ã«ãŒã) ã䜿çšããããšãã§ããŸãã
ã¡ãã»ãŒãžã³ã° ã·ã¹ãã ã³ãã¯ã¿ã¯ãVert.x ãšã³ãžã³äžã§å®è¡ããããã³ããããã³ã° ã¯ã©ã€ã¢ã³ãã䜿çšããŸãã ãããã£ãŠãã¡ãã»ãŒãžã³ã° ããã«ãŠã§ã¢ ã·ã¹ãã ããã®ã¡ãã»ãŒãžãå¹æçã«éä¿¡ãåä¿¡ãåŠçã§ããŸãã
ãµã€ã
ãªã¢ã¯ãã£ãã«ãŒãã®äœ¿çš ãªã¢ã¯ãã£ã SQL ã¯ã©ã€ã¢ã³ã ãªã¢ã¯ãã£ã ã¡ãã»ãŒãžã³ã°ã§ã® Apache Kafka ã®äœ¿çš ãªã¢ã¯ãã£ã ã¡ãã»ãŒãžã³ã°ã§ã® AMQP ã®äœ¿çš Vertx API ã®äœ¿çš
ãŸããIDE ãã³ã³ãã¥ãŒã¿ãŒãå¿
èŠãšããããã©ãŠã¶ã ãã§ãªã¢ã¯ãã£ã ããã°ã©ãã³ã°ã®ããŸããŸãªåŽé¢ãåŠã¹ããªã³ã©ã€ã³ã®å®è·µãã¥ãŒããªã¢ã«ãäœæããŸããã ãããã®ã¬ãã¹ã³ãèŠã€ããããšãã§ããŸã
圹ã«ç«ã€ãªãœãŒã¹
Quarkus ãè©Šã 4 ã€ã®çç± - Quarkus ãããžã§ã¯ãã® Web ãµã€ã â
quarkus.io - GitHub äžã® Quarkus ãããžã§ã¯ã â
github.com/quarkusio/quarkus - ã¯ã©ãŒã«ã¹ãããžã§ã¯ãTwitter â
twitter.com/QuarkusIO - Quarkusãããžã§ã¯ããã£ãã â
quarkusio.zulipchat.com - Quarkus ãããžã§ã¯ã ãã©ãŒã©ã â
groups.google.com/forum/# !ãã©ãŒã©ã /quarkus-dev
Quarkus ã®ãããã¯ã«æ £ããããã® 10 ã®ãã㪠ã¬ãã¹ã³
圌ãããŠã§ããµã€ãã§èšã£ãŠããããã«ã
ãã®ãããã¯ã®ç解ãå©ããããã«ãQuarkus ã®ããŸããŸãªåŽé¢ãšãã®äœ¿çšäŸãã«ããŒãã 10 ã®ãã㪠ãã¥ãŒããªã¢ã«ãéžæããŸããã
1. Quarkus ã®çŽ¹ä»: Kubernetes çšã®æ¬¡äžä»£ Java ãã¬ãŒã ã¯ãŒã¯
ããŒãã¹ã»ã¯ãŽã¡ãŒã³ã¹ããã ãšãžã§ã€ãœã³ã»ã°ãªãŒã³è
Quarkus ãããžã§ã¯ãã®ç®æšã¯ãKubernetes ããã³ãµãŒããŒã¬ã¹ç°å¢çšã® Java ãã©ãããã©ãŒã ãäœæãããªã¢ã¯ãã£ã ããã°ã©ãã³ã° ã¢ãã«ãšåœä»€åããã°ã©ãã³ã° ã¢ãã«ã XNUMX ã€ã®ã©ã³ã¿ã€ã ç°å¢ã«çµ±åããŠãéçºè
ãå¹
åºãåæ£ã¢ããªã±ãŒã·ã§ã³ ã¢ãŒããã¯ãã£ãæäœããéã«ã¢ãããŒããæè»ã«å€æŽã§ããããã«ããããšã§ãã 詳现ã«ã€ããŠã¯ã以äžã®å
¥éè¬çŸ©ãã芧ãã ããã
2. Quarkus: è¶ é«éãµãã¢ããã㯠Java
æçš¿è
: ã㌠ãµãã¿ãŒ
DevNation Live ã®ãã®ãã㪠ãã¥ãŒããªã¢ã«ã§ã¯ãQuarkus ã䜿çšããŠãKubernetes/OpenShift ç°å¢ã§ãšã³ã¿ãŒãã©ã€ãº Java ã¢ããªã±ãŒã·ã§ã³ãAPIããã€ã¯ããµãŒãã¹ããµãŒããŒã¬ã¹æ©èœãæé©åããããããããå°ãããããé«éã«ãããã¹ã±ãŒã©ãã«ã«ããæ¹æ³ã瀺ããŠããŸãã
3. Quarkus ãš GraalVM: Hibernate ãè¶ é«éã«é«éåãããµãã¢ããã㯠ãµã€ãºã«çž®å°
èè
: ãµã³ãã»ã°ãªããŽã§ã
ãã®ãã¬ãŒã³ããŒã·ã§ã³ã§ã¯ãQuarkus ãã©ã®ããã«èªçããã©ã®ããã«æ©èœãããããŸã Quarkus ã䜿çšã㊠Hibernate ORM ãªã©ã®è€éãªã©ã€ãã©ãªãäœæãããã€ãã£ã GraalVM ã€ã¡ãŒãžãšäºææ§ãæãããæ¹æ³ãåŠã³ãŸãã
4. ãµãŒããŒã¬ã¹ ã¢ããªã±ãŒã·ã§ã³ã®éçºãåŠã¶
èè
: ãã«ãã£ã³ã»ã«ãŒãµãŒ
以äžã®ãããªã¯ãQuarkus ã䜿çšããŠåçŽãª Java ã¢ããªã±ãŒã·ã§ã³ãäœæããããã Knative ã«ãµãŒããŒã¬ã¹ ã¢ããªã±ãŒã·ã§ã³ãšããŠãããã€ããæ¹æ³ã瀺ããŠããŸãã
5. Quarkus: ã³ãŒãã£ã³ã°ã楜ããã§ãã ãã
èè
: ãšããœã³ã»ã€ãã¬
åããŠã® Quarkus ãããžã§ã¯ããäœæããããã®ãã㪠ã¬ã€ããQuarkus ãéçºè
ã®å¿ãæŽãçç±ãç解ã§ããŸãã
6. Java ãšã³ã³ãã - äž¡è ã®å°æ¥ã¯ã©ããªãã
æçš¿è
: ããŒã¯ã»ãªãã«
ãã®ãã¬ãŒã³ããŒã·ã§ã³ã§ã¯ãJava ã®æŽå²ã玹ä»ããQuarkus ã Java ã®æªæ¥ã§ããçç±ã説æããŸãã
7. Quarkus: è¶ é«éãµãã¢ããã㯠Java
èè
: ãã£ãããªã¹ã»ã¢ã³ãã¬ã¢ãã£ã¹
ã·ã³ãã«ããè¶
é«éãæé«ã®ã©ã€ãã©ãªãšæšæºãªã©ãéçºè
ããèªããããŠãã Quarkus ã®å©ç¹ã®æŠèŠã
8. ã¯ã©ãŒã«ã¹ãšäºååãã±ããã·ã¹ãã
èè
: ã¯ã¬ãã³ã»ãšã¹ã³ãã£ãš
GraalVM ãšã®çµ±åã«ãããQuarkus ã¯è¶
é«ééçºãšã¯ã¹ããªãšã³ã¹ãšãµãã¢ããã㯠ã©ã³ã¿ã€ã ç°å¢ãæäŸããŸãã èè
ã¯ãQuarkus ã®ãªã¢ã¯ãã£ããªåŽé¢ãšãããã䜿çšããŠãªã¢ã¯ãã£ããªã¹ããªãŒãã³ã° ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããæ¹æ³ã«ã€ããŠèªããŸãã
9. Quarkus ãš Eclipse MicroProfile ã§ã®è¿ éãªã¢ããªã±ãŒã·ã§ã³éçº
èè
: ãžã§ã³ ã¯ãªã³ã¬ã³
Eclipse MicroProfile ãš Quarkus ãçµã¿åãããããšã§ãéçºè
ã¯æ°åããªç§ã§èµ·åãããã«æ©èœã®ã³ã³ããåããã MicroProfile ã¢ããªã±ãŒã·ã§ã³ãäœæã§ããŸãã ãã®ãããªã§ã¯ãKubernetes ãã©ãããã©ãŒã ã«ãããã€ããããã«ã³ã³ãããŒåããã MicroProfile ã¢ããªã±ãŒã·ã§ã³ãã³ãŒãã£ã³ã°ããæ¹æ³ã«ã€ããŠè©³ãã説æããŸãã
10. Javaããã¿ãŒããããŒãžã§ã³
èè
: ããŒã«ã¹ã»ããŒã«
èè
ã¯ãQuarkus ã䜿çšããŠãç¹ã«ãµãŒããŒã¬ã¹ç°å¢ã§çã®ãã¬ãŒã¯ã¹ã«ãŒãå¯èœã«ããè¶
å°åã§è¶
é«éã® Java ã³ã³ãããäœæããæ¹æ³ã瀺ããŸãã
åºæïŒ habr.com