{"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\/sk\/blog\/administrirovanie\/kak-quarkus-obedinyaet-imperativnoe-i-reaktivnoe-programmirovanie","title":{"rendered":"Ako Quarkus sp\u00e1ja imperat\u00edvne a reakt\u00edvne programovanie","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Tento rok pl\u00e1nujeme v\u00e1\u017ene rozv\u00edja\u0165 t\u00e9my kontajnerov, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/product_by_id\/112863337\">Cloud-Native Java<\/a><\/noindex> a <noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/product_by_id\/125705747\">Kubernetes<\/a><\/noindex>. Logick\u00fdm pokra\u010dovan\u00edm t\u00fdchto t\u00e9m bude rozpr\u00e1vanie o frameworku Quarkus, ktor\u00fd u\u017e bol <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/haulmont\/blog\/443242\/\">presk\u00faman\u00fd<\/a><\/noindex> na Habr\u00e9. Dne\u0161n\u00fd \u010dl\u00e1nok sa nezameriava to\u013eko na fungovanie \"subatomovej superr\u00fdchlej Java\", ale sk\u00f4r na perspekt\u00edvy, ktor\u00e9 Quarkus prin\u00e1\u0161a do podniku.<\/p>\n<p><img decoding=\"async\" alt=\"Ako Quarkus sp\u00e1ja imperat\u00edvne a reakt\u00edvne programovanie\" src=\"\/wp-content\/uploads\/2020\/03\/6337d74cb66ee078c2b7c206be3d88fe.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJava a JVM s\u00fa st\u00e1le mimoriadne popul\u00e1rne, ale pri pr\u00e1ci s bezserverov\u00fdmi technol\u00f3giami a cloudom orientovan\u00fdmi mikroslu\u017ebami sa Java a \u010fal\u0161ie jazyky pre JVM pou\u017e\u00edvaj\u00fa \u010doraz menej, preto\u017ee zaberaj\u00fa pr\u00edli\u0161 ve\u013ea pam\u00e4te a pomaly sa na\u010d\u00edtavaj\u00fa, \u010do ich rob\u00ed nevhodn\u00fdmi na pou\u017eitie s kr\u00e1tkodob\u00fdmi kontajnermi. Na\u0161\u0165astie sa t\u00e1to situ\u00e1cia v s\u00fa\u010dasnosti za\u010d\u00edna meni\u0165 v\u010faka Quarkus.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Superr\u00fdchla subatomov\u00e1 Java dosiahla nov\u00fd level!<\/h3>\n<p>\n42 release, 8 mesiacov pr\u00e1ce komunity a 177 \u00fa\u017easn\u00fdch v\u00fdvoj\u00e1rov \u2013 to v\u0161etko viedlo k vydaniu v novembri 2019 <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/quarkus\/\">Quarkus 1.0<\/a><\/noindex>, vydanie, ktor\u00e9 predstavuje d\u00f4le\u017eit\u00fd m\u00ed\u013enik vo v\u00fdvoji projektu a pon\u00faka mno\u017estvo skvel\u00fdch funkci\u00ed a mo\u017enost\u00ed (o nich si m\u00f4\u017eete pre\u010d\u00edta\u0165 v <noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/blog\/announcing-quarkus-1-0\/\">ozn\u00e1men\u00ed<\/a><\/noindex>).<\/p>\n<p>Dnes v\u00e1m uk\u00e1\u017eeme, ako Quarkus sp\u00e1ja modely imperat\u00edvneho a reakt\u00edvneho programovania na z\u00e1klade jedn\u00e9ho reakt\u00edvneho jadra. Za\u010dneme kr\u00e1tkym poh\u013eadom do hist\u00f3rie a potom podrobne presk\u00famame, v \u010dom spo\u010d\u00edva dualita reakt\u00edvneho jadra Quarkus a ako <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/enterprise-java\/\">Java<\/a><\/noindex>-v\u00fdvoj\u00e1ri m\u00f4\u017eu tieto v\u00fdhody vyu\u017ei\u0165.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/microservices\/\">Mikroslu\u017eby<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/event-driven\/\">architekt\u00fary riadenej udalos\u0165ami<\/a><\/noindex> a <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/serverless-architecture\/\">bezserverov\u00e9<\/a><\/noindex>-funkcie \u2013 to v\u0161etko je dnes, \u010do sa naz\u00fdva, na vzostupe. V poslednej dobe sa vytv\u00e1ranie architekt\u00far orientovan\u00fdch na cloud stalo ove\u013ea jednoduch\u0161ie a dostupnej\u0161ie, av\u0161ak probl\u00e9my zostali \u2013 najm\u00e4 pre v\u00fdvoj\u00e1rov Java. Napr\u00edklad v pr\u00edpade bezserverov\u00fdch funkci\u00ed a mikroslu\u017eieb existuje naliehav\u00e1 potreba skr\u00e1ti\u0165 \u010das spustenia, zn\u00ed\u017ei\u0165 spotrebu pam\u00e4te a urobi\u0165 ich v\u00fdvoj pohodlnej\u0161\u00edm a pr\u00edjemnej\u0161\u00edm. Java v posledn\u00fdch rokoch zaznamenala nieko\u013eko vylep\u0161en\u00ed, ako napr\u00edklad vylep\u0161en\u00fa ergon\u00f3miu pre kontajnery a podobne. Napriek tomu je dosiahnu\u0165 spr\u00e1vnu funkciu Java v kontejnere st\u00e1le n\u00e1ro\u010dn\u00e9. Preto za\u010dneme t\u00fdm, \u017ee presk\u00famame niektor\u00e9 z vn\u00fatorn\u00fdch \u0165a\u017ekost\u00ed Java, ktor\u00e9 sa najviac prejavuj\u00fa pri v\u00fdvoji kontajnerovo orientovan\u00fdch Java aplik\u00e1ci\u00ed.<\/p>\n<p>Na za\u010diatok sa pozrime na hist\u00f3riu.<\/p>\n<p><img decoding=\"async\" alt=\"Ako Quarkus sp\u00e1ja imperat\u00edvne a reakt\u00edvne programovanie\" src=\"\/wp-content\/uploads\/2020\/03\/4478ef5c3b89a1bd91752a4ede74bdfd.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Pr\u00fady a kontajnery<\/h3>\n<p>\nOd verzie 8u131 za\u010dala Java do ur\u010ditej miery podporova\u0165 kontajnery zlep\u0161en\u00edm funk\u010dnosti ergon\u00f3mie. Konkr\u00e9tne teraz JVM vie, na ko\u013ek\u00fdch procesorov\u00fdch jadr\u00e1ch be\u017e\u00ed a m\u00f4\u017ee zodpovedaj\u00facim sp\u00f4sobom prisp\u00f4sobi\u0165 pooly pr\u00fadov \u2013 zvy\u010dajne pooly fork\/join. Ur\u010dite je to skvel\u00e9, ale povedzme, \u017ee m\u00e1me tradi\u010dn\u00fa webov\u00fa aplik\u00e1ciu, ktor\u00e1 pou\u017e\u00edva HTTP servlety a be\u017e\u00ed na Tomcat, Jetty a podobne. V d\u00f4sledku toho t\u00e1to aplik\u00e1cia prira\u010fuje ka\u017ed\u00fdmu po\u017eiadavku samostatn\u00fd pr\u00fad a umo\u017e\u0148uje mu blokova\u0165 tento pr\u00fad pri \u010dakan\u00ed na oper\u00e1cie vstupu\/v\u00fdstupu, napr\u00edklad pri pr\u00edstupe k datab\u00e1ze, s\u00faborom alebo in\u00fdm slu\u017eb\u00e1m. To znamen\u00e1, \u017ee ve\u013ekos\u0165 takejto aplik\u00e1cie nez\u00e1vis\u00ed od po\u010dtu dostupn\u00fdch jadier, ale od po\u010dtu s\u00fa\u010dasn\u00fdch po\u017eiadaviek. Okrem toho to znamen\u00e1, \u017ee kv\u00f3ty alebo limity v Kubernetes pod\u013ea po\u010dtu jadier tu nie s\u00fa ve\u013emi u\u017eito\u010dn\u00e9 a nakoniec sa v\u0161etko skon\u010d\u00ed throttlingom.<\/p>\n<h3>Vy\u010derpanie pam\u00e4te<\/h3>\n<p>\nPr\u00fady s\u00fa pam\u00e4\u0165. A vn\u00fatro-kontajnerov\u00e9 obmedzenia na pam\u00e4\u0165 rozhodne nie s\u00fa v\u0161eliekom. Sta\u010d\u00ed za\u010da\u0165 zvy\u0161ova\u0165 po\u010det aplik\u00e1ci\u00ed a pr\u00fadov a sk\u00f4r \u010di nesk\u00f4r sa stretnete s kritick\u00fdm n\u00e1rastom frekvencie prep\u00ednan\u00ed a ako d\u00f4sledok s degrad\u00e1ciou v\u00fdkonu. Okrem toho, ak aplik\u00e1cia pou\u017e\u00edva tradi\u010dn\u00e9 mikroslu\u017eby, alebo sa prip\u00e1ja k datab\u00e1ze, alebo vyu\u017e\u00edva cache, alebo inak navy\u0161e spotrebov\u00e1va pam\u00e4\u0165, ur\u010dite potrebujete n\u00e1stroj, ktor\u00fd v\u00e1m umo\u017en\u00ed nazrie\u0165 do JVM a sledova\u0165, ako spravuje pam\u00e4\u0165 bez zabitia samotnej JVM (napr\u00edklad XX:+UseCGroupMemoryLimitForHeap). A aj ke\u010f sa od Java 9 JVM nau\u010dila vn\u00edma\u0165 cgroups a prisp\u00f4sobova\u0165 sa, rezervovanie a spr\u00e1va pam\u00e4te zost\u00e1va pomerne zlo\u017eitou \u00falohou.<\/p>\n<h3>Kv\u00f3ty a limity<\/h3>\n<p>\nV Java 11 sa objavila podpora CPU kv\u00f3t (ako PreferContainerQuotaForCPUCount). Kubernetes tie\u017e pon\u00faka podporu limitov a kv\u00f3t. \u00c1no, v\u0161etko to m\u00e1 zmysel, ale ak aplik\u00e1cia op\u00e4\u0165 prekro\u010d\u00ed pridelen\u00fa kv\u00f3tu, op\u00e4\u0165 sa dost\u00e1vame k tomu, \u017ee ve\u013ekos\u0165 \u2013 ako v pr\u00edpade tradi\u010dn\u00fdch Java aplik\u00e1ci\u00ed \u2013 je ur\u010den\u00e1 po\u010dtom jadier s pridelen\u00edm samostatn\u00e9ho pr\u00fadu na ka\u017ed\u00fd po\u017eiadavok, teda z toho v\u0161etk\u00e9ho nie je ve\u013ek\u00fd osoh.<br \/>\nNavy\u0161e, ak sa pou\u017e\u00edvaj\u00fa kv\u00f3ty a limity alebo funkcie horizont\u00e1lneho (scale-out) \u0161k\u00e1lovania platformy zalo\u017eenej na Kubernetes, probl\u00e9m sa s\u00e1m od seba nerie\u0161i. Jednoducho vynaklad\u00e1me viac zdrojov na rie\u0161enie p\u00f4vodn\u00e9ho probl\u00e9mu alebo nakoniec prich\u00e1dzame k prebyto\u010dn\u00fdm zdrojom. A ak ide o vysoce za\u0165a\u017een\u00fd syst\u00e9m v verejne dostupnej oblakoch, takmer ur\u010dite za\u010dneme vyu\u017e\u00edva\u0165 viac zdrojov, ne\u017e je naozaj potrebn\u00e9.<\/p>\n<h3>A \u010do s t\u00fdm v\u0161etk\u00fdm robi\u0165?<\/h3>\n<p>\nJednoducho povedan\u00e9, je potrebn\u00e9 pou\u017e\u00edva\u0165 asynchr\u00f3nne a neblokuj\u00face kni\u017enice vstupu a v\u00fdstupu a frameworky ako 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> alebo Akka. Tieto s\u00fa ove\u013ea lep\u0161ie prisp\u00f4soben\u00e9 na pr\u00e1cu v kontajneroch kv\u00f4li svojej reak\u010dnej povahe. V\u010faka neblokuj\u00facemu vstupu a v\u00fdstupu m\u00f4\u017ee tej istej vl\u00e1kno spracov\u00e1va\u0165 s\u00fa\u010dasne viacero po\u017eiadaviek. K\u00fdm jedna po\u017eiadavka \u010dak\u00e1 na v\u00fdsledky vstupu a v\u00fdstupu, spracov\u00e1vaj\u00face vl\u00e1kno sa uvo\u013en\u00ed a prevezme \u010fal\u0161iu po\u017eiadavku. A ke\u010f kone\u010dne prich\u00e1dzaj\u00fa v\u00fdsledky vstupu a v\u00fdstupu, spracovanie prvej po\u017eiadavky pokra\u010duje. Striedan\u00edm spracovania po\u017eiadaviek v r\u00e1mci toho ist\u00e9ho vl\u00e1kna je mo\u017en\u00e9 zredukova\u0165 celkov\u00fd po\u010det vl\u00e1kien a zn\u00ed\u017ei\u0165 spotrebu zdrojov na spracovanie po\u017eiadaviek.<\/p>\n<p>Pri neblokuj\u00facom vstupe a v\u00fdstupe sa po\u010det jadier st\u00e1va k\u013e\u00fa\u010dov\u00fdm parametrom, preto\u017ee ur\u010duje po\u010det vl\u00e1kien vstupu a v\u00fdstupu, ktor\u00e9 m\u00f4\u017eu be\u017ea\u0165 paralelne. Pri spr\u00e1vnom pou\u017eit\u00ed to umo\u017e\u0148uje efekt\u00edvne rozlo\u017ei\u0165 z\u00e1\u0165a\u017e medzi jadr\u00e1 a zvl\u00e1dnu\u0165 vy\u0161\u0161ie za\u0165a\u017eenia pri men\u0161\u00edch zdrojoch.<\/p>\n<h3>Ako, a to je v\u0161etko?<\/h3>\n<p>\nNie, je tu e\u0161te nie\u010do. Reakt\u00edvne programovanie pom\u00e1ha lep\u0161ie vyu\u017ei\u0165 zdroje, ale m\u00e1 aj svoju cenu. Konkr\u00e9tne, k\u00f3d bude potrebn\u00e9 prepisova\u0165 pod\u013ea princ\u00edpov neblokovate\u013enosti a vyhn\u00fa\u0165 sa blokovaniu vl\u00e1kien vstupu a v\u00fdstupu. A to je \u00faplne in\u00fd model v\u00fdvoja a vykon\u00e1vania. A hoci je tu mno\u017estvo u\u017eito\u010dn\u00fdch kni\u017en\u00edc, st\u00e1le ide o radik\u00e1lnu zmenu zvy\u010dajn\u00fdm sp\u00f4sobom myslenia.<\/p>\n<p>Po prv\u00e9, mus\u00edte sa nau\u010di\u0165 p\u00edsa\u0165 k\u00f3d, ktor\u00fd sa vykon\u00e1va asynchr\u00f3nne. Akon\u00e1hle za\u010dnete pou\u017e\u00edva\u0165 neblokuj\u00faci vstup-v\u00fdstup, je potrebn\u00e9 jasne uvies\u0165, \u010do sa m\u00e1 sta\u0165 pri prijat\u00ed odpovede na po\u017eiadavku. Jednoducho blokova\u0165 a \u010daka\u0165 u\u017e nebude mo\u017en\u00e9. Namiesto toho m\u00f4\u017eete pren\u00e1\u0161a\u0165 sp\u00e4tn\u00e9 volania, pou\u017e\u00edva\u0165 reakt\u00edvne programovanie alebo continuation. No to nie je v\u0161etko: na to, aby ste pou\u017e\u00edvali neblokuj\u00faci vstup-v\u00fdstup, potrebujete aj neblokuj\u00face servery a klientov, a to najlep\u0161ie na v\u0161etk\u00fdch miestach. V pr\u00edpade HTTP je to jednoduch\u00e9, ale s\u00fa tu aj datab\u00e1zy, s\u00faborov\u00e9 syst\u00e9my a mnoho \u010fal\u0161ieho.<\/p>\n<p>A hoci tot\u00e1lna priese\u010dn\u00e1 reaktivita pon\u00faka maxim\u00e1lnu efektivitu, tento posun m\u00f4\u017ee by\u0165 v praxi \u0165a\u017eko str\u00e1vite\u013en\u00fd. Preto je potrebn\u00e9 ma\u0165 mo\u017enos\u0165 kombinova\u0165 reakt\u00edvny a imperat\u00edvny k\u00f3d, aby sa:<\/p>\n<ol>\n<li>Efekt\u00edvne vyu\u017e\u00edvali zdroje na najvy\u0165a\u017eenej\u0161\u00edch smeroch softv\u00e9rovej s\u00fastavy;<\/li>\n<li>Pou\u017e\u00edval sa jednoduch\u0161\u00ed \u0161t\u00fdl k\u00f3du v ostatn\u00fdch \u010dastiach.<\/li>\n<\/ol>\n<p><\/p>\n<h3>Predstavujeme Quarkus<\/h3>\n<p>\nVlastne o tom je podstata Quarkus \u2013 spoji\u0165 reakt\u00edvny a imperat\u00edvny model v r\u00e1mci jedn\u00e9ho vykon\u00e1vacieho prostredia.<\/p>\n<p>Na z\u00e1klade Quarkus s\u00fa Vert.x a Netty, nad ktor\u00fdmi sa vyu\u017e\u00edva mno\u017estvo reakt\u00edvnych r\u00e1mcov a roz\u0161\u00edren\u00ed, navrhnut\u00fdch na pomoc v\u00fdvoj\u00e1rovi. Quarkus je ur\u010den\u00fd na vytv\u00e1ranie nielen HTTP mikroslu\u017eieb, ale aj architekt\u00far riaden\u00fdch udalos\u0165ami. V\u010faka svojej reakt\u00edvnej povahe ve\u013emi efekt\u00edvne pracuje so syst\u00e9mami v\u00fdmeny spr\u00e1v (Apache Kafka, AMQP at\u010f.).<\/p>\n<p>Cel\u00e1 pointa spo\u010d\u00edva v tom, ako pou\u017e\u00edva\u0165 ten ist\u00fd reakt\u00edvny engine ako pre imperat\u00edvny, tak aj pre reakt\u00edvny k\u00f3d.<\/p>\n<p><img decoding=\"async\" alt=\"Ako Quarkus sp\u00e1ja imperat\u00edvne a reakt\u00edvne programovanie\" src=\"\/wp-content\/uploads\/2020\/03\/f7269f4bb9d6767ab3bcc79d317861b0.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Quarkus sa t\u00fdm brilantne porad\u00ed. V\u00fdber medzi imperat\u00edvnym a reakt\u00edvnym programovan\u00edm je jasn\u00fd \u2013 pou\u017ei\u0165 reakt\u00edvne jadro pre obe. A kde to ve\u013emi pom\u00e1ha, je s r\u00fdchlym neblokuj\u00facim k\u00f3dom, ktor\u00fd spracov\u00e1va takmer v\u0161etko, \u010do prech\u00e1dza cez event-loop vl\u00e1kno (event-loop thread, teda IO thread). Ak m\u00e1te klasick\u00e9 REST aplik\u00e1cie alebo aplik\u00e1cie na strane klienta, Quarkus m\u00e1 pripraven\u00fd imperat\u00edvny model programovania. Napr\u00edklad podpora HTTP v Quarkus stav\u00ed na pou\u017eit\u00ed neblokuj\u00faceho a reakt\u00edvneho enginu (Eclipse Vert.x a Netty). V\u0161etky HTTP po\u017eiadavky, ktor\u00e9 va\u0161a aplik\u00e1cia prij\u00edma, najprv prech\u00e1dzaj\u00fa cez event loop (IO Thread), a potom s\u00fa odoslan\u00e9 tej \u010dasti k\u00f3du, ktor\u00e1 riadi po\u017eiadavky. V z\u00e1vislosti od cie\u013ea m\u00f4\u017ee by\u0165 k\u00f3d riadenia po\u017eiadaviek vyvolan\u00fd v r\u00e1mci samostatn\u00e9ho vl\u00e1kna (tzv. worker thread, pou\u017e\u00edva sa v pr\u00edpade servletov a Jax-RS) alebo m\u00f4\u017ee vyu\u017e\u00edva\u0165 p\u00f4vodn\u00e9 vl\u00e1kno vstupu\/v\u00fdstupu (reakt\u00edvna trasa reactive route).<\/p>\n<p><img decoding=\"async\" alt=\"Ako Quarkus sp\u00e1ja imperat\u00edvne a reakt\u00edvne programovanie\" src=\"\/wp-content\/uploads\/2020\/03\/7338d6881fc9d7582f3fadf3e5f69618.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Pre konektory syst\u00e9mov na prenos spr\u00e1v sa pou\u017e\u00edvaj\u00fa neblokuj\u00face klienty, ktor\u00e9 pracuj\u00fa nad enginom Vert.x. Preto m\u00f4\u017eete efekt\u00edvne odosiela\u0165, prij\u00edma\u0165 a spracov\u00e1va\u0165 spr\u00e1vy zo syst\u00e9mov typu messaging middleware.<\/p>\n<p>Na str\u00e1nke <noindex><a rel=\"nofollow\" href=\"http:\/\/www.quarkus.io\/\">Quarkus.io<\/a><\/noindex> boli zhroma\u017eden\u00e9 niektor\u00e9 dobr\u00e9 n\u00e1vody, ktor\u00e9 v\u00e1m pom\u00f4\u017eu za\u010da\u0165 s Quarkus:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/guides\/reactive-routes-guide\">Pou\u017e\u00edvanie reakt\u00edvnych tr\u00e1s<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/guides\/reactive-sql-clients\">Reakt\u00edvne SQL klienti<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/guides\/kafka-guide\">Pou\u017e\u00edvanie Apache Kafka s reakt\u00edvnym posielan\u00edm spr\u00e1v<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/guides\/amqp-guide\">Pou\u017e\u00edvanie AMQP s reakt\u00edvnym posielan\u00edm spr\u00e1v<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/guides\/using-vertx\">Pou\u017e\u00edvanie Vert.x API<\/a><\/noindex><\/li>\n<\/ul>\n<p>\nOkrem toho sme pripravili online praktick\u00e9 lekcie na obozn\u00e1menie sa s r\u00f4znymi aspektmi reakt\u00edvneho programovania, pri\u010dom na ich absolvovanie sta\u010d\u00ed len prehliada\u010d, nijak\u00e1 IDE na to nie je potrebn\u00e1, a ani po\u010d\u00edta\u010d nie je nevyhnutn\u00fd. Tieto lekcie n\u00e1jdete <noindex><a rel=\"nofollow\" href=\"https:\/\/learn.openshift.com\/middleware\/courses\/middleware-quarkus\/\">tu<\/a><\/noindex>.<\/p>\n<h3>U\u017eito\u010dn\u00e9 zdroje<\/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 d\u00f4vody na vysk\u00fa\u0161anie Quarkus<\/a><\/noindex><\/li>\n<li>Webov\u00e1 str\u00e1nka projektu Quarkus je \u2013 <noindex><a rel=\"nofollow\" href=\"http:\/\/quarkus.io\">quarkus.io<\/a><\/noindex><\/li>\n<li>Projekt Quarkus na GitHub je \u2013 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/quarkusio\/quarkus\">github.com\/quarkusio\/quarkus<\/a><\/noindex><\/li>\n<li>Twitter projektu Quarkus je \u2013 <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/QuarkusIO\">twitter.com\/QuarkusIO<\/a><\/noindex><\/li>\n<li>Chat projektu Quarkus je \u2013 <noindex><a rel=\"nofollow\" href=\"https:\/\/quarkusio.zulipchat.com\/\">quarkusio.zulipchat.com<\/a><\/noindex><\/li>\n<li>F\u00f3ra projektu Quarkus s\u00fa \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 lekci\u00ed o Quarkus, aby ste sa obozn\u00e1mili s t\u00e9mou<\/h3>\n<p>\nAko sa p\u00ed\u0161e na str\u00e1nke <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> logick\u00fd kan\u00e1l <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/kubernetes\/\">Kubernetes<\/a><\/noindex>-orientovan\u00fd Java stack, optimalizovan\u00fd pre GraalVM a OpenJDK HotSpot a vybudovan\u00fd z najlep\u0161\u00edch Java kni\u017en\u00edc a \u0161tandardov.<\/p>\n<p>Aby sme v\u00e1m pomohli sa zorientova\u0165 v t\u00e9me, vybrali sme 10 video lekci\u00ed, ktor\u00e9 pokr\u00fdvaj\u00fa r\u00f4zne aspekty Quarkus a pr\u00edklady jeho pou\u017eitia:<\/p>\n<h4>1. Predstavujeme Quarkus: Java r\u00e1mec novej gener\u00e1cie pre Kubernetes<\/h4>\n<p>\nAutori: Thomas Qvarnstrom a Jason Greene<br \/>\nCie\u013eom projektu Quarkus je vytvori\u0165 Java platformu pre Kubernetes a serverless prostredia, ako aj skombinova\u0165 reakt\u00edvne a imperat\u00edvne programovacie modely do jedn\u00e9ho prostredia prevedenia, aby v\u00fdvoj\u00e1ri mohli flexibilne variabilizova\u0165 pr\u00edstup pri pr\u00e1ci so \u0161irok\u00fdm spektrom distribuovan\u00fdch architekt\u00far aplik\u00e1ci\u00ed. Viac inform\u00e1ci\u00ed n\u00e1jdete v \u00favodnej predn\u00e1\u0161ke ni\u017e\u0161ie.<\/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=\"Prehrajte 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: nadzvukov\u00e1 subat\u00f3mov\u00e1 Java<\/h4>\n<p>\nAutor: Burr Sutter<br \/>\nVideon\u00e1vod z internetov\u00e9ho lekt\u00f3ria DevNation Live demon\u0161truje, ako pou\u017e\u00edva\u0165 Quarkus na optimaliz\u00e1ciu podnikov\u00fdch Java aplik\u00e1ci\u00ed, API, mikroservisov a serverless funkci\u00ed v prostred\u00ed Kubernetes\/OpenShift, \u010d\u00edm ich rob\u00ed ove\u013ea men\u0161\u00edmi, r\u00fdchlej\u0161\u00edmi a \u0161k\u00e1lovate\u013enej\u0161\u00edmi.<\/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=\"Prehrajte 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 a GraalVM: zrychlenie Hibernate do nadzvukov\u00fdch r\u00fdchlost\u00ed a zmen\u0161enie do subat\u00f3mov\u00fdch rozmerov<\/h4>\n<p>\nAutor: Sanne Grinovero<br \/>\nZ prezent\u00e1cie sa dozviete, ako vznikol Quarkus, ako funguje a ako umo\u017e\u0148uje, aby komplexn\u00e9 kni\u017enice, ako Hibernate ORM, boli kompatibiln\u00e9 s nativn\u00fdmi obrazmi 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=\"Prehrajte 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. U\u010d\u00edme sa vyv\u00edja\u0165 serverless aplik\u00e1cie<\/h4>\n<p>\nAutor: Marthen Luther<br \/>\nVo videu ni\u017e\u0161ie je uk\u00e1zan\u00e9, ako vytvori\u0165 jednoduch\u00fa Java aplik\u00e1ciu pomocou Quarkus a nasadi\u0165 ju ako serverless aplik\u00e1ciu na 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=\"Prehrajte 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: k\u00f3dovanie s rados\u0165ou<\/h4>\n<p>\nAutor: Edson Yanaga<br \/>\nVideon\u00e1vod na vytvorenie v\u00e1\u0161ho prv\u00e9ho projektu Quarkus, ktor\u00fd vysvet\u013euje, pre\u010do Quarkus z\u00edskava srdcia v\u00fdvoj\u00e1rov.<\/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=\"Prehrajte 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 a kontajnery \u2013 ak\u00e1 bude ich spolo\u010dn\u00e1 bud\u00facnos\u0165<\/h4>\n<p>\nAutor: Mark Little<br \/>\nT\u00e1to prezent\u00e1cia oboznamuje s hist\u00f3riou Java a vysvet\u013euje, pre\u010do je Quarkus bud\u00facnos\u0165ou 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=\"Prehrajte 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: nadzvukov\u00e1 subat\u00f3mov\u00e1 Java<\/h4>\n<p>\nAutor: Dimitris Andreadis<br \/>\nPreh\u013ead v\u00fdhod Quarkus, ktor\u00e9 si z\u00edskali uznanie v\u00fdvoj\u00e1rov: jednoduchos\u0165, nadzvukov\u00e9 r\u00fdchlosti, najlep\u0161ie kni\u017enice a normy.<\/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=\"Prehrajte 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 a subatomov\u00e9 reakt\u00edvne syst\u00e9my<\/h4>\n<p>\nAutor: Clement Escoffier<br \/>\nV\u010faka integr\u00e1cii s GraalVM poskytuje Quarkus nadzvukov\u00fa expertn\u00fa sk\u00fasenos\u0165 a subatomov\u00e9 prostredie prevedenia. Autor hovor\u00ed o reakt\u00edvnej str\u00e1nke Quarkus a o tom, ako ju pou\u017e\u00edva\u0165 pri vytv\u00e1ran\u00ed reakt\u00edvnych aplik\u00e1ci\u00ed a aplik\u00e1ci\u00ed s prenosom d\u00e1t.<\/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=\"Prehrajte 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 a r\u00fdchly v\u00fdvoj aplik\u00e1ci\u00ed v Eclipse MicroProfile<\/h4>\n<p>\nAutor: John Clingan<br \/>\nKombinovan\u00edm Eclipse MicroProfile a Quarkus m\u00f4\u017eu v\u00fdvoj\u00e1ri vytv\u00e1ra\u0165 plne funk\u010dn\u00e9 kontajnerov\u00e9 aplik\u00e1cie MicroProfile, ktor\u00e9 sa sp\u00fa\u0161\u0165aj\u00fa za len nieko\u013eko desat\u00edn sekundy. Vo videu sa podrobne vysvet\u013euje, ako k\u00f3dova\u0165 kontajnerov\u00fa aplik\u00e1ciu MicroProfile na nasadenie na platforme 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=\"Prehrajte 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, verzia \u201eTurbo\u201c<\/h4>\n<p>\nAutor: Markus Biel<br \/>\nAutor ukazuje, ako vyu\u017ei\u0165 Quarkus na vytvorenie supermal\u00fdch a superr\u00fdchlych Java kontajnerov, ktor\u00e9 umo\u017e\u0148uj\u00fa skuto\u010dn\u00fd pokrok, najm\u00e4 v prostrediach bez servera.<\/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=\"Prehrajte 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 \/>Zdroj: <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 5.0.3 - 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\" \/>\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\/sk\/blog\/administrirovanie\/kak-quarkus-obedinyaet-imperativnoe-i-reaktivnoe-programmirovanie\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"sk_SK\" \/>\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\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sk\/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\udd47Ako Quarkus sp\u00e1ja imperat\u00edvne a reakt\u00edvne programovanie | ProHoster","description":"Tento rok pl\u00e1nujeme v\u00e1\u017ene rozv\u00edja\u0165 t\u00e9my kontajnerov, Cloud-Native Java a","canonical_url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/kak-quarkus-obedinyaet-imperativnoe-i-reaktivnoe-programmirovanie","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sk_SK","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","og:url":"https:\/\/prohoster.info\/sk\/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","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/74795","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/comments?post=74795"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/74795\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media\/74796"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=74795"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=74795"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=74795"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}