Нативна компилация Π² Quarkus – Π·Π°Ρ‰ΠΎ Ρ‚ΠΎΠ²Π° Π΅ Π²Π°ΠΆΠ½ΠΎ

Π—Π΄Ρ€Π°Π²Π΅ΠΉΡ‚Π΅! Π’ΠΎΠ²Π° Π΅ вторият пост ΠΎΡ‚ Π½Π°ΡˆΠ°Ρ‚Π° сСрия Π·Π° Quarkus – днСс Ρ‰Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π·Π° Ρ€ΠΎΠ΄Π½Π°Ρ‚Π° компилация.

Нативна компилация Π² Quarkus – Π·Π°Ρ‰ΠΎ Ρ‚ΠΎΠ²Π° Π΅ Π²Π°ΠΆΠ½ΠΎ

Quarkus – Ρ‚ΠΎΠ²Π° Π΅ Java стСк, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½ Π·Π° Kubernetes. И ΠΌΠ°ΠΊΠ°Ρ€ Ρ‡Π΅ Ρ‚ΡƒΠΊ всС ΠΎΡ‰Π΅ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°, която трябва Π΄Π° сС ΡΠ²ΡŠΡ€ΡˆΠΈ, Π½ΠΈΠ΅ Π΄ΠΎΠ±Ρ€Π΅ ΠΏΡ€ΠΎΡƒΡ‡ΠΈΡ…ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ аспСкти, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ оптимизацията Π½Π° JVM ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ²Π΅. Π•Π΄Π½Π° ΠΎΡ‚ характСристикитС Π½Π° Quarkus, която ΠΏΡ€Π΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ° повишСн интСрСс срСд Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅, Π΅ комплСксният бСзшСвСн ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π·Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅ Π½Π° Java ΠΊΠΎΠ΄ Π² изпълними Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π·Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ систСми (Ρ‚Π°ΠΊΠ° Π½Π°Ρ€Π΅Ρ‡Π΅Π½Π°Ρ‚Π° β€žΡ€ΠΎΠ΄Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΡβ€œ) ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° C ΠΈ C++, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Ρ‚Π°ΠΊΠ°Π²Π° компилация ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° Π² края Π½Π° Ρ†ΠΈΠΊΡŠΠ»Π°, ΡΡŠΡΡ‚ΠΎΡΡ‰ сС ΠΎΡ‚ сборка, тСстванС ΠΈ внСдряванС.

И ΠΌΠ°ΠΊΠ°Ρ€ Ρ‡Π΅ Ρ€ΠΎΠ΄Π½Π°Ρ‚Π° компилация, ΠΊΠ°ΠΊΡ‚ΠΎ Ρ‰Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ, Π΅ Π²Π°ΠΆΠ½Π°, трябва Π΄Π° ΠΎΡ‚Π±Π΅Π»Π΅ΠΆΠΈΠΌ, Ρ‡Π΅ Quarkus Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±Ρ€Π΅ ΠΈ Π½Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½Π° Java машина OpenJDK Hotspot Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° подобрСнията Π² производитСлността, ΠΊΠΎΠΈΡ‚ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ…ΠΌΠ΅ Π² цСлия стСк. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ, Ρ€ΠΎΠ΄Π½Π°Ρ‚Π° компилация слСдва Π΄Π° сС Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π° ΠΊΠ°Ρ‚ΠΎ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π΅Π½ бонус, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΏΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ нСобходимост. Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚, Ρ‰ΠΎ сС отнася Π΄ΠΎ Ρ€ΠΎΠ΄Π½ΠΈΡ‚Π΅ изобраТСния, Quarkus силно Ρ€Π°Π·Ρ‡ΠΈΡ‚Π° Π½Π° OpenJDK. ОсвСн Ρ‚ΠΎΠ²Π°, ΡˆΠΈΡ€ΠΎΠΊΠΎ приСтият Ρ€Π΅ΠΆΠΈΠΌ dev mode осигурява ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΌΠΈΠ³Π½ΠΎΠ²Π΅Π½ΠΎ тСстванС Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΡ‚Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π·Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ изпълнСниС Π½Π° ΠΊΠΎΠ΄Π°, Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ Π² Hotspot. ОсвСн Ρ‚ΠΎΠ²Π°, ΠΏΡ€ΠΈ ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ€ΠΎΠ΄Π½ΠΈ изобраТСния, GraalVM ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° с класовС Π½Π° OpenJDK ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅ Π½Π° HotSpot.

Π’Π°ΠΊΠ° Ρ‡Π΅ Π·Π°Ρ‰ΠΎ Π΅ Π½ΡƒΠΆΠ½Π° Ρ€ΠΎΠ΄Π½Π°Ρ‚Π° компилация, Π°ΠΊΠΎ всичко Π΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° Π΄ΠΎΠ±Ρ€Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½ΠΎ? На Ρ‚ΠΎΠ·ΠΈ Π²ΡŠΠΏΡ€ΠΎΡ Ρ‰Π΅ сС ΠΎΠΏΠΈΡ‚Π°ΠΌΠ΅ Π΄Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ.

Π”Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅ΠΌ с ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΡ‚ΠΎ: Red Hat Ρ€Π°Π·ΠΏΠΎΠ»Π°Π³Π° с голям ΠΎΠΏΠΈΡ‚ Π² ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° JVM, стСковС ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ²Π΅ ΠΏΡ€Π΅Π· Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° JBoss, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ:

  • ΠŸΡŠΡ€Π²ΠΈΡΡ‚ ΡΡŠΡ€Π²ΡŠΡ€ Π·Π° прилоТСния Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° Π² ΠΎΠ±Π»Π°ΠΊΠ° Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Red Hat OpenShift.
  • ΠŸΡŠΡ€Π²ΠΈΡΡ‚ ΡΡŠΡ€Π²ΡŠΡ€ Π·Π° прилоТСния Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° ΠΊΠΎΠΌΠΏΡŽΡ‚Ρ€ΠΈ Plug PC.
  • ΠŸΡŠΡ€Π²ΠΈΡΡ‚ ΡΡŠΡ€Π²ΡŠΡ€ Π·Π° прилоТСния Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° Raspberry Pi.
  • Цял Ρ€Π΅Π΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΈ Π½Π° устройства Android.

НиС сС Π·Π°Π½ΠΈΠΌΠ°Π²Π°ΠΌΠ΅ с Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Java прилоТСния Π² ΠΎΠ±Π»Π°ΠΊΠ° ΠΈ Π½Π° устройства с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈ рСсурси (Ρ‡Π΅Ρ‚ΠΈ, IoT) ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΠΈ Π½Π°ΡƒΡ‡ΠΈΡ…ΠΌΠ΅ ΠΊΠ°ΠΊ Π΄Π° ΠΈΠ·Π²Π»Π΅Ρ‡Π΅ΠΌ максимума ΠΎΡ‚ JVM Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ производитСлност ΠΈ оптимизация Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°. ΠšΠ°ΠΊΡ‚ΠΎ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ, Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ с Ρ€ΠΎΠ΄Π½Π°Ρ‚Π° компилация Π½Π° Java прилоТСния ΠΎΡ‚Π΄Π°Π²Π½Π° Ρ‡Ρ€Π΅Π· GCJ, Avian, Excelsior JET ΠΈ Π΄ΠΎΡ€ΠΈ Dalvik ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ осъзнавамС ΠΏΠ»ΡŽΡΠΎΠ²Π΅Ρ‚Π΅ ΠΈ минуситС Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄ΠΈΠ»Π΅ΠΌΠ°Ρ‚Π° Π·Π° ΠΈΠ·Π±ΠΎΡ€ ΠΌΠ΅ΠΆΠ΄Ρƒ унивСрсалността β€žΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅ вСднъТ – стартиранС Π½Π°Π²ΡΡΠΊΡŠΠ΄Π΅β€œ ΠΈ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ скомпилиранитС прилоТСния ΠΈΠΌΠ°Ρ‚ ΠΏΠΎ-малък Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈ сС стартират ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ).

Π—Π°Ρ‰ΠΎ Π΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° Π²Π°ΠΆΠ½ΠΎ Π΄Π° сС Π²Π·Π΅ΠΌΠ°Ρ‚ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ Ρ‚Π΅Π·ΠΈ плюсовС ΠΈ минуси? Π—Π°Ρ‰ΠΎΡ‚ΠΎ Π² някои ситуации ΡΡŠΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΈΠΌ става Ρ€Π΅ΡˆΠ°Π²Π°Ρ‰ΠΎ:

  • НапримСр, Π² serverless/управлявани ΠΎΡ‚ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ срСди, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ услугитС просто трябва Π΄Π° сС стартират Π² Ρ€Π΅ΠΆΠΈΠΌ (строг ΠΈΠ»ΠΈ нСстрог) Ρ€Π΅Π°Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅, Π·Π° Π΄Π° ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Ρ€Π΅Π°Π³ΠΈΡ€Π°Ρ‚ Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡΡ‚Π°. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π΄ΡŠΠ»Π³ΠΎΠΆΠΈΠ²Π΅Π΅Ρ‰ΠΈΡ‚Π΅ пСрсистСнтни услуги, Ρ‚ΡƒΠΊ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚Ρ‚Π° Π½Π° студСното стартиранС ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ Π½Π° заявкитС. ВсС ΠΎΡ‰Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½Π° Π²Ρ€Π΅ΠΌΠ΅ Π·Π° стартиранС Π½Π° JVM, ΠΈ ΠΌΠ°ΠΊΠ°Ρ€ Π² някои случаи Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΡΡŠΠΊΡ€Π°Ρ‚ΠΈ чисто Ρ‡Ρ€Π΅Π· Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π½ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ, Ρ€Π°Π·Π»ΠΈΠΊΠ°Ρ‚Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π΅Π΄Π½Π° сСкунда ΠΈ 5 милисСкунди ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π²ΡŠΠΏΡ€ΠΎΡ Π½Π° ΠΆΠΈΠ²ΠΎΡ‚ ΠΈ ΡΠΌΡŠΡ€Ρ‚. Π”Π°, Ρ‚ΡƒΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° сС СкспСримСнтира с ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π³ΠΎΡ€Π΅Ρ‰ Ρ€Π΅Π·Π΅Ρ€Π² Π½Π° Java машини (ΠΊΠ°ΠΊΡ‚ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ…ΠΌΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° OpenWhisk Π½Π° Knative), Π½ΠΎ само ΠΏΠΎ сСбС си Ρ‚ΠΎΠ²Π° Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π° Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ количСство JVM Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° заявкитС ΠΏΡ€ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ. И ΠΎΡ‚ икономичСска Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ°, Ρ‚ΠΎΠ²Π° със сигурност Π½Π΅ Π΅ Π½Π°ΠΉ-разумният Π²Π°Ρ€ΠΈΠ°Π½Ρ‚.
  • ОсвСн Ρ‚ΠΎΠ²Π°, ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π° ΠΈ Ρ‚Π°ΠΊΡŠΠ² чСсто срСщан аспСкт, ΠΊΠ°Ρ‚ΠΎ мултитСнантност. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ JVM Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ сС Π΄ΠΎΠ±Π»ΠΈΠΆΠ°Π²Π°Ρ‚ Π΄ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ систСми ΠΏΠΎ своитС Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ, Ρ‚Π΅ всС ΠΏΠ°ΠΊ Π½Π΅ са способни Π΄Π° правят Ρ‚ΠΎΠ²Π°, Π½Π° ΠΊΠΎΠ΅Ρ‚ΠΎ смС свикнали Π² Linux – Π΄Π° ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Ρ‚ процСситС. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ, ΠΏΡ€ΠΎΠ²Π°Π»ΡŠΡ‚ Π½Π° Π΅Π΄ΠΈΠ½ ΠΏΠΎΡ‚ΠΎΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π²Π΅Π΄Π΅ ΠΎΡ‚ строя цялата Java машина. Много ΠΎΠΏΠΈΡ‚Π²Π°Ρ‚ Π΄Π° заобиколят Ρ‚ΠΎΠ·ΠΈ Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΠΊ, ΠΊΠ°Ρ‚ΠΎ отдСлят Π·Π° прилоТСнията Π½Π° всСки ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» ΠΎΡ‚Π΄Π΅Π»Π½Π° JVM, Π·Π° Π΄Π° ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Ρ‚ послСдствията ΠΎΡ‚ ΠΏΡ€ΠΎΠ²Π°Π»Π°. Π’ΠΎΠ²Π° Π΅ напълно Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ, Π½ΠΎ Π½Π΅ съвпада Π΄ΠΎΠ±Ρ€Π΅ с ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ.
  • ОсвСн Ρ‚ΠΎΠ²Π°, Π·Π° ΠΎΠ±Π»Π°Ρ‡Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΈΡ‚Π΅ прилоТСния Π΅ Π²Π°ΠΆΠ΅Π½ показатСлят Π·Π° ΠΏΠ»ΡŠΡ‚Π½ΠΎΡΡ‚ Π½Π° услугитС Π½Π° хоста. ΠŸΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅Ρ‚ΠΎ към мСтодология 12 Ρ„Π°ΠΊΡ‚ΠΎΡ€Π° Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, микросСрвизитС ΠΈ Kubernetes ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Ρ‚ броя Π½Π° Java инстанции Π·Π° Π΅Π΄Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ВоСст, ΠΎΡ‚ Π΅Π΄Π½Π° страна, всичко Ρ‚ΠΎΠ²Π° прСдоставя Π³ΡŠΠ²ΠΊΠ°Π²ΠΎΡΡ‚ ΠΈ надСТдност, Π½ΠΎ ΡΡŠΡ‰Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ нараства ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° основна ΠΏΠ°ΠΌΠ΅Ρ‚ Π½Π° сСрвис, ΠΊΠ°Ρ‚ΠΎ част ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈ Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ Π΅ строго Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ°. Π‘Ρ‚Π°Ρ‚ΠΈΡ‡Π½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½ΠΈΡ‚Π΅ изпълними Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ пСчСлят Ρ‚ΡƒΠΊ Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ Π·Π° оптимизация, ΠΊΠ°Ρ‚ΠΎ нискоуровнСво ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅ Π½Π° нСнуТния ΠΊΠΎΠ΄, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π² крайния ΠΎΠ±Ρ€Π°Π· сС Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚ само ΠΎΠ½Π΅Π·ΠΈ части ΠΎΡ‚ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€Ρ†ΠΈΡ‚Π΅ (Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΈ самото JDK), ΠΊΠΎΠΈΡ‚ΠΎ ΡΠ΅Ρ€Π²ΠΈΠ·ΡŠΡ‚ Ρ€Π΅Π°Π»Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°. Π—Π°Ρ‚ΠΎΠ²Π°, Π½Π°Ρ‚ΠΈΠ²Π½Π°Ρ‚Π° компилация Π½Π° Quarkus ΠΏΠΎΠΌΠ°Π³Π° Π·Π° ΠΏΠΎ-ΠΏΠ»ΡŠΡ‚Π½ΠΎ Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° инстанции Π½Π° сСрвиза Π½Π° хост Π±Π΅Π· компромис с бСзопасността.

Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚, прСдставСнитС ΠΏΠΎ-Π³ΠΎΡ€Π΅ Π΄ΠΎΠ²ΠΎΠ΄ΠΈ Π²Π΅Ρ‡Π΅ са Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΈ, Π·Π° Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ оправдаността Π½Π° Π½Π°Ρ‚ΠΈΠ²Π½Π°Ρ‚Π° компилация ΠΎΡ‚ Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° участницитС Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Quarkus. Но ΠΈΠΌΠ° ΠΎΡ‰Π΅ Π΅Π΄Π½Π°, Π½Π΅ тСхничСска, Π½ΠΎ всС ΠΏΠ°ΠΊ Π²Π°ΠΆΠ½Π° ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°: ΠΏΡ€Π΅Π· послСднитС Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ програмисти ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ сС ΠΎΡ‚Ρ‚Π΅Π³Π»ΠΈΡ…Π° ΠΎΡ‚ Java Π² ΠΏΠΎΠ»Π·Π° Π½Π° Π½ΠΎΠ²ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ½ΠΈ Π΅Π·ΠΈΡ†ΠΈ, считайки, Ρ‡Π΅ Java Π·Π°Π΅Π΄Π½ΠΎ със своитС JVM, стСковС ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€Ρ†ΠΈ стана Ρ‚Π²ΡŠΡ€Π΄Π΅ нСнаситна ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚, ΠΏΡ€Π΅ΠΊΠ°Π»Π΅Π½ΠΎ Π±Π°Π²Π½Π° ΠΈ Ρ‚.Π½.

Но Π½Π°Π²ΠΈΠΊΡŠΡ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ΠΈ инструмСнт Π·Π° Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° всякакви Π·Π°Π΄Π°Ρ‡ΠΈ – Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π΅Π½. Понякога Π΅ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²ΠΈ ΠΊΡ€Π°Ρ‡ΠΊΠ° Π½Π°Π·Π°Π΄ ΠΈ Π΄Π° сС ΠΏΠΎΡ‚ΡŠΡ€ΡΠΈ Π½Π΅Ρ‰ΠΎ Π΄Ρ€ΡƒΠ³ΠΎ. И Π°ΠΊΠΎ Quarkus ΠΏΡ€ΠΈΠ½ΡƒΠΆΠ΄Π°Π²Π° Ρ…ΠΎΡ€Π°Ρ‚Π° Π΄Π° си Π²Π·Π΅ΠΌΠ°Ρ‚ ΠΏΠ°ΡƒΠ·Π° ΠΈ Π΄Π° помислят, Ρ‚ΠΎ Ρ‚ΠΎΠ²Π° Π΅ Π΄ΠΎΠ±Ρ€ΠΎ Π·Π° цялата СкосистСма Π½Π° Java. Quarkus олицСтворява ΠΈΠ½ΠΎΠ²Π°Ρ†ΠΈΠΎΠ½Π΅Π½ ΠΏΠΎΠ³Π»Π΅Π΄ към Π½Π°Ρ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΠΉΡ‚ΠΎ Π΄Π° сС ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚ ΠΏΠΎ-Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΈ прилоТСния, ΠΏΡ€Π°Π²Π΅ΠΉΠΊΠΈ Java ΠΏΠΎ-Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Π° Π½Π° Π½ΠΎΠ²ΠΈΡ‚Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ Π½Π° прилоТСния, ΠΊΠ°Ρ‚ΠΎ serverless. ОсвСн Ρ‚ΠΎΠ²Π°, Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° своята Ρ€Π°Π·ΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΡΡ‚, Quarkus, надявамС сС, Ρ‰Π΅ сС сдобиС с цяла СкосистСма ΠΎΡ‚ Java Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ, Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Ρ‰Π° броя Π½Π° Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€Ρ†ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Ρ‰Π΅ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ Π½Π°Ρ‚ΠΈΠ²Π½Π° компилация Π² ΡΡŠΡΡ‚Π°Π²Π° Π½Π° прилоТСния.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster