Нативная компиляция Π² 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 ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ осознаСм ΠΏΠ»ΡŽΡΡ‹ ΠΈ минусы Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄ΠΈΠ»Π΅ΠΌΠΌΡƒ Π²Ρ‹Π±ΠΎΡ€Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ Β«build once – run-anywhereΒ» ΠΈ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ скомпилированныС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΠΌΠ΅ΡŽΡ‚ мСньший Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈ быстрСС Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ).

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Ρ‚Π°ΠΊ Π²Π°ΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ эти ΠΏΠ»ΡŽΡΡ‹ ΠΈ минусы? ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ситуациях ΠΈΡ… ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ становится Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΠΈΠΌ:

  • НапримСр, Π² serverless/управляСмых событиями срСдах, Π³Π΄Π΅ сСрвисы просто обязаны Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ (ТСсткого ΠΈΠ»ΠΈ мягкого) Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΠΏΠ΅Π²Π°Ρ‚ΡŒ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° события. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π΄ΠΎΠ»Π³ΠΎ ΠΆΠΈΠ²ΡƒΡ‰ΠΈΡ… пСрсистСнтных сСрвисов, здСсь ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ…ΠΎΠ»ΠΎΠ΄Π½ΠΎΠ³ΠΎ запуска ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ врСмя ΠΎΡ‚Π²Π΅Ρ‚Π° Π½Π° запрос. На запуск JVM всС Π΅Ρ‰Π΅ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ сущСствСнноС врСмя, ΠΈ, хотя Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ чисто Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ, Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ΄Π½ΠΎΠΉ сСкундой ΠΈ 5 миллисСкундами ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ вопросом ΠΆΠΈΠ·Π½ΠΈ ΠΈ смСрти. Π”Π°, здСсь ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΈΠ³Ρ€Π°Ρ‚ΡŒΡΡ с созданиСм горячСго Ρ€Π΅Π·Π΅Ρ€Π²Π° Java-машин (Ρ‡Ρ‚ΠΎ ΠΌΡ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сдСлали ΠΏΡ€ΠΈ ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ OpenWhisk Π½Π° Knative), Π½ΠΎ само ΠΏΠΎ сСбС это Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ достаточного для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запросов количСства JVM ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. Π”Π° ΠΈ с экономичСской Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния это, навСрняка, Π½Π΅ самый ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚.
  • Π”Π°Π»Π΅Π΅, Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ Ρ‚Π°ΠΊΠΎΠΉ часто Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ аспСкт, ΠΊΠ°ΠΊ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΡ‚Π΅Π½Π°Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ. НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ JVM ΠΏΠΎ своим возмоТностям сильно ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΠ»ΠΈΡΡŒ ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ систСмам, ΠΎΠ½ΠΈ всС Π΅Ρ‰Π΅ Π½Π΅ способны Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ, ΠΊ Ρ‡Π΅ΠΌΡƒ ΠΌΡ‹ Ρ‚Π°ΠΊ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ Linux’С – ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ процСссы. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ сбой ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ вывСсти ΠΈΠ· строя всю Java-ΠΌΠ°ΡˆΠΈΠ½Ρƒ. МногиС ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ этот нСдостаток Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ ΠΏΠΎΠ΄ прилоТСния ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ JVM, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ послСдствия сбоя. Π­Ρ‚ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ, Π½ΠΎ ΠΏΠ»ΠΎΡ…ΠΎ сочСтаСтся с ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ.
  • ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, для ΠΎΠ±Π»Π°Ρ‡Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π²Π°ΠΆΠ΅Π½ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, ΠΊΠ°ΠΊ ΠΏΠ»ΠΎΡ‚Π½ΠΎΡΡ‚ΡŒ сСрвисов Π½Π° хостС. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΡŽ 12 Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² прилоТСния, микросСрвисы ΠΈ Kubernetes ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ количСство Java-машин Π½Π° ΠΎΠ΄Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’ΠΎ Π΅ΡΡ‚ΡŒ, с ΠΎΠ΄Π½ΠΎΠΉ стороны, всС это Π΄Π°Π΅Ρ‚ ΡΠ»Π°ΡΡ‚ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ, Π½ΠΎ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ растСт ΠΈ расход Π±Π°Π·ΠΎΠ²ΠΎΠΉ памяти Π² пСрСсчСтС Π½Π° сСрвис, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Ρ‡Π°ΡΡ‚ΡŒ этих расходов Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ всСгда являСтся строго Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ. БтатичСски скомпилированныС исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Π²Π°ΡŽΡ‚ здСсь Π·Π° счСт Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΈΠΊ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Π²Ρ€ΠΎΠ΄Π΅ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ dead-code elimination, ΠΊΠΎΠ³Π΄Π° Π² ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ части Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΈ сам JDK), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сСрвис Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ нативная компиляция Quarkus ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΠ»ΠΎΡ‚Π½Π΅Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ экзСмпляры сСрвисов Π½Π° хостС Π±Π΅Π· ΡƒΡ‰Π΅Ρ€Π±Π° для бСзопасности.

БобствСнно, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ Π΄ΠΎΠ²ΠΎΠ΄ΠΎΠ² ΡƒΠΆΠ΅ достаточно для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΎΠΏΡ€Π°Π²Π΄Π°Π½Π½ΠΎΡΡ‚ΡŒ Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ компиляции с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния участников ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Quarkus. Однако Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π°, Π½Π΅ тСхничСская, Π½ΠΎ Ρ‚ΠΎΠΆΠ΅ ваТная ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°: Π² послСдниС Π³ΠΎΠ΄Ρ‹ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ программисты ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΎΡ‚ΠΊΠ°Π·Π°Π»ΠΈΡΡŒ ΠΎΡ‚ Java Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ Π½ΠΎΠ²Ρ‹Ρ… языков программирования, посчитав, Ρ‡Ρ‚ΠΎ Java вмСстС со своими JVM, стСками ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°ΠΌΠΈ стала слишком ΠΏΡ€ΠΎΠΆΠΎΡ€Π»ΠΈΠ²ΠΎΠΉ Π² ΠΏΠ»Π°Π½Π΅ памяти, чСрСсчур ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΉ ΠΈ Ρ‚.Π΄.

Однако ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ инструмСнт для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π»ΡŽΠ±Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ – это Π½Π΅ всСгда ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. Иногда Π»ΡƒΡ‡ΡˆΠ΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ шаг Π½Π°Π·Π°Π΄ ΠΈ ΠΏΠΎΠΈΡΠΊΠ°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. И Ссли Quarkus заставляСт людСй ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠ°ΡƒΠ·Ρƒ ΠΈ Π·Π°Π΄ΡƒΠΌΠ°Ρ‚ΡŒΡΡ, Ρ‚ΠΎ это Ρ…ΠΎΡ€ΠΎΡˆΠΎ для всСй экосистСмы Java. Quarkus Π²ΠΎΠΏΠ»ΠΎΡ‰Π°Π΅Ρ‚ собой новаторский взгляд Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ эффСктивныС прилоТСния, дСлая Java Π±ΠΎΠ»Π΅Π΅ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½ΠΎΠΉ Π½ΠΎΠ²Ρ‹ΠΌ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π²Ρ€ΠΎΠ΄Π΅ serverless. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, благодаря своСй Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΠΈ, Quarkus, ΠΊΠ°ΠΊ ΠΌΡ‹ надССмся, обзавСдСтся Ρ†Π΅Π»ΠΎΠΉ экосистСмой Java-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ, Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ² количСство Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π½Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ Π² составС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

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

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ