{"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\/sq\/blog\/administrirovanie\/kak-quarkus-obedinyaet-imperativnoe-i-reaktivnoe-programmirovanie","title":{"rendered":"Si Quarkus bashkon programimin imperativ dhe reaktiv","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>K\u00ebt\u00eb vit ne planifikojm\u00eb t\u00eb zhvillojm\u00eb seriozisht temat e kontejnerave, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/product_by_id\/112863337\">Java Cloud-Native<\/a><\/noindex> dhe <noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/product_by_id\/125705747\">Kubernetes<\/a><\/noindex>. Nj\u00eb vazhdim i natyrsh\u00ebm i k\u00ebtyre temave do t\u00eb jet\u00eb diskutimi mbi framework-un Quarkus, tashm\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/haulmont\/blog\/443242\/\">i shqyrtuar<\/a><\/noindex> n\u00eb Habr. Artikulli i sot\u00ebm i kushtohet jo aq shum\u00eb struktur\u00ebs s\u00eb \"Java-s super-shpejt subatomike\", sa m\u00eb shum\u00eb mund\u00ebsive q\u00eb Quarkus sjell n\u00eb Enterprise.<\/p>\n<p><img decoding=\"async\" alt=\"Si Quarkus bashkon programimin imperativ dhe reaktiv\" src=\"\/wp-content\/uploads\/2020\/03\/6337d74cb66ee078c2b7c206be3d88fe.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJava dhe JVM vazhdojn\u00eb t\u00eb jen\u00eb jasht\u00ebzakonisht t\u00eb njohura, por kur punoni me teknologjit\u00eb pa server dhe mikroshtyllat e orientuara nga reja, Java dhe gjuh\u00eb t\u00eb tjera p\u00ebr JVM p\u00ebrdoren gjithnj\u00eb e m\u00eb pak, pasi se mbajn\u00eb shum\u00eb hap\u00ebsir\u00eb n\u00eb memorje dhe ngadal\u00eb ngarkohen, duke e b\u00ebr\u00eb t\u00eb pap\u00ebrshtatshme p\u00ebr t'u p\u00ebrdorur me kontejner\u00eb me jet\u00eb t\u00eb shkurt\u00ebr. Fatmir\u00ebsisht, tani kjo situat\u00eb po fillon t\u00eb ndryshoj\u00eb fal\u00eb Quarkus.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Java super-shpejt subatomike ka arritur nj\u00eb nivel t\u00eb ri!<\/h3>\n<p>\n42 l\u00ebshime, 8 muaj pun\u00eb nga komuniteti dhe 177 zhvillues t\u00eb mahnitsh\u00ebm \u2013 si rezultat i gjith\u00eb k\u00ebsaj ishte publikimi n\u00eb n\u00ebntor 2019 <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/quarkus\/\">Quarkus 1.0<\/a><\/noindex>, nj\u00eb l\u00ebshim q\u00eb simbolizon nj\u00eb ndales\u00eb t\u00eb r\u00ebnd\u00ebsishme n\u00eb zhvillimin e projektit dhe ofron nj\u00eb s\u00ebr\u00eb funksionesh dhe mund\u00ebsish t\u00eb mrekullueshme (m\u00eb shum\u00eb rreth tyre mund t\u00eb lexoni n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/blog\/announcing-quarkus-1-0\/\">njoftime<\/a><\/noindex>).<\/p>\n<p>Sot do t\u00eb flasim p\u00ebr m\u00ebnyr\u00ebn se si Quarkus bashkon modelet e programimit imperativ dhe reaktiv mbi nj\u00eb b\u00ebrtham\u00eb reaktive t\u00eb vetme. Do t\u00eb fillojm\u00eb me nj\u00eb p\u00ebrmbledhje t\u00eb shkurt\u00ebr t\u00eb historis\u00eb dhe m\u00eb pas do t\u00eb shqyrtojm\u00eb detajet mbi dualizmin e b\u00ebrtham\u00ebs reaktive t\u00eb Quarkus dhe se si <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/enterprise-java\/\">Java<\/a><\/noindex>-zhvilluesit mund t\u00eb shfryt\u00ebzojn\u00eb k\u00ebto avantazhe.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/microservices\/\">Mikrosherbimet<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/event-driven\/\">arkitektur\u00eb e menaxhuar nga ngjarjet<\/a><\/noindex> dhe <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/serverless-architecture\/\">serverless<\/a><\/noindex>-funksionet \u2013 tudo kjo sot, ashtu si\u00e7 quhet, \u00ebsht\u00eb n\u00eb rritje. Koh\u00ebt e fundit, krijimi i arkitekturave n\u00eb cloud \u00ebsht\u00eb b\u00ebr\u00eb shum\u00eb m\u00eb i leht\u00eb dhe m\u00eb i aksesuesh\u00ebm, megjithat\u00eb problemet mbeten \u2013 ve\u00e7an\u00ebrisht p\u00ebr zhvilluesit e Java. P\u00ebr shembull, n\u00eb rastin e funksioneve serverless dhe mikrosherbimeve, ekziston nj\u00eb nevoj\u00eb urgjente p\u00ebr t\u00eb reduktuar koh\u00ebn e ngarkes\u00ebs, ulur p\u00ebrdorimin e memories dhe ta b\u00ebjm\u00eb zhvillimin e tyre nj\u00eb proces m\u00eb t\u00eb leht\u00eb dhe m\u00eb t\u00eb k\u00ebndsh\u00ebm. Java n\u00eb vitet e fundit ka b\u00ebr\u00eb disa p\u00ebrmir\u00ebsime, si p\u00ebr shembull funksionaliteti ergonomics i p\u00ebrmir\u00ebsuar p\u00ebr kontejner\u00ebt, etj. Megjithat\u00eb, arrijta e nj\u00eb funksionimi normal t\u00eb Java n\u00eb nj\u00eb kontenier vazhdon t\u00eb jet\u00eb nj\u00eb sfid\u00eb. Prandaj, do t\u00eb fillojm\u00eb duke shqyrtuar disa nga kompleksitetet e brendshme t\u00eb Java, t\u00eb cilat shfaqen ve\u00e7an\u00ebrisht acaruese gjat\u00eb zhvillimit t\u00eb aplikacioneve Java t\u00eb orientuara nga kontenier\u00ebt.<\/p>\n<p>S\u00eb pari, le t\u00eb kthehemi n\u00eb histori.<\/p>\n<p><img decoding=\"async\" alt=\"Si Quarkus bashkon programimin imperativ dhe reaktiv\" src=\"\/wp-content\/uploads\/2020\/03\/4478ef5c3b89a1bd91752a4ede74bdfd.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>T\u00eb drejtat dhe kontejner\u00ebt<\/h3>\n<p>\nMe nisjen nga versioni 8u131, Java filloi t\u00eb mb\u00ebshtes\u00eb m\u00eb mir\u00eb kontejner\u00ebt me p\u00ebrmir\u00ebsime n\u00eb funksionalitetin ergonomik. N\u00eb ve\u00e7anti, tani JVM e di se n\u00eb sa b\u00ebrthama procesori po ekzekutohet dhe mund t\u00eb konfiguroj\u00eb p\u00ebrkat\u00ebsisht grupet e fijeve \u2014 zakonisht grupet fork\/join. Pa dyshim, kjo \u00ebsht\u00eb e shk\u00eblqyer, por le t\u00eb themi se kemi nj\u00eb aplikacion tradicional n\u00eb web q\u00eb p\u00ebrdor servletet HTTP dhe ekzekutohet n\u00eb Tomcat, Jetty e t\u00eb tjera. Si rezultat, ky aplikacion do t\u00eb jap\u00eb nj\u00eb fije t\u00eb ve\u00e7ant\u00eb p\u00ebr \u00e7do k\u00ebrkes\u00eb dhe do ta lejoj\u00eb at\u00eb t\u00eb bllokoj\u00eb k\u00ebt\u00eb fije gjat\u00eb pritjes p\u00ebr operacione hyr\u00ebse-dal\u00ebse, p\u00ebr shembull, gjat\u00eb aksesimit t\u00eb pajisjeve, skedar\u00ebve ose sh\u00ebrbimeve t\u00eb tjera. Kjo do t\u00eb thot\u00eb se p\u00ebrmasat e nj\u00eb aplikacioni t\u00eb till\u00eb varen jo nga numri i b\u00ebrthamave t\u00eb disponueshme, por nga numri i k\u00ebrkesave paralelisht. P\u00ebr m\u00eb tep\u00ebr, kjo n\u00ebnkupton se kuotat ose kufijt\u00eb n\u00eb Kubernetes p\u00ebr numrin e b\u00ebrthamave k\u00ebtu nuk do t\u00eb ndihmojn\u00eb shum\u00eb, dhe n\u00eb fund ver\u00ebn do p\u00ebrfundoj\u00eb me trojt\u00ebllim.<\/p>\n<h3>Shterimi i memories<\/h3>\n<p>\nFlukset jan\u00eb kujtes\u00eb. Dhe kufizimet brenda konteiner\u00ebve p\u00ebr kujtes\u00ebn nuk jan\u00eb nj\u00eb zgjidhje e plot\u00eb. Thjesht filloni t\u00eb rritni numrin e aplikacioneve dhe rrjedhave, dhe s\u00eb shpejti do t\u00eb p\u00ebrballeni me nj\u00eb rritje kritike t\u00eb frekuenc\u00ebs s\u00ebnd\u00ebrrimit dhe, si pasoj\u00eb, me degradimin e performanc\u00ebs. P\u00ebr m\u00eb tep\u00ebr, n\u00ebse aplikacioni p\u00ebrdor framework-e tradicionale microservices ose lidhet me BD, ose angazhon caching, ose ndonj\u00eb m\u00ebnyr\u00eb tjet\u00ebr konsumon kujtes\u00eb, ju n\u00eb m\u00ebnyr\u00eb t\u00eb qart\u00eb keni nevoj\u00eb p\u00ebr nj\u00eb mjet q\u00eb lejon t\u00eb shikoni brenda JVM dhe t\u00eb shihni se si menaxhon kujtes\u00ebn, dhe n\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb nuk e vrisni vet\u00eb JVM (p.sh., XX:+UseCGroupMemoryLimitForHeap). Edhe pse q\u00eb nga Java 9, JVM ka m\u00ebsuar t\u00eb perceptoj\u00eb cgroups dhe t\u00eb adaptohet p\u00ebrkat\u00ebsisht, ruajtja dhe menaxhimi i kujtes\u00ebs mbetet nj\u00eb detyr\u00eb e komplikuar.<\/p>\n<h3>Kuotat dhe limitet<\/h3>\n<p>\nN\u00eb Java 11 \u00ebsht\u00eb shtuar mb\u00ebshtetje p\u00ebr CPU quotas (si PreferContainerQuotaForCPUCount). Kubernetes gjithashtu ofron mb\u00ebshtetje p\u00ebr kufizime dhe kuota. Po, gjith\u00e7ka ka kuptim, por n\u00ebse aplikacioni p\u00ebrs\u00ebri kalon kufirin e caktuar, ne p\u00ebrs\u00ebri kthehemi te ajo se sa i madh \u00ebsht\u00eb, si\u00e7 ndodh me aplikacionet tradicionale Java, q\u00eb p\u00ebrcaktohet nga numri i b\u00ebrthamave dhe me alokimin e nj\u00eb threads individual p\u00ebr \u00e7do k\u00ebrkes\u00eb, dometh\u00ebn\u00eb fitimi \u00ebsht\u00eb i vog\u00ebl nga e gjith\u00eb kjo.<br \/>\nP\u00ebr m\u00eb tep\u00ebr, n\u00ebse p\u00ebrdoren kuota dhe kufizime ose funksione horizontale (scale-out) t\u00eb platform\u00ebs q\u00eb q\u00ebndron pas Kubernetes, problemi nuk zgjidhet vetiu. Ne thjesht shpenzojm\u00eb m\u00eb shum\u00eb burime p\u00ebr zgjidhjen e problemit fillestar ose p\u00ebrfundojm\u00eb me teprica burimesh. Dhe n\u00ebse \u00ebsht\u00eb nj\u00eb sistem me ngarkes\u00eb t\u00eb lart\u00eb n\u00eb nj\u00eb cloud publik, pothuajse me siguri fillojm\u00eb t\u00eb shpenzojm\u00eb m\u00eb shum\u00eb burime se sa \u00ebsht\u00eb v\u00ebrtet e nevojshme.<\/p>\n<h3>\u00c7far\u00eb mund t\u00eb b\u00ebjm\u00eb me gjith\u00eb k\u00ebt\u00eb?<\/h3>\n<p>\nN\u00ebse ta themi thjesht, p\u00ebrdorni biblioteka dhe framework-e asinkrone dhe jo-bllokuese si 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> ose Akka. Ato jan\u00eb shum\u00eb m\u00eb t\u00eb p\u00ebrshtatshme p\u00ebr pun\u00eb n\u00eb kontejner\u00eb p\u00ebr shkak t\u00eb natyr\u00ebs s\u00eb tyre reaktive. Fal\u00eb input-e\/output-it jo-bllokues, e nj\u00ebjta prurje mund t\u00eb trajtoj\u00eb disa k\u00ebrkesa t\u00eb pap\u00ebrkohshme. Nd\u00ebrsa nj\u00eb k\u00ebrkes\u00eb pret rezultatet e input-e\/output-it, prurja q\u00eb e trajton lirohet dhe merr p\u00ebrsip\u00ebr nj\u00eb k\u00ebrkes\u00eb tjet\u00ebr. Kur rezultatet e input-e\/output-it p\u00ebrfundojn\u00eb, vazhdohet trajtimi i k\u00ebrkes\u00ebs s\u00eb par\u00eb. Duke alternuar trajtimin e k\u00ebrkesave brenda t\u00eb nj\u00ebjtit prurje, mund t\u00eb reduktojm\u00eb numrin e p\u00ebrgjithsh\u00ebm t\u00eb prurjeve dhe t\u00eb ulim konsumin e burimeve p\u00ebr trajtimin e k\u00ebrkesave.<\/p>\n<p>Me input-e\/output-in jo-bllokues, numri i b\u00ebrthamave b\u00ebhet nj\u00eb paramet\u00ebr ky\u00e7, pasi ai p\u00ebrcakton numrin e prurjeve t\u00eb input-e\/output-it q\u00eb mund t\u00eb ekzekutohen paralelisht. Kur p\u00ebrdoret si\u00e7 duhet, kjo lejon shp\u00ebrndarjen efikase t\u00eb ngarkes\u00ebs midis b\u00ebrthamave dhe trajtimin e ngarkesave m\u00eb t\u00eb larta me m\u00eb pak burime.<\/p>\n<h3>Si, dhe kjo \u00ebsht\u00eb gjith\u00e7ka?<\/h3>\n<p>\nJo, ka di\u00e7ka tjet\u00ebr. Programimi reaktiv ndihmon n\u00eb shfryt\u00ebzimin m\u00eb t\u00eb mir\u00eb t\u00eb burimeve, por gjithashtu ka nj\u00eb \u00e7mim. Sidomos, kodi do t\u00eb duhet t\u00eb ridizajnohet sipas parimeve t\u00eb pa-bllokueshm\u00ebris\u00eb dhe t\u00eb shmanget bllokimi i rrjedhave t\u00eb input-output. Dhe kjo \u00ebsht\u00eb nj\u00eb model t\u00ebr\u00ebsisht tjet\u00ebr zhvillimi dhe ekzekutimi. Edhe pse ka shum\u00eb biblioteka t\u00eb dobishme k\u00ebtu, prap\u00ebseprap\u00eb, kjo \u00ebsht\u00eb nj\u00eb ndryshim i thell\u00eb n\u00eb m\u00ebnyr\u00ebn e zakonshme t\u00eb t\u00eb menduarit.<\/p>\n<p>S\u00eb pari, duhet t\u00eb m\u00ebsoni t\u00eb shkruani kod q\u00eb ekzekutohet asinkronisht. Sa her\u00eb q\u00eb filloni t\u00eb p\u00ebrdorni input-output pa bllokim, ju nevojitet t\u00eb sh\u00ebnoni qart\u00eb se \u00e7far\u00eb duhet t\u00eb ndodh\u00eb kur merrni nj\u00eb p\u00ebrgjigje p\u00ebr k\u00ebrkes\u00ebn. Thjesht t\u00eb bllokoni dhe t\u00eb prisni m\u00eb nuk funksionon. N\u00eb vend t\u00eb k\u00ebsaj, mund t\u00eb p\u00ebrdorni thirrje t\u00eb prapa, programim reaktiv ose vazhdim\u00ebsi. Por kjo nuk \u00ebsht\u00eb e gjitha: p\u00ebr t\u00eb p\u00ebrdorur input-output pa bllokim, ju nevojiten gjithashtu server\u00eb dhe klient\u00eb pa bllokim, dhe preferohet t\u00eb jen\u00eb n\u00eb \u00e7do vend. N\u00eb rastin e HTTP-s\u00eb, gjith\u00e7ka \u00ebsht\u00eb e thjesht\u00eb, por ka gjithashtu edhe bazat e t\u00eb dh\u00ebnave, sistemet e skedar\u00ebve dhe shum\u00eb t\u00eb tjera.<\/p>\n<p>Megjith\u00ebse reaktiviteti total i plot\u00eb jep maksimal efikasitet, nj\u00eb ndryshim i till\u00eb mund t\u00eb jet\u00eb i v\u00ebshtir\u00eb p\u00ebr t'u p\u00ebrpunuar n\u00eb praktik\u00eb. Prandaj, mund\u00ebsia p\u00ebr t\u00eb kombinua kodin reaktiv dhe imperativ b\u00ebhet nj\u00eb kusht i nevojsh\u00ebm p\u00ebr t\u00eb:<\/p>\n<ol>\n<li>P\u00ebrdorur efektivisht burimet n\u00eb drejtimet m\u00eb t\u00eb ngarkuara t\u00eb sistemit software;<\/li>\n<li>P\u00ebrdorur kod m\u00eb t\u00eb thjesht\u00eb n\u00eb stil n\u00eb pjes\u00ebt e tjera t\u00eb tij.<\/li>\n<\/ol>\n<p><\/p>\n<h3>Prezantojm\u00eb Quarkus<\/h3>\n<p>\nN\u00eb thelb, kjo \u00ebsht\u00eb esenca e Quarkus \u2013 t\u00eb bashkoj\u00eb modelet reaktive dhe imperativ n\u00eb nj\u00eb mjedis ekzekutimi.<\/p>\n<p>Thelbi i Quarkus \u00ebsht\u00eb Vert.x dhe Netty, mbi t\u00eb cilat p\u00ebrdoret nj\u00eb num\u00ebr i madh skenar\u00ebsh dhe zgjerimesh reaktive p\u00ebr t\u00eb ndihmuar zhvilluesin. Quarkus \u00ebsht\u00eb e destinuar p\u00ebr nd\u00ebrtimin jo vet\u00ebm t\u00eb mikrosh\u00ebrbimeve HTTP, por edhe t\u00eb arkitekturave t\u00eb menaxhuara nga ngjarjet. Fal\u00eb natyr\u00ebs s\u00eb saj reaktive, ajo punon shum\u00eb efektivisht me sistemet e shk\u00ebmbimit t\u00eb mesazheve (Apache Kafka, AMQP, etj).<\/p>\n<p>I gjith\u00eb triksht\u00eb \u00ebsht\u00eb se si t\u00eb p\u00ebrdorni t\u00eb nj\u00ebjtin motor reaktiv p\u00ebr kodin imperativ dhe at\u00eb reaktiv.<\/p>\n<p><img decoding=\"async\" alt=\"Si Quarkus bashkon programimin imperativ dhe reaktiv\" src=\"\/wp-content\/uploads\/2020\/03\/f7269f4bb9d6767ab3bcc79d317861b0.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Quarkus e menaxhon mrekullisht k\u00ebt\u00eb. Zgjedhja midis nj\u00eb modeli imperativ dhe nj\u00eb reaktiv \u00ebsht\u00eb e qart\u00eb \u2013 p\u00ebrdorni t\u00eb dyja me nj\u00eb b\u00ebrtham\u00eb reaktive. Ajo q\u00eb ndihmon shum\u00eb \u00ebsht\u00eb kodimi i shpejt\u00eb dhe jo-bllokues, i cili trajton pothuajse gjith\u00e7ka q\u00eb kalon p\u00ebrmes ciklit t\u00eb ngjarjeve (event-loop thread, i njohur gjithashtu si \u2013 IO thread). Por n\u00ebse keni aplikacione klasike REST ose aplikacione n\u00eb an\u00ebn e klientit, Quarkus ka nj\u00eb model programimi imperativ n\u00eb gatishm\u00ebri. P\u00ebr shembull, mb\u00ebshtetje p\u00ebr HTTP n\u00eb Quarkus nd\u00ebrtimi p\u00ebrfshin p\u00ebrdorimin e nj\u00eb motori jo-bllokues dhe reaktiv (Eclipse Vert.x dhe Netty). T\u00eb gjitha k\u00ebrkesat HTTP q\u00eb merr aplikacioni juaj kalojn\u00eb fillimisht p\u00ebrmes ciklit t\u00eb ngjarjeve (IO Thread), dhe m\u00eb pas d\u00ebrgohen n\u00eb pjes\u00ebn e kodit q\u00eb menaxhon k\u00ebrkesat. N\u00eb p\u00ebrputhje me destinacionin, kodi i menaxhimit t\u00eb k\u00ebrkesave mund t\u00eb thirret brenda nj\u00eb treti t\u00eb ve\u00e7ant\u00eb (i ashtuquajturi worker thread, e p\u00ebrdorur n\u00eb rastet e servleteve dhe Jax-RS) ose t\u00eb p\u00ebrdor\u00eb rrjedh\u00ebn origjinale t\u00eb input-output (riakttiv ruta reactive route).<\/p>\n<p><img decoding=\"async\" alt=\"Si Quarkus bashkon programimin imperativ dhe reaktiv\" src=\"\/wp-content\/uploads\/2020\/03\/7338d6881fc9d7582f3fadf3e5f69618.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>P\u00ebr lidh\u00ebsit e sistemeve t\u00eb transferimit t\u00eb mesazheve p\u00ebrdoren klient\u00eb jo-bllokues, t\u00eb cil\u00ebt funksionojn\u00eb mbi motorin Vert.x. K\u00ebshtu, ju mund t\u00eb d\u00ebrgoni, merrni dhe procesoni mesazhe nga sisteme t\u00eb klas\u00ebs messaging middleware n\u00eb m\u00ebnyr\u00eb efikase.<\/p>\n<p>N\u00eb faqen <noindex><a rel=\"nofollow\" href=\"http:\/\/www.quarkus.io\/\">Quarkus.io<\/a><\/noindex> jan\u00eb mbledhur disa udh\u00ebzime t\u00eb mira p\u00ebr t'ju ndihmuar t\u00eb filloni me Quarkus:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/guides\/reactive-routes-guide\">P\u00ebrdorimi i Rrug\u00ebve Reaktive<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/guides\/reactive-sql-clients\">Klient\u00ebt SQL Reaktiv\u00eb<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/guides\/kafka-guide\">P\u00ebrdorimi i Apache Kafka me Mesazhim Reaktiv<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/guides\/amqp-guide\">P\u00ebrdorimi i AMQP me Mesazhim Reaktiv<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/quarkus.io\/guides\/using-vertx\">P\u00ebrdorimi i API-s\u00eb Vert.x<\/a><\/noindex><\/li>\n<\/ul>\n<p>\nP\u00ebrve\u00e7 k\u00ebsaj, ne kemi p\u00ebrgatitur m\u00ebsime praktike online p\u00ebr t\u00eb njohur aspekte t\u00eb ndryshme t\u00eb programimit reaktiv, dhe p\u00ebr t'i kaluar ato mjafton vet\u00ebm nj\u00eb shfletues, nuk k\u00ebrkohet asnj\u00eb IDE p\u00ebr k\u00ebt\u00eb, dhe as nj\u00eb kompjuter nuk \u00ebsht\u00eb domosdoshm\u00ebri. Mund t'i gjeni k\u00ebto m\u00ebsime <noindex><a rel=\"nofollow\" href=\"https:\/\/learn.openshift.com\/middleware\/courses\/middleware-quarkus\/\">k\u00ebtu<\/a><\/noindex>.<\/p>\n<h3>Burime t\u00eb dobishme<\/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 arsye p\u00ebr t\u00eb provuar Quarkus<\/a><\/noindex><\/li>\n<li>Faqja e projektit Quarkus \u2013 <noindex><a rel=\"nofollow\" href=\"http:\/\/quarkus.io\">quarkus.io<\/a><\/noindex><\/li>\n<li>Projekti Quarkus n\u00eb GitHub \u2013 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/quarkusio\/quarkus\">github.com\/quarkusio\/quarkus<\/a><\/noindex><\/li>\n<li>Twitteri i projektit Quarkus \u2013 <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/QuarkusIO\">twitter.com\/QuarkusIO<\/a><\/noindex><\/li>\n<li>Chat-i i projektit Quarkus \u2013 <noindex><a rel=\"nofollow\" href=\"https:\/\/quarkusio.zulipchat.com\/\">quarkusio.zulipchat.com<\/a><\/noindex><\/li>\n<li>Forumet e projektit Quarkus \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-m\u00ebsimesh p\u00ebr Quarkus, p\u00ebr t'u njohur me tem\u00ebn<\/h3>\n<p>\nSi\u00e7 shkruhet n\u00eb faqen e internetit <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> \u00ebsht\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/kubernetes\/\">Kubernetes<\/a><\/noindex>-orientuar Java-stack, i optimizuar p\u00ebr GraalVM dhe OpenJDK HotSpot, dhe i nd\u00ebrtuar nga bibliotekat dhe standardet m\u00eb t\u00eb mira t\u00eb Java.<\/p>\n<p>P\u00ebr t'ju ndihmuar t\u00eb kuptoni tem\u00ebn, ne kemi p\u00ebrzgjedhur 10 video leksione q\u00eb trajtojn\u00eb aspekte t\u00eb ndryshme t\u00eb Quarkus dhe shembujt e p\u00ebrdorimit t\u00eb tij:<\/p>\n<h4>1. Prezantimi i Quarkus: nj\u00eb korniz\u00eb Java e s\u00eb ardhmes p\u00ebr Kubernetes<\/h4>\n<p>\nAutor\u00ebt: Thomas Qvarnstrom dhe Jason Greene<br \/>\nQ\u00ebllimi i projektit Quarkus \u00ebsht\u00eb t\u00eb krijoj\u00eb nj\u00eb platform\u00eb Java p\u00ebr Kubernetes dhe mjedise serverless, si dhe t\u00eb kombinoj\u00eb modelet reaktive dhe imperativ n\u00eb nj\u00eb ambient t\u00eb vet\u00ebm ekzekutimi, n\u00eb m\u00ebnyr\u00eb q\u00eb zhvilluesit t\u00eb ken\u00eb fleksibilitet p\u00ebr t\u00eb ndryshuar qasjen n\u00eb pun\u00ebn me nj\u00eb gam\u00eb t\u00eb gjer\u00eb t\u00eb arkitekturave t\u00eb shp\u00ebrndara t\u00eb aplikacioneve. M\u00ebsoni m\u00eb shum\u00eb nga ligj\u00ebrata hyr\u00ebse m\u00eb posht\u00eb.<\/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=\"Luaj videon\" 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 subatomike super t\u00eb shpejt\u00eb<\/h4>\n<p>\nAutori: Burr Sutter<br \/>\nVideo leksioni nga DevNation Live tregon se si t\u00eb p\u00ebrdorni Quarkus p\u00ebr t\u00eb optimizuar aplikacionet e korporatave Java, API-t\u00eb, mikrosh\u00ebrbimet dhe funksionet serverless n\u00eb mjedisin Kubernetes\/OpenShift, duke i b\u00ebr\u00eb ato shum\u00eb m\u00eb t\u00eb vogla, m\u00eb t\u00eb shpejta dhe m\u00eb t\u00eb shkall\u00ebzueshme.<\/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=\"Luaj videon\" 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 dhe GraalVM: Nxehim Hibernate n\u00eb shpejt\u00ebsi super dhe e tkurrim n\u00eb p\u00ebrmasa subatomike<\/h4>\n<p>\nAutori: Sanne Grinovero<br \/>\nNga prezantimi do t\u00eb m\u00ebsoni se si lindi Quarkus, si funksionon dhe si lejon krijimin e bibliotekave komplekse, si Hibernate ORM, q\u00eb jan\u00eb t\u00eb pajtueshme me imazhet native t\u00eb 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=\"Luaj videon\" 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. N\u00ebsojm\u00eb t\u00eb zhvillojm\u00eb aplikacione serverless<\/h4>\n<p>\nAutori: Marth\u00ebn Luter (Marthen Luther)<br \/>\nN\u00eb videon m\u00eb posht\u00eb \u00ebsht\u00eb treguar se si t\u00eb krijoni nj\u00eb aplikacion t\u00eb thjesht\u00eb Java me ndihm\u00ebn e Quarkus dhe ta shtroni at\u00eb si nj\u00eb aplikacion serverless n\u00eb 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=\"Luaj videon\" 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: kodoni me k\u00ebnaq\u00ebsi<\/h4>\n<p>\nAutori: Edson Janaga (Edson Yanaga)<br \/>\nVideo udh\u00ebzues p\u00ebr krijimin e projektit tuaj t\u00eb par\u00eb Quarkus, q\u00eb lejon t\u00eb kuptoni pse Quarkus po fiton zemrat e zhvilluesve.<\/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=\"Luaj videon\" 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 dhe kontejner\u00ebt \u2013 si do t\u00eb jet\u00eb e ardhmja e tyre s\u00eb bashku<\/h4>\n<p>\nAutori: Mark Litet (Mark Little)<br \/>\nKy prezantim njofton mbi historin\u00eb e Java dhe shpjegon pse Quarkus \u00ebsht\u00eb e ardhmja e 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=\"Luaj videon\" 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 subatomike super e shpejt\u00eb<\/h4>\n<p>\nAutori: Dimitris Andreadis (Dimitris Andreadis)<br \/>\nP\u00ebrmbledhja e p\u00ebrfitimeve t\u00eb Quarkus, q\u00eb jan\u00eb pranuar nga zhvilluesit: thjesht\u00ebsia, shpejt\u00ebsit\u00eb e larta dhe standardet m\u00eb t\u00eb mira.<\/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=\"Luaj videon\" 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 dhe sistemet reaktive subatomike<\/h4>\n<p>\nAutori: Klement Eskofier (Clement Escoffier)<br \/>\nFal\u00eb integrimit me GraalVM, Quarkus ofron nj\u00eb p\u00ebrvoj\u00eb zhvillimi jasht\u00ebzakonisht t\u00eb shpejt\u00eb dhe nj\u00eb ambient ekzekutiv subatomik. Autori diskuton an\u00ebn reaktive t\u00eb Quarkus dhe se si ta p\u00ebrdorim at\u00eb p\u00ebr krijimin e aplikacioneve reaktive dhe aplikacioneve me transmetim t\u00eb t\u00eb dh\u00ebnave.<\/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=\"Luaj videon\" 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 dhe zhvillimi i shpejt\u00eb i aplikacioneve n\u00eb Eclipse MicroProfile<\/h4>\n<p>\nAutori: John Clingan<br \/>\nDuke kombinuar Eclipse MicroProfile dhe Quarkus, zhvilluesit mund t\u00eb krijojn\u00eb aplikacione t\u00eb plota kontenjere MicroProfile q\u00eb nisin brenda disa dhjet\u00ebra milisekondash. Videoja shqyrton n\u00eb detaje se si t\u00eb kodoni nj\u00eb aplikacion konteiner MicroProfile p\u00ebr shp\u00ebrndarje n\u00eb platform\u00ebn 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=\"Luaj videon\" 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, versioni 'Turbo'<\/h4>\n<p>\nAutori: Marcus Biel<br \/>\nAutori tregon se si t\u00eb p\u00ebrdorim Quarkus p\u00ebr t\u00eb krijuar kontejner\u00eb Java super t\u00eb vegj\u00ebl dhe super t\u00eb shpejt\u00eb, duke sjell\u00eb nj\u00eb v\u00ebrtet\u00eb revolucion, ve\u00e7an\u00ebrisht n\u00eb ambientet 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=\"Luaj videon\" 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 \/>Burimi: <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\/sq\/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=\"sq_AL\" \/>\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\/sq\/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\udd47Si Quarkus bashkon programimin imperativ dhe reaktiv | ProHoster","description":"K\u00ebt\u00eb vit, ne planifikojm\u00eb t\u00eb zhvillojm\u00eb me seriozitet temat rreth kontejner\u00ebve, Java Cloud-Native dhe Kubernetes. Nj\u00eb vazhdim logjik i k\u00ebtyre temave do t\u00eb jet\u00eb tregimi mbi framework-un Quarkus, i cili \u00ebsht\u00eb shqyrtuar tashm\u00eb n\u00eb Habr. Artikulli i sot\u00ebm nuk \u00ebsht\u00eb vet\u00ebm p\u00ebr struktur\u00ebn e \"Java super t\u00eb shpejt\u00eb subatomike\", por m\u00eb shum\u00eb p\u00ebr perspektivat q\u00eb Quarkus sjell n\u00eb Enterprise. Java dhe JVM mbeten jasht\u00ebzakonisht t\u00eb njohura, por kur punoni me teknologjit\u00eb pa server.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/kak-quarkus-obedinyaet-imperativnoe-i-reaktivnoe-programmirovanie","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","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\/sq\/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\/sq\/wp-json\/wp\/v2\/posts\/74795","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=74795"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/74795\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/74796"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=74795"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=74795"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=74795"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}