{"id":74795,"date":"2020-03-20T20:42:21","date_gmt":"2020-03-20T17:42:21","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/kak-quarkus-obedinyaet-imperativnoe-i-reaktivnoe-programmirovanie"},"modified":"2020-03-20T20:42:21","modified_gmt":"2020-03-20T17:42:21","slug":"kak-quarkus-obedinyaet-imperativnoe-i-reaktivnoe-programmirovanie","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/kak-quarkus-obedinyaet-imperativnoe-i-reaktivnoe-programmirovanie","title":{"rendered":"Come Quarkus combina programmazione imperativa e reattiva","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Quest'anno abbiamo in programma di sviluppare seriamente i temi dei container, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/product_by_id\/112863337\">Cloud-Native Java<\/a><\/noindex> e <noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/product_by_id\/125705747\">Kubernetes<\/a><\/noindex>. Un naturale proseguimento di questi temi sar\u00e0 il racconto del framework Quarkus, gi\u00e0 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/haulmont\/blog\/443242\/\">trattato<\/a><\/noindex> su Habr. L'articolo di oggi \u00e8 dedicato non tanto alla struttura della \u00abJava subatomica ultraveloce\u00bb, quanto alle prospettive che Quarkus porta nel mondo Enterprise.<\/p>\n<p><img decoding=\"async\" alt=\"Come Quarkus combina programmazione imperativa e reattiva\" src=\"\/wp-content\/uploads\/2020\/03\/6337d74cb66ee078c2b7c206be3d88fe.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJava e JVM rimangono estremamente popolari, ma nell'uso di tecnologie serverless e microservizi orientati al cloud, Java e altri linguaggi per la JVM vengono applicati sempre meno, poich\u00e9 occupano troppo spazio in memoria e si caricano troppo lentamente, rendendoli poco adatti all'uso con container a vita breve. Fortunatamente, questa situazione sta iniziando a cambiare grazie a Quarkus.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>La Java subatomica ultraveloce ha raggiunto un nuovo livello!<\/h3>\n<p>\n42 versioni, 8 mesi di lavoro della comunit\u00e0 e 177 sviluppatori straordinari \u2013 il risultato di tutto ci\u00f2 \u00e8 stato il rilascio nel novembre 2019 di <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/quarkus\/\">Quarkus 1.0<\/a><\/noindex>, una versione che segna un'importante pietra miliare nello sviluppo del progetto e offre un sacco di fantastiche funzionalit\u00e0 e possibilit\u00e0 (puoi leggere di pi\u00f9 su di esse in <noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/blog\/announcing-quarkus-1-0\/\">un annuncio<\/a><\/noindex>).<\/p>\n<p>Oggi parleremo di come Quarkus unisce i modelli di programmazione imperativa e reattiva basati su un unico nucleo reattivo. Inizieremo con una breve escursione nella storia e poi analizzeremo in dettaglio in cosa consiste il dualismo del nucleo reattivo di Quarkus e come <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/enterprise-java\/\">Java<\/a><\/noindex>-i programmatori possono trarre vantaggio da questi benefici.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/microservices\/\">Microservizi<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/event-driven\/\">architetture guidate dagli eventi<\/a><\/noindex> e <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/serverless-architecture\/\">serverless<\/a><\/noindex>-funzioni \u2013 tutto ci\u00f2 oggi \u00e8 in forte crescita. Recentemente, la creazione di architetture orientate al cloud \u00e8 diventata molto pi\u00f9 semplice e accessibile, ma i problemi rimangono \u2013 specialmente per gli sviluppatori Java. Ad esempio, nel caso delle funzioni serverless e dei microservizi c'\u00e8 un'esigenza urgente di ridurre i tempi di avvio, diminuire il consumo di memoria e rendere la loro sviluppo pi\u00f9 comodo e piacevole. Negli ultimi anni, Java ha apportato alcuni miglioramenti, come funzionalit\u00e0 ergonomiche ottimizzate per i container e altro. Tuttavia, ottenere un funzionamento efficace di Java in un container continua a essere una sfida. Pertanto, iniziamo esaminando alcune delle complessit\u00e0 interne di Java che si manifestano in modo particolarmente accentuato durante lo sviluppo di applicazioni Java orientate ai container.<\/p>\n<p>Iniziamo con la storia.<\/p>\n<p><img decoding=\"async\" alt=\"Come Quarkus combina programmazione imperativa e reattiva\" src=\"\/wp-content\/uploads\/2020\/03\/4478ef5c3b89a1bd91752a4ede74bdfd.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Flussi e container<\/h3>\n<p>\nA partire dalla versione 8u131, Java ha iniziato a supportare in modo pi\u00f9 efficace i container grazie a miglioramenti nella funzionalit\u00e0 ergonomics. In particolare, ora la JVM sa su quanti core del processore viene eseguita e pu\u00f2 configurare i pool di thread di conseguenza, generalmente usando pool fork\/join. Certamente, questo \u00e8 positivo, ma supponiamo di avere un'applicazione web tradizionale che utilizza servlet HTTP e gira su Tomcat, Jetty e simili. Di conseguenza, questa applicazione assegner\u00e0 un thread separato per ogni richiesta, permettendole di bloccare quel thread durante l'attesa delle operazioni di input-output, ad esempio durante l'accesso a database, file o altri servizi. Questo significa che le dimensioni di tale applicazione non dipendono dal numero di core disponibili, ma dal numero di richieste simultanee. Inoltre, ci\u00f2 implica che le quote o i limiti in Kubernetes relativi al numero di core non saranno di grande aiuto, e alla fine si finir\u00e0 per affrontare il throttling.<\/p>\n<h3>Esaurimento della memoria<\/h3>\n<p>\nI flussi sono memoria. E le limitazioni interne ai container sulla memoria non sono affatto una panacea. Iniziate semplicemente ad aumentare il numero di applicazioni e flussi, e prima o poi vi troverete di fronte a un aumento critico della frequenza dei cambiamenti e, di conseguenza, a una degradazione delle prestazioni. Inoltre, se un'applicazione utilizza tradizionali framework microservizi, si connette a un database, o utilizza una cache, o in qualche modo consuma memoria in modo aggiuntivo, \u00e8 evidente che avrete bisogno di uno strumento che permetta di guardare dentro la JVM e vedere come gestisce la memoria, senza compromettere la JVM stessa (ad esempio, XX:+UseCGroupMemoryLimitForHeap). Anche se, a partire da Java 9, la JVM ha imparato a riconoscere i cgroups e ad adattarsi di conseguenza, la prenotazione e la gestione della memoria restano affari piuttosto complessi.<\/p>\n<h3>Quote e limiti<\/h3>\n<p>\nIn Java 11, support for CPU quotas (such as PreferContainerQuotaForCPUCount) was introduced. Kubernetes also provides support for limits and quotas. Yes, all of this makes sense, but if the application exceeds its allocated quota again, we return to the situation where size \u2014 as in traditional Java applications \u2014 is determined by the number of cores, with a separate thread allocated for each request. This means that the benefits are minimal.<br \/>\nMoreover, using quotas and limits or the scale-out functions of the Kubernetes underlying platform does not solve the problem by itself. We simply end up consuming more resources to address the original issue or eventually lead to resource overconsumption. If this is a high-load system in a public cloud, we almost certainly start using more resources than necessary.<\/p>\n<h3>What should we do about all this?<\/h3>\n<p>\nTo put it simply, use asynchronous and non-blocking input-output libraries and frameworks like Netty, <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2019\/10\/21\/eclipse-vert-x-3-8-1-update-for-red-hat-runtimes\/\">Vert.x<\/a><\/noindex> o Akka. Sono molto pi\u00f9 adatti per lavorare nei contenitori grazie alla loro natura reattiva. Grazie all'I\/O non bloccante, lo stesso thread pu\u00f2 gestire pi\u00f9 richieste simultaneamente. Mentre una richiesta attende risultati di I\/O, il thread che la gestisce \u00e8 liberato e pu\u00f2 occuparsi di un'altra richiesta. Quando i risultati di I\/O finalmente arrivano, la lavorazione della prima richiesta riprende. Alternando la lavorazione delle richieste all'interno dello stesso thread, \u00e8 possibile ridurre il numero totale di thread e diminuire i consumi di risorse nella gestione delle richieste.<\/p>\n<p>Con l'I\/O non bloccante, il numero di core diventa un parametro fondamentale, poich\u00e9 determina il numero di thread di I\/O che possono essere eseguiti in parallelo. Se utilizzato correttamente, questo permette di distribuire in modo efficace il carico tra i core e gestire carichi pi\u00f9 elevati con minori risorse.<\/p>\n<h3>Come, e questo \u00e8 tutto?<\/h3>\n<p>\nNo, c'\u00e8 dell'altro. La programmazione reattiva aiuta a utilizzare meglio le risorse, ma ha anche un prezzo. In particolare, sar\u00e0 necessario riscrivere il codice secondo i principi di non blocco e evitare il blocco dei flussi di input-output. Questo richiede un approccio completamente diverso nello sviluppo e nell'esecuzione. Anche se ci sono molte librerie utili, si tratta comunque di un cambiamento radicale nel modo di pensare.<\/p>\n<p>Innanzitutto, \u00e8 necessario imparare a scrivere codice che venga eseguito in modo asincrono. Non appena si inizia a utilizzare l'input-output non bloccante, \u00e8 necessario specificare esplicitamente cosa dovrebbe accadere quando si riceve una risposta a una richiesta. Non \u00e8 pi\u00f9 possibile semplicemente bloccare e aspettare. In cambio, \u00e8 possibile utilizzare callback, programmazione reattiva o continuation. Ma non \u00e8 tutto: per utilizzare l'input-output non bloccante, sono necessari anche server e client non bloccanti, e sarebbe preferibile in ogni caso. Per quanto riguarda HTTP, \u00e8 semplice, ma ci sono anche database, file system e molto altro.<\/p>\n<p>Anche se la reattivit\u00e0 totale consente di ottenere il massimo dell'efficienza, questo spostamento pu\u00f2 essere difficile da digerire nella pratica. Perci\u00f2, la possibilit\u00e0 di combinare codice reattivo e imperativo diventa una condizione necessaria per:<\/p>\n<ol>\n<li>Usare in modo efficace le risorse nelle aree pi\u00f9 cariche del sistema software;<\/li>\n<li>Utilizzare un codice pi\u00f9 semplice nel suo resto.<\/li>\n<\/ol>\n<p><\/p>\n<h3>Presentiamo Quarkus<\/h3>\n<p>\nEcco il cuore di Quarkus: unire i modelli reattivi e imperativi all'interno di un'unica runtime.<\/p>\n<p>Alla base di Quarkus ci sono Vert.x e Netty, su cui viene costruita una serie di framework e estensioni reattive pensate per assistere gli sviluppatori. Quarkus \u00e8 progettato per la creazione non solo di microservizi HTTP, ma anche di architetture a eventi. Grazie alla sua natura reattiva, lavora in modo molto efficace con sistemi di messaggistica (Apache Kafka, AMQP, ecc.).<\/p>\n<p>Il segreto sta nel come utilizzare lo stesso motore reattivo sia per il codice imperativo che per quello reattivo.<\/p>\n<p><img decoding=\"async\" alt=\"Come Quarkus combina programmazione imperativa e reattiva\" src=\"\/wp-content\/uploads\/2020\/03\/f7269f4bb9d6767ab3bcc79d317861b0.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Quarkus gestisce questo in modo brillante. La scelta tra imperativo e reattivo \u00e8 chiara: utilizzare un nucleo reattivo per entrambi. Ci\u00f2 che supporta notevolmente \u00e8 il codice non bloccante e veloce, che gestisce quasi tutto ci\u00f2 che attraversa il ciclo degli eventi (event-loop thread, ovvero IO thread). Tuttavia, se hai applicazioni REST classiche o applicazioni lato client, Quarkus ha pronta una model di programmazione imperativa. Ad esempio, il supporto HTTP in Quarkus \u00e8 costruito utilizzando un motore non bloccante e reattivo (Eclipse Vert.x e Netty). Tutte le richieste HTTP ricevute dalla tua applicazione passano inizialmente attraverso il ciclo degli eventi (IO Thread), e poi vengono inviate a quella parte del codice che gestisce le richieste. A seconda della destinazione, il codice di gestione delle richieste pu\u00f2 essere attivato all'interno di un thread separato (il cosiddetto worker thread, utilizzato nel caso di servlet e Jax-RS) o utilizzare il thread di input\/output originale (reactive route).<\/p>\n<p><img decoding=\"async\" alt=\"Come Quarkus combina programmazione imperativa e reattiva\" src=\"\/wp-content\/uploads\/2020\/03\/7338d6881fc9d7582f3fadf3e5f69618.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>I connettori dei sistemi di trasmissione dei messaggi utilizzano client non bloccanti, che operano sopra il motore Vert.x. Questo consente di inviare, ricevere e elaborare efficacemente i messaggi dai sistemi di tipo messaging middleware.<\/p>\n<p>Sul sito <noindex><a rel=\"nofollow\" href=\"http:\/\/www.quarkus.io\/\">Quarkus.io<\/a><\/noindex> sono stati raccolti diversi buoni tutorial che aiutano a iniziare a lavorare con Quarkus:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/guides\/reactive-routes-guide\">Utilizzare le Rotte Reattive<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/guides\/reactive-sql-clients\">Client SQL Reattivi<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/guides\/kafka-guide\">Utilizzare Apache Kafka con Messaging Reattivo<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/guides\/amqp-guide\">Utilizzare AMQP con Messaging Reattivo<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/guides\/using-vertx\">Utilizzare l'API Vertx<\/a><\/noindex><\/li>\n<\/ul>\n<p>\nInoltre, abbiamo preparato corsi pratici online per familiarizzare con diversi aspetti della programmazione reattiva; per seguirli basta un browser, non \u00e8 necessaria alcuna IDE, e nemmeno un computer. \u00c8 possibile trovare questi corsi <noindex><a rel=\"nofollow\" href=\"https:\/\/learn.openshift.com\/middleware\/courses\/middleware-quarkus\/\">qui<\/a><\/noindex>.<\/p>\n<h3>Risorse utili<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.redhat.com\/cms\/managed-files\/cl-4-reasons-try-quarkus-checklist-f19180cs-201909-en.pdf\">4 motivi per provare Quarkus<\/a><\/noindex><\/li>\n<li>Il sito del progetto Quarkus \u00e8 \u2013 <noindex><a rel=\"nofollow\" href=\"http:\/\/quarkus.io\">quarkus.io<\/a><\/noindex><\/li>\n<li>Il progetto Quarkus su GitHub \u00e8 \u2013 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/quarkusio\/quarkus\">github.com\/quarkusio\/quarkus<\/a><\/noindex><\/li>\n<li>Il Twitter del progetto Quarkus \u00e8 \u2013 <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/QuarkusIO\">twitter.com\/QuarkusIO<\/a><\/noindex><\/li>\n<li>Il chat del progetto Quarkus \u00e8 \u2013 <noindex><a rel=\"nofollow\" href=\"https:\/\/quarkusio.zulipchat.com\/\">quarkusio.zulipchat.com<\/a><\/noindex><\/li>\n<li>I forum del progetto Quarkus sono \u2013 <noindex><a rel=\"nofollow\" href=\"https:\/\/groups.google.com\/forum\/#\">groups.google.com\/forum\/#<\/a><\/noindex>!forum\/quarkus-dev<\/li>\n<\/ul>\n<h3>10 video tutorial su Quarkus per orientarsi nel tema<\/h3>\n<p>\nCome viene riportato sul sito <noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/\">Quarkus.io<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2019\/05\/09\/create-your-first-quarkus-project-with-eclipse-ide-red-hat-codeready-studio\/\">Quarkus<\/a><\/noindex> \u00e8 <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/kubernetes\/\">Kubernetes<\/a><\/noindex>un stack Java orientato agli oggetti, ottimizzato per GraalVM e OpenJDK HotSpot, costruito con le migliori librerie e standard Java.<\/p>\n<p>Per aiutarvi a comprendere l'argomento, abbiamo selezionato 10 video tutorial che trattano vari aspetti di Quarkus e esempi del suo utilizzo:<\/p>\n<h4>1. Introduzione a Quarkus: il framework Java di nuova generazione per Kubernetes<\/h4>\n<p>\nAutori: Thomas Qvarnstrom e Jason Greene<br \/>\nL'obiettivo del progetto Quarkus \u00e8 creare una piattaforma Java per Kubernetes e ambienti serverless, unendo modelli di programmazione reattivi e imperativi all'interno di un ambiente di esecuzione unico, permettendo agli sviluppatori di variare flessibilmente l'approccio nel lavorare con una vasta gamma di architetture distribuite. Scopri di pi\u00f9 nella lezione introduttiva qui sotto.<\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"ZCsWi_641Rk\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/ZCsWi_641Rk\/hqdefault.jpg\" alt=\"Riproduci video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<h4>2. Quarkus: Java subatomica super veloce<\/h4>\n<p>\nAutore: Burr Sutter<br \/>\nIl tutorial video del ciclo di conferenze online DevNation Live mostra come utilizzare Quarkus per ottimizzare applicazioni Java aziendali, API, microservizi e funzioni serverless nell'ambiente Kubernetes\/OpenShift, rendendoli molto pi\u00f9 piccoli, veloci e scalabili.<\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"7G_r1iyrn2c\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/7G_r1iyrn2c\/hqdefault.jpg\" alt=\"Riproduci video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<h4>3. Quarkus e GraalVM: spingiamo Hibernate a velocit\u00e0 straordinarie e riduciamolo a dimensioni subatomiche<\/h4>\n<p>\nAutore: Sanne Grinovero<br \/>\nDalla presentazione, scoprirai come \u00e8 nato Quarkus, come funziona e come consente di rendere le librerie complesse, come Hibernate ORM, compatibili con le immagini native di GraalVM.<\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"za5CSBX-UME\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/za5CSBX-UME\/hqdefault.jpg\" alt=\"Riproduci video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<h4>4. Impariamo a sviluppare applicazioni serverless<\/h4>\n<p>\nAutore: Marthen Luther<br \/>\nNel video qui sotto viene mostrato come creare una semplice applicazione Java utilizzando Quarkus e distribuirla come applicazione serverless su Knative.<\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"-c1Sh-1uAeM\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/-c1Sh-1uAeM\/hqdefault.jpg\" alt=\"Riproduci video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<h4>5. Quarkus: programma con piacere<\/h4>\n<p>\nAutore: Edson Yanaga<br \/>\nGuida video per creare il tuo primo progetto Quarkus, che ti permette di capire perch\u00e9 Quarkus conquista i cuori degli sviluppatori.<\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"8r3ZV36ah4I\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/8r3ZV36ah4I\/hqdefault.jpg\" alt=\"Riproduci video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<h4>6. Java e container: quale sar\u00e0 il loro futuro insieme<\/h4>\n<p>\nAutore: Mark Little<br \/>\nQuesta presentazione presenta la storia di Java e spiega perch\u00e9 Quarkus rappresenta il futuro di Java.<\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"O085h6jKBWc\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/O085h6jKBWc\/hqdefault.jpg\" alt=\"Riproduci video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<h4>7. Quarkus: Java subatomico super veloce<\/h4>\n<p>\nAutore: Dimitris Andreadis<br \/>\nPanoramica dei vantaggi di Quarkus, riconosciuti dagli sviluppatori: semplicit\u00e0, velocit\u00e0 estremamente elevate, migliori librerie e standard.<\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"UWETnSFB0WA\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/UWETnSFB0WA\/hqdefault.jpg\" alt=\"Riproduci video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<h4>8. Quarkus e sistemi reattivi subatomici<\/h4>\n<p>\nAutore: Clement Escoffier<br \/>\nGrazie all'integrazione con GraalVM, Quarkus offre un'esperienza di sviluppo ultrarapida e un runtime subatomico. L'autore parla dell'aspetto reattivo di Quarkus e di come utilizzarlo per creare applicazioni reattive e applicazioni con streaming di dati.<\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"trwJxZawglc\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/trwJxZawglc\/hqdefault.jpg\" alt=\"Riproduci video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<h4>9. Quarkus e lo sviluppo rapido di applicazioni in Eclipse MicroProfile<\/h4>\n<p>\nAutore: John Clingan<br \/>\nCombinando Eclipse MicroProfile e Quarkus, gli sviluppatori possono creare applicazioni container MicroProfile a piena funzionalit\u00e0 che si avviano in pochi millisecondi. Il video analizza in dettaglio come codificare un'applicazione container MicroProfile per il deployment sulla piattaforma Kubernetes.<\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"hReKM6rmcho\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/hReKM6rmcho\/hqdefault.jpg\" alt=\"Riproduci video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<h4>10. Java, versione 'Turbo'<\/h4>\n<p>\nAutore: Marcus Biel<br \/>\nL'autore mostra come utilizzare Quarkus per creare contenitori Java super piccoli e super veloci, consentendo un vero e proprio salto in avanti, soprattutto negli ambienti serverless.<\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"eqUApOrYeS8\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/eqUApOrYeS8\/hqdefault.jpg\" alt=\"Riproduci video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/redhatrussia\/blog\/493010\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u044d\u0442\u043e\u043c \u0433\u043e\u0434\u0443 \u043c\u044b \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u043c \u0432\u0441\u0435\u0440\u044c\u0435\u0437 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c \u0442\u0435\u043c\u044b \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432, Cloud-Native Java \u0438 Kubernetes. \u041b\u043e\u0433\u0438\u0447\u043d\u044b\u043c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435\u043c \u044d\u0442\u0438\u0445 \u0442\u0435\u043c \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043a\u0430\u0437 \u043e \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0435 Quarkus, \u0443\u0436\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u043e\u043c \u043d\u0430 \u0425\u0430\u0431\u0440\u0435. \u0421\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u044f\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u043d\u0435 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443 \u00ab\u0441\u0443\u0431\u0430\u0442\u043e\u043c\u043d\u043e\u0439 \u0441\u0432\u0435\u0440\u0445\u0431\u044b\u0441\u0442\u0440\u043e\u0439 Java\u00bb, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043c \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 Quarkus \u043f\u0440\u0438\u0432\u043d\u043e\u0441\u0438\u0442 \u0432 Enterprise. Java \u0438 JVM \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b, \u043d\u043e \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0431\u0435\u0441\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u043c\u0438 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f\u043c\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":74796,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-74795","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 \u044d\u0442\u043e\u043c \u0433\u043e\u0434\u0443 \u043c\u044b \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u043c \u0432\u0441\u0435\u0440\u044c\u0435\u0437 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c \u0442\u0435\u043c\u044b \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432, Cloud-Native Java \u0438 Kubernetes. \u041b\u043e\u0433\u0438\u0447\u043d\u044b\u043c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435\u043c \u044d\u0442\u0438\u0445 \u0442\u0435\u043c \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043a\u0430\u0437 \u043e \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0435 Quarkus, \u0443\u0436\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u043e\u043c \u043d\u0430 \u0425\u0430\u0431\u0440\u0435. \u0421\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u044f\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u043d\u0435 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443 \u00ab\u0441\u0443\u0431\u0430\u0442\u043e\u043c\u043d\u043e\u0439 \u0441\u0432\u0435\u0440\u0445\u0431\u044b\u0441\u0442\u0440\u043e\u0439 Java\u00bb, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043c \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 Quarkus \u043f\u0440\u0438\u0432\u043d\u043e\u0441\u0438\u0442 \u0432 Enterprise. Java \u0438 JVM \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b, \u043d\u043e \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0431\u0435\u0441\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u043c\u0438 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f\u043c\u0438\" \/>\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\/kak-quarkus-obedinyaet-imperativnoe-i-reaktivnoe-programmirovanie\" \/>\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\u041a\u0430\u043a Quarkus \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u0442 \u0438\u043c\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0435 \u0438 \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u044d\u0442\u043e\u043c \u0433\u043e\u0434\u0443 \u043c\u044b \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u043c \u0432\u0441\u0435\u0440\u044c\u0435\u0437 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c \u0442\u0435\u043c\u044b \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432, Cloud-Native Java \u0438 Kubernetes. \u041b\u043e\u0433\u0438\u0447\u043d\u044b\u043c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435\u043c \u044d\u0442\u0438\u0445 \u0442\u0435\u043c \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043a\u0430\u0437 \u043e \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0435 Quarkus, \u0443\u0436\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u043e\u043c \u043d\u0430 \u0425\u0430\u0431\u0440\u0435. \u0421\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u044f\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u043d\u0435 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443 \u00ab\u0441\u0443\u0431\u0430\u0442\u043e\u043c\u043d\u043e\u0439 \u0441\u0432\u0435\u0440\u0445\u0431\u044b\u0441\u0442\u0440\u043e\u0439 Java\u00bb, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043c \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 Quarkus \u043f\u0440\u0438\u0432\u043d\u043e\u0441\u0438\u0442 \u0432 Enterprise. Java \u0438 JVM \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b, \u043d\u043e \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0431\u0435\u0441\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u043c\u0438 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f\u043c\u0438\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/kak-quarkus-obedinyaet-imperativnoe-i-reaktivnoe-programmirovanie\" \/>\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-03-20T17:42:21+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-03-20T17:42:21+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\udd47Come Quarkus unisce programmazione imperativa e reattiva | ProHoster","description":"Quest'anno abbiamo in programma di sviluppare seriamente i temi dei container, del Cloud-Native Java e di Kubernetes. Una logica continuazione di questi argomenti sar\u00e0 la discussione sul framework Quarkus, gi\u00e0 trattato su Habr. L'articolo di oggi \u00e8 dedicato non tanto alla struttura della \"Java subatomica superveloce\", quanto alle prospettive che Quarkus porta nel settore Enterprise. Java e JVM rimangono estremamente popolari, ma nell'utilizzo delle tecnologie serverless.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/kak-quarkus-obedinyaet-imperativnoe-i-reaktivnoe-programmirovanie","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\u041a\u0430\u043a Quarkus \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u0442 \u0438\u043c\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0435 \u0438 \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 | ProHoster","og:description":"\u0412 \u044d\u0442\u043e\u043c \u0433\u043e\u0434\u0443 \u043c\u044b \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u043c \u0432\u0441\u0435\u0440\u044c\u0435\u0437 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c \u0442\u0435\u043c\u044b \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432, Cloud-Native Java \u0438 Kubernetes. \u041b\u043e\u0433\u0438\u0447\u043d\u044b\u043c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435\u043c \u044d\u0442\u0438\u0445 \u0442\u0435\u043c \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043a\u0430\u0437 \u043e \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0435 Quarkus, \u0443\u0436\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u043e\u043c \u043d\u0430 \u0425\u0430\u0431\u0440\u0435. \u0421\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u044f\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u043d\u0435 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443 \u00ab\u0441\u0443\u0431\u0430\u0442\u043e\u043c\u043d\u043e\u0439 \u0441\u0432\u0435\u0440\u0445\u0431\u044b\u0441\u0442\u0440\u043e\u0439 Java\u00bb, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043c \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 Quarkus \u043f\u0440\u0438\u0432\u043d\u043e\u0441\u0438\u0442 \u0432 Enterprise. Java \u0438 JVM \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b, \u043d\u043e \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0431\u0435\u0441\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u043c\u0438 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f\u043c\u0438","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/kak-quarkus-obedinyaet-imperativnoe-i-reaktivnoe-programmirovanie","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-03-20T17:42:21+00:00","article:modified_time":"2020-03-20T17:42:21+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"74795","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 18:07:28","updated":"2022-10-01 02:07:41"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/74795","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=74795"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/74795\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/74796"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=74795"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=74795"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=74795"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}