{"id":76573,"date":"2020-04-03T13:42:25","date_gmt":"2020-04-03T11:42:25","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/nativnaya-kompilyacziya-v-quarkus-pochemu-eto-vazhno"},"modified":"2020-04-03T13:42:25","modified_gmt":"2020-04-03T11:42:25","slug":"nativnaya-kompilyacziya-v-quarkus-pochemu-eto-vazhno","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/nativnaya-kompilyacziya-v-quarkus-pochemu-eto-vazhno","title":{"rendered":"Compilazione nativa in Quarkus \u2013 perch\u00e9 \u00e8 importante","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ciao a tutti! Questo \u00e8 il secondo post della nostra serie su Quarkus \u2013 oggi parleremo della compilazione nativa.<\/p>\n<p><img decoding=\"async\" alt=\"Compilazione nativa in Quarkus \u2013 perch\u00e9 \u00e8 importante\" src=\"\/wp-content\/uploads\/2020\/04\/3690313f6718405b06f0a6b5360767e3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2019\/03\/20\/quarkus-0-12-0-released\/\">Quarkus<\/a><\/noindex> \u00e8 uno stack Java progettato per <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/kubernetes\/\">Kubernetes<\/a><\/noindex>. E sebbene ci sia ancora molto lavoro da fare, abbiamo affrontato con successo numerosi aspetti, inclusa l'ottimizzazione della JVM e di diversi framework. Una delle caratteristiche di Quarkus che ha suscitato un particolare interesse tra gli sviluppatori \u00e8 stato l'approccio seamless e integrato alla trasformazione del codice Java in file eseguibili per un sistema operativo specifico (la cosiddetta \"compilazione nativa\"), simile a quanto avviene in C e C++, dove questa compilazione di solito avviene alla fine di un ciclo che consiste in build, testing e distribuzione.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nSebbene la compilazione nativa, come mostreremo pi\u00f9 avanti, sia importante, \u00e8 fondamentale notare che Quarkus funziona davvero bene anche su una comune macchina Java OpenJDK Hotspot grazie ai miglioramenti delle prestazioni che abbiamo implementato attraverso l'intero stack. Pertanto, la compilazione nativa dovrebbe essere vista come un bonus aggiuntivo da utilizzare a piacimento o necessit\u00e0. In effetti, per quanto riguarda le immagini native, Quarkus si basa in larga misura su OpenJDK. Inoltre, il ben accolto modo di sviluppo dev mode offre test di cambiamenti quasi istantanei grazie alle avanzate capacit\u00e0 di esecuzione dinamica del codice implementate in Hotspot. Inoltre, durante la creazione delle immagini native, GraalVM utilizza la libreria di classi OpenJDK e le capacit\u00e0 di HotSpot.<\/p>\n<p>Allora, perch\u00e9 \u00e8 necessaria la compilazione nativa, se tutto \u00e8 gi\u00e0 ottimizzato alla perfezione? A questa domanda cercheremo di rispondere qui di seguito.<\/p>\n<p>Iniziamo con l'ovvio: Red Hat ha una vasta esperienza nell'ottimizzazione della JVM, degli stack e dei framework durante lo sviluppo del progetto <noindex><a rel=\"nofollow\" href=\"http:\/\/www.jboss.org\/\">JBoss<\/a><\/noindex>, inclusi:<\/p>\n<ul>\n<li>Il primo server di applicazioni progettato per operare nel cloud sulla piattaforma <noindex><a rel=\"nofollow\" href=\"https:\/\/www.redhat.com\/en\/blog\/openshift-is-the-first-paas-to-support-java-ee-6-full-profile-in-the-cloud\">Red Hat OpenShift<\/a><\/noindex>.<\/li>\n<li>Il primo server applicativo per il lavoro sui computer <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/index.php\/videos\/youtube\/9c-g7UxT0nk\/\">Plug PC<\/a><\/noindex>.<\/li>\n<li>Il primo server applicativo per il lavoro su <noindex><a rel=\"nofollow\" href=\"http:\/\/blog.arungupta.me\/wildfly-on-raspberry-pi-techtip-24\/\">Raspberry Pi<\/a><\/noindex>.<\/li>\n<li>Una serie di progetti che operano su dispositivi <noindex><a rel=\"nofollow\" href=\"http:\/\/www.jboss.org\/iot\/android\/\">Android<\/a><\/noindex>.<\/li>\n<\/ul>\n<p>\nDa molti anni affrontiamo le problematiche di esecuzione delle applicazioni Java nel cloud e su dispositivi a risorse limitate (leggi, IoT) e abbiamo imparato a massimizzare le prestazioni e l'ottimizzazione della memoria della JVM. Come molti altri, da tempo lavoriamo con la compilazione nativa delle applicazioni Java tramite <noindex><a rel=\"nofollow\" href=\"https:\/\/gcc.gnu.org\/wiki\/GCJ\">GCJ<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/readytalk.github.io\/avian\/\">Avian<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.excelsiorjet.com\/\">Excelsior JET<\/a><\/noindex> e anche <noindex><a rel=\"nofollow\" href=\"https:\/\/source.android.com\/devices\/tech\/dalvik\">Dalvik<\/a><\/noindex> e siamo perfettamente consapevoli dei vantaggi e svantaggi di questo approccio (ad esempio, il dilemma della scelta tra versatilit\u00e0 \"build once \u2013 run-anywhere\" e il fatto che le applicazioni compilate hanno dimensioni minori e si avviano pi\u00f9 rapidamente).<\/p>\n<p>Perch\u00e9 \u00e8 cos\u00ec importante tenere conto di questi vantaggi e svantaggi? Perch\u00e9 in alcune situazioni il loro rapporto diventa decisivo:<\/p>\n<ul>\n<li>Ad esempio, in ambienti serverless \/ gestiti da eventi, dove <noindex><a rel=\"nofollow\" href=\"https:\/\/mikhail.io\/2018\/08\/serverless-cold-start-war\/\">i servizi devono avviarsi necessariamente<\/a><\/noindex> in modalit\u00e0 (rigida o morbida) tempo reale, per poter reagire tempestivamente agli eventi. A differenza dei servizi persistenti a lungo termine, in questo caso la durata dell'avvio a freddo aumenta drasticamente il tempo di risposta alle richieste. L'avvio della JVM richiede comunque un tempo significativo e, sebbene in alcuni casi questo possa essere ridotto attraverso metodi puramente hardware, la differenza tra un secondo e 5 millisecondi pu\u00f2 essere una questione di vita o di morte. S\u00ec, qui \u00e8 possibile sperimentare con la creazione di un backup caldo di macchine Java (cosa che abbiamo fatto, ad esempio, con <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/projectodd\/kwsk\">il porting di OpenWhisk su Knative<\/a><\/noindex>), ma questo da solo non garantisce un numero sufficiente di JVM per elaborare le richieste man mano che il carico aumenta. E dal punto di vista economico, probabilmente non \u00e8 nemmeno la scelta pi\u00f9 corretta.<\/li>\n<li>Inoltre, c'\u00e8 un altro aspetto frequentemente discusso, come la multitenanza. Anche se la JVM ha avvicinato molto le sue capacit\u00e0 a quelle dei sistemi operativi, non riesce ancora a fare ci\u00f2 a cui siamo abituati in Linux: isolare i processi. Pertanto, un crash di un thread pu\u00f2 compromettere l'intera macchina Java. Molti cercano di aggirare questo difetto creando una JVM separata per le applicazioni di ogni utente, al fine di ridurre al minimo le conseguenze di un guasto. \u00c8 una soluzione logica, ma non si adatta bene alla scalabilit\u00e0.<\/li>\n<li>Inoltre, per le applicazioni orientate al cloud, \u00e8 importante un fattore come la densit\u00e0 dei servizi sull'host. La transizione a una metodologia <noindex><a rel=\"nofollow\" href=\"https:\/\/12factor.net\/\">12 fattori dell'applicazione<\/a><\/noindex>, microservizi e Kubernetes aumentano il numero di macchine Java per applicazione. Da un lato, tutto ci\u00f2 offre elasticit\u00e0 e affidabilit\u00e0, ma nello stesso tempo cresce anche il consumo di memoria di base per servizio, parte del quale non \u00e8 sempre strettamente necessario. I file eseguibili compilati staticamente guadagnano qui grazie a varie tecniche di ottimizzazione, come l'eliminazione del codice morto a basso livello, quando nell'immagine finale vengono incluse solo le parti dei framework (incluso il JDK) che il servizio utilizza realmente. Pertanto, la compilazione nativa di Quarkus aiuta a posizionare pi\u00f9 densamente le istanze dei servizi sull'host senza compromettere la sicurezza.<\/li>\n<\/ul>\n<p>\nDi fatto, le argomentazioni presentate sopra sono gi\u00e0 sufficienti per comprendere la giustificazione della compilazione nativa dal punto di vista dei partecipanti al progetto Quarkus. Tuttavia, c'\u00e8 un'altra ragione, non tecnica, ma comunque importante: negli ultimi anni, molti programmatori e aziende sviluppatrici hanno abbandonato Java in favore di nuovi linguaggi di programmazione, ritenendo che Java, insieme alle sue JVM, stack e framework, sia diventata troppo affamata di memoria, troppo lenta, ecc.<\/p>\n<p>Tuttavia, l'abitudine di usare lo stesso strumento per risolvere qualsiasi compito \u2013 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.reddit.com\/r\/java\/comments\/8xv3ha\/does_anybody_use_spring_boot_with_aws_lambda_do\/\">non \u00e8 sempre corretta<\/a><\/noindex>. A volte \u00e8 meglio fare un passo indietro e cercare qualcosa di diverso. E se Quarkus costringe le persone a fermarsi e riflettere, \u00e8 un bene per l'intero ecosistema Java. Quarkus rappresenta una visione innovativa su come creare applicazioni pi\u00f9 efficienti, rendendo Java pi\u00f9 pertinente alle nuove architetture applicative, come quelle serverless. Inoltre, grazie alla sua estensibilit\u00e0, Quarkus, come speriamo, dar\u00e0 vita a un'intera ecosistema di estensioni Java, aumentando significativamente il numero di framework che supporteranno nativamente la compilazione delle applicazioni.<br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/redhatrussia\/blog\/495212\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u0421 \u0432\u0430\u043c\u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u0441\u0442 \u0438\u0437 \u043d\u0430\u0448\u0435\u0439 \u0441\u0435\u0440\u0438\u0438 \u043f\u043e Quarkus \u2013 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438. Quarkus \u2013 \u044d\u0442\u043e Java-\u0441\u0442\u0435\u043a, \u0437\u0430\u0442\u043e\u0447\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0434 Kubernetes. \u0418 \u0445\u043e\u0442\u044f \u0437\u0434\u0435\u0441\u044c, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043d\u043e\u0433\u043e\u0435 \u0435\u0449\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u0438\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u043c\u044b \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u0440\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u043c\u0430\u0441\u0441\u0443 \u0430\u0441\u043f\u0435\u043a\u0442\u043e\u0432, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e JVM \u0438 \u0446\u0435\u043b\u043e\u0433\u043e \u0440\u044f\u0434\u0430 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432. \u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 Quarkus, \u0432\u044b\u0437\u0432\u0430\u0432\u0448\u0435\u0439 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u0441\u0442\u0430\u043b [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":76574,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-76573","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u0421 \u0432\u0430\u043c\u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u0441\u0442 \u0438\u0437 \u043d\u0430\u0448\u0435\u0439 \u0441\u0435\u0440\u0438\u0438 \u043f\u043e Quarkus \u2013 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438. Quarkus \u2013 \u044d\u0442\u043e Java-\u0441\u0442\u0435\u043a, \u0437\u0430\u0442\u043e\u0447\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0434 Kubernetes. \u0418 \u0445\u043e\u0442\u044f \u0437\u0434\u0435\u0441\u044c, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043d\u043e\u0433\u043e\u0435 \u0435\u0449\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u0438\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u043c\u044b \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u0440\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u043c\u0430\u0441\u0441\u0443 \u0430\u0441\u043f\u0435\u043a\u0442\u043e\u0432, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e JVM \u0438 \u0446\u0435\u043b\u043e\u0433\u043e \u0440\u044f\u0434\u0430 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432. \u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 Quarkus, \u0432\u044b\u0437\u0432\u0430\u0432\u0448\u0435\u0439 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u0441\u0442\u0430\u043b\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/nativnaya-kompilyacziya-v-quarkus-pochemu-eto-vazhno\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041d\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u0432 Quarkus \u2013 \u043f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u043e \u0432\u0430\u0436\u043d\u043e | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u0421 \u0432\u0430\u043c\u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u0441\u0442 \u0438\u0437 \u043d\u0430\u0448\u0435\u0439 \u0441\u0435\u0440\u0438\u0438 \u043f\u043e Quarkus \u2013 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438. Quarkus \u2013 \u044d\u0442\u043e Java-\u0441\u0442\u0435\u043a, \u0437\u0430\u0442\u043e\u0447\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0434 Kubernetes. \u0418 \u0445\u043e\u0442\u044f \u0437\u0434\u0435\u0441\u044c, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043d\u043e\u0433\u043e\u0435 \u0435\u0449\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u0438\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u043c\u044b \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u0440\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u043c\u0430\u0441\u0441\u0443 \u0430\u0441\u043f\u0435\u043a\u0442\u043e\u0432, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e JVM \u0438 \u0446\u0435\u043b\u043e\u0433\u043e \u0440\u044f\u0434\u0430 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432. \u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 Quarkus, \u0432\u044b\u0437\u0432\u0430\u0432\u0448\u0435\u0439 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u0441\u0442\u0430\u043b\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/nativnaya-kompilyacziya-v-quarkus-pochemu-eto-vazhno\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-04-03T11:42:25+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-04-03T11:42:25+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Compilazione nativa in Quarkus \u2013 perch\u00e9 \u00e8 importante | ProHoster","description":"Ciao a tutti! Siamo alla seconda puntata della nostra serie su Quarkus \u2013 oggi parleremo della compilazione nativa. Quarkus \u00e8 un stack Java progettato per Kubernetes. E sebbene ci sia ancora molto da fare, abbiamo lavorato bene su molti aspetti, inclusa l'ottimizzazione della JVM e di vari framework. Una delle caratteristiche di Quarkus che ha suscitato un particolare interesse tra gli sviluppatori \u00e8 stata","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/nativnaya-kompilyacziya-v-quarkus-pochemu-eto-vazhno","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041d\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u0432 Quarkus \u2013 \u043f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u043e \u0432\u0430\u0436\u043d\u043e | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u0421 \u0432\u0430\u043c\u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u0441\u0442 \u0438\u0437 \u043d\u0430\u0448\u0435\u0439 \u0441\u0435\u0440\u0438\u0438 \u043f\u043e Quarkus \u2013 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438. Quarkus \u2013 \u044d\u0442\u043e Java-\u0441\u0442\u0435\u043a, \u0437\u0430\u0442\u043e\u0447\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0434 Kubernetes. \u0418 \u0445\u043e\u0442\u044f \u0437\u0434\u0435\u0441\u044c, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043d\u043e\u0433\u043e\u0435 \u0435\u0449\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u0438\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u043c\u044b \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u0440\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u043c\u0430\u0441\u0441\u0443 \u0430\u0441\u043f\u0435\u043a\u0442\u043e\u0432, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e JVM \u0438 \u0446\u0435\u043b\u043e\u0433\u043e \u0440\u044f\u0434\u0430 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432. \u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 Quarkus, \u0432\u044b\u0437\u0432\u0430\u0432\u0448\u0435\u0439 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u0441\u0442\u0430\u043b","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/nativnaya-kompilyacziya-v-quarkus-pochemu-eto-vazhno","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-04-03T11:42:25+00:00","article:modified_time":"2020-04-03T11:42:25+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"76573","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 17:34:49","updated":"2022-09-28 02:06:54"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/76573","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=76573"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/76573\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/76574"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=76573"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=76573"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=76573"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}