ืืฉื ื ืื ืื ื ืืชืื ื ืื ืืคืชื ืืจืฆืื ืืช ื ืืฉืื ืืืื,
Java ืื-JVM ืขืืืื ืคืืคืืืจืืื ืืืื, ืืื ืืฉืขืืืืื ืขื ืืื ืืืืืืืช ืืื ืฉืจืชืื ืืืืงืจื-ืฉืืจืืชืื ืืงืืจืืื ืืขื ื, ื ืขืฉื ืฉืืืืฉ ืคืืืช ืืคืืืช ื-Java ืืฉืคืืช JVM ืืืจืืช ืืืืืื ืฉืื ืชืืคืกืืช ืืืชืจ ืืื ืฉืื ืืืืจืื ืืืืืืืช ืืื ืืืขืื ื, ืื ืฉืืืคื ืืืชื ืื ืืชืืื ืืฉืืืืฉ ืขื ืืืืืื ืงืฆืจื ืืืขื. ืืืจืื ืืืื, ืืืฆื ืืื ืืชืืื ืืขืช ืืืฉืชื ืืช ืืืืืช ืืงืืืืจืงืืก.
ื'ืืืื ืชืช-ืืืืืืช ืืืืจื ืืืืืื ืืืืขื ืืจืื ืืืฉื!
42 ืืืืืจืืช, 8 ืืืืฉืื ืฉื ืขืืืื ืงืืืืชืืช ื-177 ืืคืชืืื ืืืืืืื - ืืชืืฆืื ืฉื ืืื ืืืืชื ืืฉืืจืืจ ืื ืืืืืจ 2019
ืืืื ื ืจืื ืืื ืืืฆื Quarkus ืืฉืื ืืืืืื ืฉื ืชืื ืืช ืืืื ืืื ืืชืืืืชืืื ืืืืื ืชืืืืชืืช ืืืช. ื ืชืืื ืืืืกืืืจืื ืงืฆืจื ืืืืืจ ืืื ื ืคืจื ืืื ืืืืืืืื ืืชืืืืชื ืฉื ืงืืืืจืงืืก ืืืืฆื
ืจืืฉืืช, ืืืื ื ืกืชืื ืขื ืืืืกืืืจืื.
ื ืืืื ืืืืืืื
ืืื ืืืจืกื 8u131, Java ืืืื ืืชืืื ืคืืืช ืื ืืืชืจ ืืืืืืืช ืขืงื ืฉืืคืืจืื ืืคืื ืงืฆืืื ืืืืช ืืืจืืื ืืืื. ืืคืจื, ื-JVM ืืืืข ืืขืช ืขื ืืื ืืืืืช ืืขืื ืืื ืคืืขื ืืืืื ืืืืืืจ ืืจืืืืช ืืืืื - ืืืจื ืืื ืืจืืืืช ืืืื/ืืืืืจ - ืืืชืื. ืืืืื ืฉืื ื ืืืจ, ืืื ื ื ืื ืฉืืฉ ืื ื ืืคืืืงืฆืืืช ืืื ืืจื ื ืืกืืจืชืืช ืฉืืฉืชืืฉืช ืืฉืจืชืื ืฉื HTTP ืืคืืขืืช ื- Tomcat, Jetty ืืื'. ืืชืืฆืื ืืื, ืืคืืืงืฆืื ืื ืชืืชื ืืื ืืงืฉื ืฉืจืฉืืจ ื ืคืจื ืืชืืคืฉืจ ืื ืืืกืื ืืช ืืฉืจืฉืืจ ืืื ืืืื ืืืชื ื ืืคืขืืืืช ืงืื/ืคืื, ืืืฉื, ืืขืช ืืืฉื ืืืกื ืื ืชืื ืื, ืืงืืฆืื ืื ืืฉืืจืืชืื ืืืจืื. ืืืืืจ, ืืืืื ืฉื ืืคืืืงืฆืื ืืื ืืื ื ืชืืื ืืืกืคืจ ืืืืืืช ืืืืื ืืช, ืืื ืืืกืคืจ ืืืงืฉืืช ืื-ืืื ืืช. ืื ืืกืฃ, ืื ืืืืจ ืฉืืืกืืช ืื ืืืืืืช ื-Kubernetes ืขื ืืกืคืจ ืืืืืืช ืื ืืขืืจื ืืื ืืจืื, ืืืขื ืืื ืืกืืคื ืฉื ืืืจ ืืกืชืืื ืืืฆืขืจืช.
ืชืฉืืฉืืช ืืืืจืื
ืืืืื ืื ืืืืจืื. ืืืืืืืช ืืืืจืื ืชืื-ืืื ืืื ื ืืฉืื ืคื ืื ืืืืคื ืชืจืืคืช ืคืื. ืคืฉืื ืืชืื ืืืืืื ืืช ืืกืคืจ ืืืืฉืืืื ืืืฉืจืฉืืจืื, ืืืืืงืื ืื ืืืืืืจ ืชืืชืงื ืืขืืืื ืงืจืืืืช ืืชืืืจืืช ืืืืชืื ืืืชืืฆืื ืืื, ืืจืืื ืืืืฆืืขืื. ืืื ืื, ืื ืืืคืืืงืฆืื ืฉืื ืืฉืชืืฉืช ืืืกืืจืืช ืืืงืจื-ืฉืืจืืช ืืกืืจืชืืืช, ืื ืืชืืืจืช ืืืกื ื ืชืื ืื, ืื ืืฉืชืืฉืช ืืืืืื, ืื ืืฉืชืืฉืช ืืื ืืจื ืืืจืช ืืืืืจืื, ืืจืืจ ืฉืืชื ืฆืจืื ืืื ืฉืืืคืฉืจ ืื ืืืกืชืื ืืชืื ื-JVM ืืืจืืืช ืืืฆื ืืื ืื ืื ืืช ืืืืืจืื ืืืื ืืืจืื ืืืชื. JVM ืขืฆืื (ืืืืืื, XX:+UseCGroupMemoryLimitForHeap). ืืืืจืืช ืฉืืื Java 9, ื-JVM ืืื ืืงืื cgroups ืืืืกืชืื ืืืชืื, ืฉืืืจืช ืื ืืืื ืืืืืจืื ื ืืชืจื ืขื ืืื ืืืจืื ืืืื.
ืืืกืืช ืืืืืืืช
Java 11 ืืฆืืื ืชืืืื ืืืืกืืช CPU (ืืื PreferContainerQuotaForCPUCount). Kubernetes ืืฆืืขื ืื ืชืืืื ืืืืืืืช ืืืืกืืช. ืื, ืื ืื ืืืืื ื, ืืื ืื ืืืคืืืงืฆืื ืฉืื ืืืจืืช ืืืืืกื ืฉืืืงืฆืชื, ืืกืืคื ืฉื ืืืจ ื ืงืื ืืช ืืืืื - ืืคื ืฉืงืืจื ืืืืฉืืื Java ืืกืืจืชืืื - ืฉื ืงืืข ืืคื ืืกืคืจ ืืืืืืช ืืขื ืืงืฆืืช ืฉืจืฉืืจ ื ืคืจื ืืื ืืืช ืืื. ืืงืฉื, ืื ืืื ืืขื ืืื ืื.
ืื ืืกืฃ, ืื ืืชื ืืฉืชืืฉ ืืืืกืืช ืืืืืืืช ืื ืืคืื ืงืฆืืืช ื-scale-out ืฉื ืืคืืืคืืจืื ืฉืืืกืืก Kubernetes, ืืืขืื ืื ืื ื ืคืชืจืช ืืขืฆืื. ืื ืื ื ืคืฉืื ืืืืืืื ืืืชืจ ืืฉืืืื ืืคืชืจืื ืืืขืื ืืืงืืจืืช ืื ืืกืืคื ืฉื ืืืจ ืืืฆืืืื ืืืชืจ ืืื. ืืื ืืืืืจ ืืืขืจืืช ืืขืืืก ืืืื ืืขื ื ืฆืืืืจื, ืืืขื ืืืื ืฉืืกืืคื ืฉื ืืืจ ืื ืื ื ืืฉืชืืฉืื ืืืืชืจ ืืฉืืืื ืืื ืฉืื ืื ื ืืืืช ืฆืจืืืื.
ืืื ืืขืฉืืช ืขื ืื ืื?
ืืืืืื ืคืฉืืืืช, ืืฉืชืืฉ ืืกืคืจืืืช ืงืื/ืคืื ืืืืกืืจืืช ืืกืื ืืจืื ืืืช ืืื ืืืกืืืช ืืื Netty,
ืขื ืงืื/ืคืื ืื ืืืกื, ืืกืคืจ ืืืืืืช ืืืคื ืืคืจืืืจ ืืคืชื ืืืืืื ืฉืืื ืงืืืข ืืช ืืกืคืจ ืคืชืืื ืืงืื/ืคืื ืฉื ืืชื ืืืฆืข ืืืงืืื. ืืฉืืืืฉ ื ืืื, ืื ืืืคืฉืจ ืื ืืคืืจ ืืืขืืืืช ืืช ืืขืืืก ืืื ืืืืืืช ืืืืคื ืืขืืืกื ืขืืืื ืืืืืื ืืืชืจ ืขื ืคืืืช ืืฉืืืื.
ืืื, ืื ืืื?
ืื, ืืฉ ืืฉืื ืืืจ. ืชืื ืืช ืจืืืงืืืื ืขืืืจ ืื ืฆื ืืื ืืืชืจ ืืช ืืืฉืืืื, ืื ืื ืืืื ืืืืจ. ืืคืจื, ืืืื ืฆืืจื ืืฉืืชื ืืช ืืงืื ืืคื ืขืงืจืื ืืช ืื ืืืกืืื ืืืืืื ืข ืืืกืืืช ืฉืจืฉืืจื I/O. ืืืื ืืืื ืืืจ ืืืืจื ืฉื ืคืืชืื ืืืืฆืืข. ืืืืจืืช ืฉืืฉ ืืื ืืจืื ืกืคืจืืืช ืฉืืืืฉืืืช, ืขืืืื ืืืืืจ ืืฉืื ืื ืงืืฆืื ื ืืืจื ืืืฉืืื ืืจืืืื.
ืจืืฉืืช, ืขืืื ืืืืื ืืืฆื ืืืชืื ืงืื ืฉืคืืขื ืืืืคื ืืกืื ืืจืื ื. ืืจืืข ืฉืชืชืืื ืืืฉืชืืฉ ื-I/O ืื ืืืกื, ืขืืื ืืฆืืื ืืืคืืจืฉ ืื ืฆืจืื ืืงืจืืช ืืืฉืจ ืืชืงืืืช ืชืืืื ืืืงืฉื. ืคืฉืื ืืืกืื ืืืืืชืื ืืืจ ืื ืืขืืื. ืืืงืื ืืืช, ืืชื ืืืื ืืืขืืืจ ืืชืงืฉืจืืืืช ืืืืจืืช, ืืืฉืชืืฉ ืืชืื ืืช ืจืืืงืืืื ืื ืืืฉื. ืืื ืื ืื ืืื: ืืื ืืืฉืชืืฉ ื-I/O ืื ืืืกื, ืฆืจืื ืื ืฉืจืชืื ืืื ืืงืืืืช ืื ืืืกืืื, ืจืฆืื ืืื ืืงืื. ืืืงืจื ืฉื HTTP ืืื ืคืฉืื, ืืื ืืฉ ืื ืืกืื ื ืชืื ืื, ืืขืจืืืช ืงืืฆืื ืืขืื ืืจืื.
ืืืืจืืช ืฉืชืืืืชืืืช ืืืืืืช ืืงืฆื ืืงืฆื ืืืงืกืืช ืืช ืืืขืืืืช, ืฉืื ืื ืืื ืืืื ืืืืืช ืงืฉื ืืขืืืื ืืคืืขื. ืืื, ืืืืืืช ืืฉืื ืงืื ืชืืืืชื ืืงืื ืฆืืืื ืืืคืืช ืืชื ืื ืืืงืื ืขื ืื ืช:
- ืืฉืชืืฉ ืืืขืืืืช ืืืฉืืืื ืืืืืจืื ืืืขืื ืื ืืืืชืจ ืฉื ืืขืจืืช ืืชืืื ื;
- ืืฉืชืืฉ ืืงืื ืกืื ืื ืคืฉืื ืืืชืจ ืืืืงืื ืื ืืชืจืื ืฉืื.
ืืืืจืืช ืขื ืงืืืืจืงืืก
ืืืขืฉื, ืื ืืืืืช ืฉื Quarkus - ืืฉืื ืืืืืื ืชืืืืชืืื ืืืืจืืืื ืืชืื ืกืืืืช ืืื ืจืืฆื ืืืช.
Quarkus ืืืืกืก ืขื Vert.x ื-Netty, ืขื ืืืืื ืืกืืจืืช ืืืจืืืืช ืจืืืงืืืืืืช ืืืขืื ืืื ืืขืืืจ ืืืคืชื. Quarkus ืืืืขื ืืื ืืืช ืื ืจืง ืฉืืจืืชื ืืืงืจื HTTP, ืืื ืื ืืจืืืืงืืืจืืช ืืื ืขืืช ืืืจืืขืื. ืืฉื ืืืคืื ืืชืืืืชื, ืืื ืขืืื ืืืขืืืืช ืจืื ืขื ืืขืจืืืช ืืขืืจืช ืืืืขืืช (Apache Kafka, AMQP ืืื').
ืืืืืื ืืื ืืืฆื ืืืฉืชืืฉ ืืืืชื ืื ืืข ืชืืืืชื ืขืืืจ ืงืื ืฆืืืื ืืชืืืืชื ืืืื.
ืงืืืืจืงืืก ืขืืฉื ืืืช ืืฆืืจื ืืืจืืงื. ืืืืืจื ืืื ืฆืืืื ืืชืืืืชื ืืจืืจื - ืืฉืชืืฉื ืืงืจื ื ืชืืืืชื ืขืืืจ ืฉื ืืื. ืื ืฉืื ืืืืช ืขืืืจ ืื ืืื ืงืื ืืืืจ ืืื ืืืกื ืฉืืืคื ืืืขื ืืื ืื ืฉืขืืืจ ืืฉืจืฉืืจ ืืืืืช ืืืืจืืขืื, ืืื ืืื IO thread. ืืื ืื ืืฉ ืื REST ืงืืืกื ืื ืืืฉืืื ืฆื ืืงืื, ื-Quarkus ืืฉ ืืืื ืชืื ืืช ืืืื ื ืืืื. ืืืืืื, ืชืืืืช HTTP ื-Quarkus ืืืืกืกืช ืขื ืฉืืืืฉ ืืื ืืข ืื ืืืกื ืืชืืืืชื (Eclipse Vert.x ื-Netty). ืื ืืงืฉืืช ื-HTTP ืืืชืงืืืืช ืขื ืืื ืืืคืืืงืฆืื ืฉืื ืืืขืืจืืช ืชืืืื ืืจื ืืืืืช ืืืจืืข (IO Thread) ืืืืืจ ืืื ื ืฉืืืืช ืืืืง ืฉื ืืงืื ืฉืื ืื ืืช ืืืงืฉืืช. ืืืชืื ืืืขื, ื ืืชื ืืงืจืื ืืงืื ื ืืืื ืืืงืฉืืช ืืชืื ืฉืจืฉืืจ ื ืคืจื (ืื ืฉื ืงืจื worker thread, ืืืฉืืฉ ืืืงืจื ืฉื servlets ื-Jax-RS) ืื ืืืฉืชืืฉ ืืฉืจืฉืืจ ื-I/O ืฉื ืืืงืืจ (ืืกืืื ืชืืืืชื).
ืืืืจื ืืขืจืืช ืืืืขืืช ืืฉืชืืฉืื ืืืงืืืืช ืฉืืื ื ืืืกืืื ืืคืืขืืื ืขื ืืื ืื ืืข Vert.x. ืืื, ืืชื ืืืื ืืฉืืื, ืืงืื ืืืขืื ืืืืขืืช ืืืขืืืืช ืืืขืจืืืช ืชืืื ืช ืืขืืจืช ืืืืขืืช.
ืืืชืจ
ืฉืืืืฉ ืื ืชืืืื ืจืืืงืืืืืื ืืงืืืืช SQL ืจืืืงืืืืืื ืฉืืืืฉ ืืืคืืฆ'ื ืงืคืงื ืขื ืืืืขืืช ืจืืืงืืืืืืช ืฉืืืืฉ ื-AMQP ืขื ืืืืขืืช ืจืืืงืืืืืืช ืฉืืืืฉ ื-Vertx API
ืืฆืจื ื ืื ืืืจืืื ืืืืื ืืงืืื ืื ืืื ืืืื ืืืชื ืืืืืื ืฉืื ืื ืฉื ืชืื ืืช ืจืืืงืืืื ืืืคืืคื ืืืื, ืืื ืฆืืจื ื-IDE ืืืื ืฆืืจื ืืืืฉื. ืืชื ืืืื ืืืฆืื ืฉืืขืืจืื ืืื
ืืฉืืืื ืืืขืืืื
4 ืกืืืืช ืื ืกืืช ืืช Quarkus - ืืชืจ ืคืจืืืงื Quarkus โ
quarkus.io - ืคืจืืืงื Quarkus ื-GitHub -
github.com/quarkusio/quarkus - ืคืจืืืงื Quarkus Twitter -
twitter.com/QuarkusIO - ืฆ'ืื ืคืจืืืงื Quarkus -
quarkusio.zulipchat.com - ืคืืจืืืื ืฉื ืคืจืืืงื ืงืืืงืืก -
groups.google.com/forum/# !forum/quarkus-dev
10 ืฉืืขืืจื ืืืืื ืขื Quarkus ืืื ืืืืืจ ืืช ืื ืืฉื
ืืื ืฉืืืืจืื ืืืชืจ
ืืื ืืขืืืจ ืื ืืืืื ืืช ืื ืืฉื, ืืืจื ื 10 ืืืจืืื ืืืืื ืืืืกืื ืืืืืื ืฉืื ืื ืฉื Quarkus ืืืืืืืืช ืืฉืืืืฉ ืื:
1. ืืืืจืืช ืขื Quarkus: The Next Generation Java Framework ืขืืืจ Kubernetes
ืืืช ืชืืืืก ืงืืืจื ืกืืจืื ืื'ืืืกืื ืืจืื
ืืืืจื ืฉื ืคืจืืืงื Quarkus ืืื ืืืฆืืจ ืคืืืคืืจืืช Java ืขืืืจ Kubernetes ืืกืืืืืช ืืื ืฉืจืชืื, ืืืฉืื ืืืืืื ืฉื ืชืื ืืช ืจืืืงืืืืืื ืืืืื ืืื ืืกืืืืช ืืื ืจืืฆื ืืืช, ืื ืฉืืคืชืืื ืืืืื ืืืืื ืืืืืฉืืช ืืช ืืืืฉื ืฉืืื ืืืฉืจ ืื ืขืืืืื ืขื ืืืืื ืจืื ืฉื ืืจืืืืงืืืจืืช ืืืฉืืืื ืืืืืจืืช. ืืืืืข ื ืืกืฃ ืืืจืฆืืช ืืืืื ืืืื.
2. Quarkus: Java Subatomic Superfast
ืืืช: ืืืจ ืกืืืจ
ืืืจืื ืืืืื ืื ืืืืช DevNation Live ืืืืื ืืืฆื ืืืฉืชืืฉ ื-Quarkus ืืื ืืืืขื ืืืฉืืื Java, ืืืฉืงื API, ืืืงืจื-ืฉืืจืืชืื ืืคืื ืงืฆืืืช ืืื ืฉืจืช ืืกืืืืช Kubernetes/OpenShift, ืื ืฉืืืคื ืืืชื ืืืจืื ืืืชืจ ืงืื ืื, ืืืืจืื ืื ืืชื ืื ืืืจืืื.
3. Quarkus ื-GraalVM: ืืืฆืช Hibernate ืืืืืจืืืืช ืกืืคืจ ืืืืืืฅ ืืืชื ืืืืืื ืชืช-ืืืืืืื
ืืืืจ: Sanne Grinovero
ืืืืฆืืช ืชืืืื ืืืฆื ื ืืฆืจื Quarkus, ืืืฆื ืืื ืคืืขืืช ืืืืฆื ืืื ืืืคืฉืจืช ืืื ืืืคืื ืกืคืจืืืช ืืืจืืืืช, ืืื Hibernate ORM, ืืชืืืืืช ืืชืืื ืืช ืืงืืจืืืช ืฉื GraalVM.
4. ืืื ืืคืชื ืืคืืืงืฆืืืช ืืื ืฉืจืช
ืืืืจ: ืืจืืื ืืืชืจ
ืืกืจืืื ืืืื ืืจืื ืืืฆื ืืืฆืืจ ืืืฉืื Java ืคืฉืื ืืืืฆืขืืช Quarkus ืืืคืจืืก ืืืชื ืืืืฉืื ืืื ืฉืจืช ื-Knative.
5. ืงืืืืจืงืืก: ืชืื ื ืืงืืืื
ืืืืจ: ืืืกืื ืื ืืื
ืืืจืื ืืืืื ืืืฆืืจืช ืคืจืืืงื Quarkus ืืจืืฉืื ืฉืื, ืืืืคืฉืจ ืื ืืืืื ืืืืข Quarkus ืืืื ืืืื ืฉื ืืคืชืืื.
6. ื'ืืืื ืืืืืืืช - ืื ืืืื ืืขืชืื ืฉืืื ืืืื
ืคืืจืกื ืขื ืืื ืืืจืง ืืืื
ืืฆืืช ืื ืืฆืืื ืืช ืืืืกืืืจืื ืฉื Java ืืืกืืืจื ืืืืข Quarkus ืืื ืืขืชืื ืฉื Java.
7. Quarkus: Java Subatomic Superfast
ืืืืจ: ืืืืืืจืืก ืื ืืจืืืก
ืกืงืืจื ืืืืืช ืฉื ืืืชืจืื ืืช ืฉื Quarkus ืฉืืื ืืืืจื ืืืืคืชืืื: ืคืฉืืืช, ืืืืจืืืืช ืืืืืืช ืืืืืื, ืืกืคืจืืืช ืืืกืื ืืจืืื ืืืืืื ืืืืชืจ.
8. ืงืืืืจืงืืก ืืืขืจืืืช ืจืงืืืช ืชืช-ืืืืืืืช
ืืืืจ: ืงืืื ื ืืกืงืืคืืจ
ืืืืฆืขืืช ืืื ืืืจืฆืื ืขื GraalVM, Quarkus ืืกืคืงืช ืืืืืช ืคืืชืื ืืืืจื ืืืืืื ืืกืืืืช ืืื ืจืืฆื ืชืช-ืืืืืืช. ืืืืืจ ืืืืจ ืขื ืืฆื ืืชืืืืชื ืฉื Quarkus ืืืืฆื ืืืฉืชืืฉ ืื ืืื ืืืช ืืคืืืงืฆืืืช ืชืืืืชืืืช ืืกืืจืืืื ื.
9. Quarkus ืืคืืชืื ืืืืจ ืฉื ืืคืืืงืฆืืืช ื-Eclipse MicroProfile
ืืืืจ: ื'ืื ืงืืื ืื
ืขื ืืื ืฉืืืื ืฉื Eclipse MicroProfile ื-Quarkus, ืืคืชืืื ืืืืืื ืืืฆืืจ ืืืฉืืื ืืืืืืช MicroProfile ืขื ืื ืืชืืื ืืช ืืืืคืขืืืช ืชืื ืขืฉืจืืช ืืืคืืืช ืฉื ืืืช. ืืกืจืืื ืืคืจื ืืืฆื ืืงืื ืืคืืืงืฆืืืช MicroProfile ืืืืืช ืืคืจืืกื ืืคืืืคืืจืืช Kubernetes.
10. Java, ืืจืกืช "ืืืจืื".
ืืืืจ: ืืจืงืืก ืืื
ืืืืืจ ืืจืื ืืืฆื ืืืฉืชืืฉ ื-Quarkus ืืื ืืืฆืืจ ืงืื ืืืื ืจืื ืกืืคืจ-ืงืื ืื ืืืืืจืื ืฉื Java ืืืืคืฉืจืื ืคืจืืฆืืช ืืจื ืืืืชืืืช, ืืืืืื ืืกืืืืืช ืืื ืฉืจืช.
ืืงืืจ: www.habr.com