Π ΡΡΠΎΠΌ Π³ΠΎΠ΄Ρ ΠΌΡ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΠΌ Π²ΡΠ΅ΡΡΠ΅Π· ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡ ΡΠ΅ΠΌΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ²,
Java ΠΈ JVM ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½Ρ, Π½ΠΎ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π±Π΅ΡΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠΌΠΈ ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠΌΠΈ ΠΈ ΠΎΠ±Π»Π°ΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ Java ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ·ΡΠΊΠΈ Π΄Π»Ρ JVM ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π²ΡΠ΅ ΡΠ΅ΠΆΠ΅, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π·Π°Π½ΠΈΠΌΠ°ΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ° Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ, ΠΈΠ·-Π·Π° ΡΠ΅Π³ΠΎ ΠΏΠ»ΠΎΡ
ΠΎ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Ρ ΠΊΠΎΡΠΎΡΠΊΠΎΠΆΠΈΠ²ΡΡΠΈΠΌΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ. Π ΡΡΠ°ΡΡΡΡ, Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΡΠ° ΡΠΈΡΡΠ°ΡΠΈΡ Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΠΌΠ΅Π½ΡΡΡΡΡ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Quarkus.
Π‘Π²Π΅ΡΡ Π±ΡΡΡΡΠ°Ρ ΡΡΠ±Π°ΡΠΎΠΌΠ½Π°Ρ Java Π²ΡΡΠ»Π° Π½Π° Π½ΠΎΠ²ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ!
42 ΡΠ΅Π»ΠΈΠ·Π°, 8 ΠΌΠ΅ΡΡΡΠ΅Π² ΡΠ°Π±ΠΎΡΡ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π° ΠΈ 177 ΠΏΠΎΡΡΡΡΠ°ΡΡΠΈΡ
ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² β ΠΈΡΠΎΠ³ΠΎΠΌ Π²ΡΠ΅Π³ΠΎ ΡΡΠΎ ΡΡΠ°Π» Π²ΡΠΏΡΡΠΊ Π² Π½ΠΎΡΠ±ΡΠ΅ 2019 Π³ΠΎΠ΄Π°
Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΌΡ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ Quarkus ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈΠΌΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΈ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° Π±Π°Π·Π΅ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΠ΄ΡΠ°. ΠΡ Π½Π°ΡΠ½Π΅ΠΌ Ρ ΠΊΡΠ°ΡΠΊΠΎΠ³ΠΎ ΡΠΊΡΠΊΡΡΡΠ° Π² ΠΈΡΡΠΎΡΠΈΡ, Π° Π·Π°ΡΠ΅ΠΌ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ, Π² ΡΠ΅ΠΌ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π΄ΡΠ°Π»ΠΈΠ·ΠΌ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΠ΄ΡΠ° Quarkus ΠΈ ΠΊΠ°ΠΊ
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΠΎΠ±ΡΠ°ΡΠΈΠΌΡΡ ΠΊ ΠΈΡΡΠΎΡΠΈΠΈ.
ΠΠΎΡΠΎΠΊΠΈ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ 8u131, Java ΡΡΠ°Π»Π° Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ Π·Π° ΡΡΠ΅Ρ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠΉ Π² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π΅ ergonomics. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΡΠ΅ΠΏΠ΅ΡΡ JVM Π·Π½Π°Π΅Ρ, Π½Π° ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΡΡ ΡΠ΄ΡΠ°Ρ ΠΎΠ½Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ, ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΠΏΡΠ»Ρ ΠΏΠΎΡΠΎΠΊΠΎΠ² β ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΏΡΠ»Ρ fork/join. ΠΠ΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΎ, ΡΡΠΎ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ, Π½ΠΎ, Π΄ΠΎΠΏΡΡΡΠΈΠΌ, Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅Π΅ HTTP-ΡΠ΅ΡΠ²Π»Π΅ΡΡ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌΡΠ΅ Π² Tomcat, Jetty ΠΈ ΠΏΡΠΎΡ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ΄Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ Π·Π°ΠΏΡΠΎΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π΅ΠΌΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΏΠΎΡΠΎΠΊ ΠΏΡΠΈ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊ ΠΠ, ΡΠ°ΠΉΠ»Π°ΠΌ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΠΌ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌ. Π’ΠΎ Π΅ΡΡΡ, ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΡ Π½Π΅ ΠΎΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΡΠ΄Π΅Ρ, Π° ΠΎΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ². ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΊΠ²ΠΎΡΡ ΠΈΠ»ΠΈ Π»ΠΈΠΌΠΈΡΡ Π² Kubernetes ΠΏΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ ΡΠ΄Π΅Ρ ΡΡΡ Π½Π΅ ΠΎΡΠΎΠ±ΠΎ ΠΏΠΎΠΌΠΎΠ³ΡΡ, ΠΈ Π΄Π΅Π»ΠΎ Π² ΠΈΡΠΎΠ³Π΅ Π·Π°ΠΊΠΎΠ½ΡΠΈΡΡΡ ΡΡΠΎΡΠ»ΠΈΠ½Π³ΠΎΠΌ.
ΠΡΡΠ΅ΡΠΏΠ°Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ
ΠΠΎΡΠΎΠΊΠΈ β ΡΡΠΎ ΠΏΠ°ΠΌΡΡΡ. Π Π²Π½ΡΡΡΠΈΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ½ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π° ΠΏΠ°ΠΌΡΡΡ ΠΎΡΠ½ΡΠ΄Ρ Π½Π΅ ΠΏΠ°Π½Π°ΡΠ΅Ρ. ΠΡΠΎΡΡΠΎ Π½Π°ΡΠ½ΠΈΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ², ΠΈ ΡΠ°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ Π²Ρ ΡΡΠΎΠ»ΠΊΠ½Π΅ΡΠ΅ΡΡ Ρ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠΎΡΡΠΎΠΌ ΡΠ°ΡΡΠΎΡΡ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ ΠΈ, ΠΊΠ°ΠΊ ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅, Ρ Π΄Π΅Π³ΡΠ°Π΄Π°ΡΠΈΠ΅ΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π΅ΡΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠ΅ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½ΡΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΊ ΠΠ, ΠΈΠ»ΠΈ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ-ΡΠΎ Π΅ΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°ΡΡ ΠΎΠ΄ΡΠ΅Ρ ΠΏΠ°ΠΌΡΡΡ, Π²Π°ΠΌ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ Π½ΡΠΆΠ΅Π½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ Π·Π°Π³Π»ΡΠ½ΡΡΡ Π²Π½ΡΡΡΡ JVM ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΠΊΠ°ΠΊ ΠΎΠ½Π° ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠ°ΠΌΡΡΡΡ, ΠΈ ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π΅ ΡΠ±ΠΈΡΡ ΡΠ°ΠΌΡ JVM (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, XX:+UseCGroupMemoryLimitForHeap). Π Π΄Π°ΠΆΠ΅ Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ Java 9, JVM Π½Π°ΡΡΠΈΠ»Π°ΡΡ Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ cgroups ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π°Π΄Π°ΠΏΡΠΈΡΠΎΠ²Π°ΡΡΡΡ, ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΡΡ ΠΎΡΡΠ°Π΅ΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΡΠΌ Π΄Π΅Π»ΠΎΠΌ.
ΠΠ²ΠΎΡΡ ΠΈ Π»ΠΈΠΌΠΈΡΡ
Π Java 11 ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° CPU-ΠΊΠ²ΠΎΡ (Π²ΡΠΎΠ΄Π΅ PreferContainerQuotaForCPUCount). Kubernetes ΡΠΎΠΆΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π»ΠΈΠΌΠΈΡΠΎΠ² ΠΈ ΠΊΠ²ΠΎΡ. ΠΠ°, Π²ΡΡ ΡΡΠΎ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ», Π½ΠΎ, Π΅ΡΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠΏΡΡΡ Π²ΡΡ
ΠΎΠ΄ΠΈΡ Π·Π° ΡΠ°ΠΌΠΊΠΈ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΊΠ²ΠΎΡΡ, ΠΌΡ ΡΠ½ΠΎΠ²Π° ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΠΌ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ ΡΠ°Π·ΠΌΠ΅Ρ β ΠΊΠ°ΠΊ Π² ΡΠ»ΡΡΠ°Π΅ Ρ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠΌΠΈ Java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ β ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠΈΡΠ»Ρ ΡΠ΄Π΅Ρ ΠΈ Ρ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ Π·Π°ΠΏΡΠΎΡ, ΡΠΎ Π΅ΡΡΡ ΡΠΎΠ»ΠΊΡ ΠΎΡ Π²ΡΠ΅Π³ΠΎ ΡΡΠΎΠ³ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ²ΠΎΡΡ ΠΈ Π»ΠΈΠΌΠΈΡΡ ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ (scale-out) ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, Π»Π΅ΠΆΠ°ΡΠ΅ΠΉ Π² ΠΎΡΠ½ΠΎΠ²Π΅ Kubernetes, ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠΎΠΆΠ΅ Π½Π΅ ΡΠ΅ΡΠ°Π΅ΡΡΡ ΡΠ°ΠΌΠ° ΡΠΎΠ±ΠΎΠΉ. ΠΡ ΠΏΡΠΎΡΡΠΎ ΡΡΠ°ΡΠΈΠΌ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ΅ΡΡΡΡΠΎΠ² Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈΠ»ΠΈ Π² ΠΈΡΠΎΠ³Π΅ ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΏΠ΅ΡΠ΅ΡΠ°ΡΡ
ΠΎΠ΄Ρ ΡΠ΅ΡΡΡΡΠΎΠ². Π Π΅ΡΠ»ΠΈ ΡΡΠΎ Π²ΡΡΠΎΠΊΠΎΠ½Π°Π³ΡΡΠΆΠ΅Π½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Π² ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎΠΌ ΠΎΠ±ΡΠ΅Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΌ ΠΎΠ±Π»Π°ΠΊΠ΅, ΠΌΡ ΠΏΠΎΡΡΠΈ Π½Π°Π²Π΅ΡΠ½ΡΠΊΠ° Π½Π°ΡΠΈΠ½Π°Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ΅ΡΡΡΡΠΎΠ², ΡΠ΅ΠΌ ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½ΡΠΆΠ½ΠΎ.
Π ΡΡΠΎ ΡΠΎ Π²ΡΠ΅ΠΌ ΡΡΠΈΠΌ Π΄Π΅Π»Π°ΡΡ?
ΠΡΠ»ΠΈ ΠΏΠΎ-ΠΏΡΠΎΡΡΠΎΠΌΡ, ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΡ
ΠΈ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π° ΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ Π²ΡΠΎΠ΄Π΅ Netty,
ΠΡΠΈ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠ΅ΠΌ Π²Π²ΠΎΠ΄Π΅-Π²ΡΠ²ΠΎΠ΄Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΄Π΅Ρ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ. ΠΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΄ΡΠ°ΠΌΠΈ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Ρ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΈΠΌΠΈ Π½Π°Π³ΡΡΠ·ΠΊΠ°ΠΌΠΈ ΠΏΡΠΈ ΠΌΠ΅Π½ΡΡΠΈΡ ΡΠ΅ΡΡΡΡΠ°Ρ .
ΠΠ°ΠΊ, ΠΈ ΡΡΠΎ Π²ΡΡ?
ΠΠ΅Ρ, Π΅ΡΡΡ Π΅ΡΠ΅ ΠΊΠΎΠ΅-ΡΡΠΎ. Π Π΅Π°ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π»ΡΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΡΡΡΡΡ, Π½ΠΎ ΡΠΎΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΡ ΡΠ΅Π½Ρ. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΊΠΎΠ΄ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°ΠΌ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΠΌΠΎΡΡΠΈ ΠΈ ΠΈΠ·Π±Π΅Π³Π°ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π°. Π ΡΡΠΎ ΡΠΎΠ²ΡΠ΅ΠΌ Π΄ΡΡΠ³Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. Π Ρ ΠΎΡΡ Π·Π΄Π΅ΡΡ Π΅ΡΡΡ ΠΌΠ°ΡΡΠ° ΠΏΠΎΠ»Π΅Π·Π½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΡΡΠΎ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΠΊΠ°ΡΠ΄ΠΈΠ½Π°Π»ΡΠ½Π°Ρ ΡΠΌΠ΅Π½Π° ΠΏΡΠΈΠ²ΡΡΠ½ΠΎΠ³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π° ΠΌΡΡΠ»Π΅Π½ΠΈΡ.
ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π²Π°ΠΌ Π½Π°Π΄ΠΎ Π½Π°ΡΡΠΈΡΡΡΡ ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ. ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π²Ρ Π½Π°ΡΠΈΠ½Π°Π΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠΉ Π²Π²ΠΎΠ΄-Π²ΡΠ²ΠΎΠ΄, Π²Π°ΠΌ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ²Π½ΠΎ ΠΏΡΠΎΠΏΠΈΡΡΠ²Π°ΡΡ, ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΡΠΈ ΠΏΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΎΡΠ²Π΅ΡΠ° Π½Π° Π·Π°ΠΏΡΠΎΡ. ΠΡΠΎΡΡΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΆΠ΄Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ. ΠΠ·Π°ΠΌΠ΅Π½ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ continuation. ΠΠΎ ΠΈ ΡΡΠΎ Π΅ΡΠ΅ Π½Π΅ Π²ΡΠ΅: ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠΉ Π²Π²ΠΎΠ΄-Π²ΡΠ²ΠΎΠ΄, Π²Π°ΠΌ Π½ΡΠΆΠ½Ρ ΠΈ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡ, ΠΈ ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²Π΅Π·Π΄Π΅. Π ΡΠ»ΡΡΠ°Π΅ Ρ HTTP Π²ΡΡ ΠΏΡΠΎΡΡΠΎ, Π½ΠΎ Π΅ΡΡΡ Π΅ΡΠ΅ ΠΈ ΠΠ, ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅.
Π Ρ ΠΎΡΡ ΡΠΎΡΠ°Π»ΡΠ½Π°Ρ ΡΠΊΠ²ΠΎΠ·Π½Π°Ρ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ Π΄Π°Π΅Ρ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ, ΡΠ°ΠΊΠΎΠΉ ΡΠ΄Π²ΠΈΠ³ Π±ΡΠ²Π°Π΅Ρ ΡΡΡΠ΄Π½ΠΎ ΠΏΠ΅ΡΠ΅Π²Π°ΡΠΈΡΡ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅. ΠΠΎΡΡΠΎΠΌΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΡΠ΅ΡΠ°ΡΡ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΡΠΉ ΠΈ ΠΈΠΌΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΠΉ ΠΊΠΎΠ΄ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ΠΌ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ:
- ΠΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΡΡΡΡΡ Π½Π° Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π½Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ;
- ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΠΎ ΡΡΠΈΠ»Ρ ΠΊΠΎΠ΄ Π² Π΅Π΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΠ°ΡΡΡΡ .
ΠΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΠΌ Quarkus
Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, Π² ΡΡΠΎΠΌ ΠΈ Π΅ΡΡΡ ΡΡΡΡ Quarkus β ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΡΡ ΠΈ ΠΈΠΌΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
Π ΠΎΡΠ½ΠΎΠ²Π΅ Quarkus Π»Π΅ΠΆΠ°Ρ Vert.x ΠΈ Netty, ΠΏΠΎΠ²Π΅ΡΡ ΠΊΠΎΡΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ΅Π»ΡΠΉ ΡΡΠ΄ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ, ΠΏΡΠΈΠ·Π²Π°Π½Π½ΡΡ ΠΏΠΎΠΌΠΎΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ. Quarkus ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ HTTP-ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ², Π½ΠΎ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ ΡΠΎΠ±ΡΡΠΈΡΠΌΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡ. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ²ΠΎΠ΅ΠΉ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΠΏΡΠΈΡΠΎΠ΄Π΅, ΠΎΠ½ ΠΎΡΠ΅Π½Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ (Apache Kafka, AMQP ΠΈ Ρ.Π΄).
ΠΡΡ Ρ ΠΈΡΡΠΎΡΡΡ Π² ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΡΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ ΠΊΠ°ΠΊ Π΄Π»Ρ ΠΈΠΌΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ, ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
Quarkus Ρ ΡΡΠΈΠΌ Π±Π»Π΅ΡΡΡΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ. ΠΡΠ±ΠΎΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΈΠΌΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΠΌ ΠΈ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΡΠΌ ΠΎΡΠ΅Π²ΠΈΠ΄Π΅Π½ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΠΈ Π΄Π»Ρ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΡΠ΄ΡΠΎ. Π Ρ ΡΠ΅ΠΌ ΠΎΠ½ΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ, ΡΠ°ΠΊ ΡΡΠΎ Ρ Π±ΡΡΡΡΡΠΌ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅, ΡΡΠΎ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΡΠ΅ΡΠ΅Π· ΠΏΠΎΡΠΎΠΊ ΡΠΈΠΊΠ»Π° ΡΠΎΠ±ΡΡΠΈΠΉ (event-loop thread, ΠΎΠ½ ΠΆΠ΅ β IO thread). ΠΠΎ Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ REST ΠΈΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, Ρ Quarkus Π½Π°Π³ΠΎΡΠΎΠ²Π΅ ΠΈΠΌΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° HTTP Π² Quarkus ΡΡΡΠΎΠΈΡΡΡ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠ΅Π³ΠΎ ΠΈ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ° (Eclipse Vert.x ΠΈ Netty). ΠΡΠ΅ HTTP-Π·Π°ΠΏΡΠΎΡΡ, ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌΡΠ΅ Π²Π°ΡΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π²Π½Π°ΡΠ°Π»Π΅ ΠΏΡΠΎΡ ΠΎΠ΄ΡΡ ΡΠ΅ΡΠ΅Π· ΡΠΈΠΊΠ» ΡΠΎΠ±ΡΡΠΈΠΉ (IO Thread), Π° Π·Π°ΡΠ΅ΠΌ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ ΡΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ. Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΡΠΊΠΈ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° (ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ worker thread, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π² ΡΠ»ΡΡΠ°Π΅ ΡΠ΅ΡΠ²Π»Π΅ΡΠΎΠ² ΠΈ Jax-RS) ΠΈΠ»ΠΈ ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π° (ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΡΠΉ ΠΌΠ°ΡΡΡΡΡ reactive route).
ΠΠ»Ρ ΠΊΠΎΠ½Π½Π΅ΠΊΡΠΎΡΠΎΠ² ΡΠΈΡΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠ΅ ΠΏΠΎΠ²Π΅ΡΡ Π΄Π²ΠΈΠΆΠΊΠ° Vert.x. ΠΠΎΡΡΠΎΠΌΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ, ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΡ ΡΠΈΡΡΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠ° messaging middleware.
ΠΠ° ΡΠ°ΠΉΡΠ΅
Using Reactive Routes Reactive SQL Clients Using Apache Kafka with Reactive Messaging Using AMQP with Reactive Messaging Using Vertx API
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΡ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΠ»ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ΠΎΠ²ΡΠ΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠΎΠΊΠΈ Π΄Π»Ρ Π·Π½Π°ΠΊΠΎΠΌΡΡΠ²Π° Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ Π°ΡΠΏΠ΅ΠΊΡΠ°ΠΌΠΈ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΡΠΈΡΠ΅ΠΌ Π΄Π»Ρ ΠΈΡ
ΠΏΡΠΎΡ
ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ°, Π½ΠΈΠΊΠ°ΠΊΠ°Ρ IDE Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ, Π΄Π° ΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»Π΅Π½. ΠΠ°ΠΉΡΠΈ ΡΡΠΈ ΡΡΠΎΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ
ΠΠΎΠ»Π΅Π·Π½ΡΠ΅ ΡΠ΅ΡΡΡΡΡ
4 ΠΏΡΠΈΡΠΈΠ½Ρ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Quarkus - Π‘Π°ΠΉΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Quarkus β
quarkus.io - ΠΡΠΎΠ΅ΠΊΡ Quarkus Π½Π° GitHub β
github.com/quarkusio/quarkus - Π’Π²ΠΈΡΡΠ΅Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° Quarkus β
twitter.com/QuarkusIO - Π§Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° Quarkus β
quarkusio.zulipchat.com - Π€ΠΎΡΡΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Quarkus β
groups.google.com/forum/# !forum/quarkus-dev
10 Π²ΠΈΠ΄Π΅ΠΎΡΡΠΎΠΊΠΎΠ² ΠΏΠΎ Quarkus, ΡΡΠΎΠ±Ρ ΠΎΡΠ²ΠΎΠΈΡΡΡΡ Π² ΡΠ΅ΠΌΠ΅
ΠΠ°ΠΊ ΠΏΠΈΡΡΡ Π½Π° ΡΠ°ΠΉΡΠ΅
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠΌΠΎΡΡ Π²Π°ΠΌ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² ΡΠ΅ΠΌΠ΅, ΠΌΡ ΠΎΡΠΎΠ±ΡΠ°Π»ΠΈ 10 Π²ΠΈΠ΄Π΅ΠΎΡΡΠΎΠΊΠΎΠ², Π³Π΄Π΅ ΠΎΡΠ²Π΅ΡΠ°ΡΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π°ΡΠΏΠ΅ΠΊΡΡ Quarkus ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
1. ΠΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΠΌ Quarkus: Java-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΡ Π΄Π»Ρ Kubernetes
ΠΠ²ΡΠΎΡΡ: Π’ΠΎΠΌΠ°Ρ ΠΠ²ΠΎΡΠ½ΡΡΡΠΎΠΌ (Thomas Qvarnstrom) ΠΈ ΠΠΆΠ΅ΠΉΡΠΎΠ½ ΠΡΠΈΠ½ (Jason Greene)
Π¦Π΅Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° Quarkus Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ Java-ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π΄Π»Ρ Kubernetes ΠΈ serverless-ΡΡΠ΅Π΄, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΡΡ ΠΈ ΠΈΠΌΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ
Π΅Π΄ΠΈΠ½ΠΎΠΉ ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΡΡΠΎΠ±Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΌΠΎΠ³Π»ΠΈ Π³ΠΈΠ±ΠΊΠΎ Π²Π°ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΠΈΡΠΎΠΊΠΈΠΌ ΡΠΏΠ΅ΠΊΡΡΠΎΠΌ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ
Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π£Π·Π½Π°ΠΉΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ· Π²Π²ΠΎΠ΄Π½ΠΎΠΉ Π»Π΅ΠΊΡΠΈΠΈ Π½ΠΈΠΆΠ΅.
2. Quarkus: ΡΠ²Π΅ΡΡ Π±ΡΡΡΡΠ°Ρ ΡΡΠ±Π°ΡΠΎΠΌΠ½Π°Ρ Java
ΠΠ²ΡΠΎΡ: ΠΠ»ΡΡ Π‘Π°ΡΡΠ΅Ρ (Burr Sutter)
ΠΠΈΠ΄Π΅ΠΎΡΡΠΎΠΊ ΠΈΠ· ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-Π»Π΅ΠΊΡΠΎΡΠΈΡ DevNation Live Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Quarkus Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΡ
Java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, API, ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΈ serverless-ΡΡΠ½ΠΊΡΠΈΠΉ Π² ΡΡΠ΅Π΄Π΅ Kubernetes/OpenShift, ΡΠ΄Π΅Π»Π°Π² ΠΈΡ
Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΌΠ΅Π½ΡΡΠ΅, Π±ΡΡΡΡΠ΅Π΅ ΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠ΅Π΅.
3. Quarkus ΠΈ GraalVM: ΡΠ°Π·Π³ΠΎΠ½ΡΠ΅ΠΌ Hibernate Π΄ΠΎ ΡΠ²Π΅ΡΡ ΡΠΊΠΎΡΠΎΡΡΠ΅ΠΉ ΠΈ ΡΠΆΠΈΠΌΠ°Π΅ΠΌ Π΄ΠΎ ΡΡΠ±Π°ΡΠΎΠΌΠ½ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ²
ΠΠ²ΡΠΎΡ: Π‘Π΅ΠΉΠ½ ΠΡΠΈΠ½ΠΎΠ²Π΅ΡΠΎ (Sanne Grinovero)
ΠΠ· ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΠΈ Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ Quarkus, ΠΊΠ°ΠΊ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈ ΠΊΠ°ΠΊ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π²ΡΠΎΠ΄Π΅ Hibernate ORM, ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΌΠΈ Ρ native-ΠΎΠ±ΡΠ°Π·Π°ΠΌΠΈ GraalVM.
4. Π£ΡΠΈΠΌΡΡ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ serverless-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΠ²ΡΠΎΡ: ΠΠ°ΡΡΠΈΠ½ ΠΡΡΠ΅Ρ (Marthen Luther)
Π Π²ΠΈΠ΄Π΅ΠΎ Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΎΡΡΠΎΠ΅ Java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Quarkus ΠΈ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ Π΅Π³ΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ serverless-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Knative.
5. Quarkus: ΠΊΠΎΠ΄ΠΈΡΡΠΉΡΠ΅ Ρ ΡΠ΄ΠΎΠ²ΠΎΠ»ΡΡΡΠ²ΠΈΠ΅ΠΌ
ΠΠ²ΡΠΎΡ: ΠΠ΄ΡΠΎΠ½ Π―Π½Π°Π³Π° (Edson Yanaga)
ΠΠΈΠ΄Π΅Π³Π°ΠΉΠ΄ ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Quarkus, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΏΠΎΠ½ΡΡΡ ΠΏΠΎΡΠ΅ΠΌΡ Quarkus Π·Π°Π²ΠΎΠ΅Π²ΡΠ²Π°Π΅Ρ ΡΠ΅ΡΠ΄ΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ².
6. Java ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ β ΠΊΠ°ΠΊΠΈΠΌ Π±ΡΠ΄Π΅Ρ ΠΈΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠ΅ Π±ΡΠ΄ΡΡΠ΅Π΅
ΠΠ²ΡΠΎΡ: ΠΠ°ΡΠΊ ΠΠΈΡΡΠ» (Mark Little)
ΠΡΠ° ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΡ Π·Π½Π°ΠΊΠΎΠΌΠΈΡ Ρ ΠΈΡΡΠΎΡΠΈΠ΅ΠΉ Java ΠΈ ΠΎΠ±ΡΡΡΠ½ΡΠ΅Ρ, ΠΏΠΎΡΠ΅ΠΌΡ Quarkus β ΡΡΠΎ Π±ΡΠ΄ΡΡΠ΅Π΅ Java.
7. Quarkus: ΡΠ²Π΅ΡΡ Π±ΡΡΡΡΠ°Ρ ΡΡΠ±Π°ΡΠΎΠΌΠ½Π°Ρ Java
ΠΠ²ΡΠΎΡ: ΠΠΌΠΈΡΡΠΈΡ ΠΠ΄ΡΠ΅Π°Π½Π΄ΠΈΡ (Dimitris Andreadis)
ΠΠ±Π·ΠΎΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² Quarkus, ΠΏΠΎΠ»ΡΡΠΈΠ²ΡΠΈΡ
ΠΏΡΠΈΠ·Π½Π°Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ²: ΠΏΡΠΎΡΡΠΎΡΠ°, ΡΠ²Π΅ΡΡ
Π²ΡΡΠΎΠΊΠΈΠ΅ ΡΠΊΠΎΡΠΎΡΡΠΈ, Π»ΡΡΡΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΡ.
8. Quarkus ΠΈ ΡΡΠ±Π°ΡΠΎΠΌΠ½ΡΠ΅ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ
ΠΠ²ΡΠΎΡ: ΠΠ»Π΅ΠΌΠ΅Π½Ρ ΠΡΠΊΠΎΡΡΠ΅Ρ (Clement Escoffier)
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Ρ GraalVM Quarkus ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΠ²Π΅ΡΡ
Π±ΡΡΡΡΡΠΉ ΠΎΠΏΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΡΡΠ±Π°ΡΠΎΠΌΠ½ΡΡ ΡΡΠ΅Π΄Ρ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠ²ΡΠΎΡ Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Π΅ Quarkus ΠΈ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π΅ΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ ΠΏΠΎΡΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ΠΉ Π΄Π°Π½Π½ΡΡ
.
9. Quarkus ΠΈ Π±ΡΡΡΡΠ°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Eclipse MicroProfile
ΠΠ²ΡΠΎΡ: ΠΠΆΠΎΠ½ ΠΠ»ΠΈΠ½Π³Π°Π½ (John Clingan)
Π‘ΠΎΡΠ΅ΡΠ°Ρ Eclipse MicroProfile ΠΈ Quarkus, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ MicroProfile, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ Π·Π° ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π΄Π΅ΡΡΡΠΊΠΈ ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄. Π Π²ΠΈΠ΄Π΅ΠΎ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΡΡΡ, ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ MicroProfile Π΄Π»Ρ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Kubernetes.
10. Java, Π²Π΅ΡΡΠΈΡ Β«Π’ΡΡΠ±ΠΎΒ»
ΠΠ²ΡΠΎΡ: ΠΠ°ΡΠΊΡΡ ΠΠΈΠ»Ρ (Marcus Biel)
ΠΠ²ΡΠΎΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Quarkus Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠΏΠ΅ΡΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΡ
ΠΈ ΡΡΠΏΠ΅ΡΠ±ΡΡΡΡΡΡ
Java-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ², ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ
ΡΠΎΠ²Π΅ΡΡΠΈΡΡ Π½Π°ΡΡΠΎΡΡΠΈΠΉ ΠΏΡΠΎΡΡΠ², ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π² serverless-ΡΡΠ΅Π΄Π°Ρ
.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com