{"id":76573,"date":"2020-04-03T13:42:25","date_gmt":"2020-04-03T11:42:25","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/nativnaya-kompilyacziya-v-quarkus-pochemu-eto-vazhno"},"modified":"2020-04-03T13:42:25","modified_gmt":"2020-04-03T11:42:25","slug":"nativnaya-kompilyacziya-v-quarkus-pochemu-eto-vazhno","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/nativnaya-kompilyacziya-v-quarkus-pochemu-eto-vazhno","title":{"rendered":"Natiivne kompileerimine Quarkuses \u2013 miks see on oluline","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Tere k\u00f5igile! T\u00e4na on meil teine postitus meie Quarkuse seeriast \u2013 r\u00e4\u00e4gime natiivkompileerimisest.<\/p>\n<p><img decoding=\"async\" alt=\"Natiivne kompileerimine Quarkuses \u2013 miks see on oluline\" src=\"\/wp-content\/uploads\/2020\/04\/3690313f6718405b06f0a6b5360767e3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2019\/03\/20\/quarkus-0-12-0-released\/\">Quarkus<\/a><\/noindex> \u2013 see on Java-tehnoloogiakomplekt, mis on loodud <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/kubernetes\/\">Kubernetes<\/a><\/noindex>. Ja kuigi siin on veel palju teha, oleme h\u00e4sti t\u00f6\u00f6tanud paljude aspektide, sealhulgas JVM-i ja mitmete raamistikute optimeerimise kallal. \u00dcks Quarkuse erip\u00e4ra, mis on arendajate seas suurt huvi \u00e4ratanud, on terviklik ja sujuv l\u00e4henemine Java-koodi muutmisele k\u00e4ivitatavaks failiks kindlale operatsioonis\u00fcsteemile (nn \"natiivkompileerimine\"), sarnaselt C ja C++-ga, kus selline kompileerimine toimub tavaliselt ts\u00fckli l\u00f5pus, mis koosneb kokkupanekust, testimisest ja juurutamisest.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nKuigi natiivkompileerimine on, nagu me allpool n\u00e4itame, oluline, tasub m\u00e4rkida, et Quarkus t\u00f6\u00f6tab t\u00f5eliselt h\u00e4sti ka tavalises Java-masinas OpenJDK Hotspot, t\u00e4nu neile j\u00f5udluse parandustele, mida oleme kogu tehnoloogia virnas rakendanud. Seega tuleks natiivkompileerimist k\u00e4sitleda kui t\u00e4iendavat boonust, mida saab kasutada vastavalt soovile v\u00f5i vajadusele. Tegelikult toetub Quarkus natiivpiltide osas suuresti OpenJDK-le. Ja t\u00f6\u00f6stuse poolt h\u00e4sti vastu v\u00f5etud arendajatele m\u00f5eldud dev mode tagab peaaegu kohese muudatuste testimise, toetudes Hotspoti arenenud d\u00fcnaamilise koodi t\u00e4itmise v\u00f5imalustele. Lisaks kasutatakse natiivpiltide loomisel GraalVM-is OpenJDK klassiteeki ja HotSpot'i v\u00f5imalusi.<\/p>\n<p>Kuid miks on siis natiivkompileerimine vajalik, kui k\u00f5ik on juba suurep\u00e4raselt optimeeritud? Sellele k\u00fcsimusele p\u00fc\u00fcame allpool vastata.<\/p>\n<p>Alustame ilmsega: Red Hat'il on suur kogemus JVM-i, tehnoloogiakuhjade ja raamistikude optimeerimise alal projekti arengu k\u00e4igus. <noindex><a rel=\"nofollow\" href=\"http:\/\/www.jboss.org\/\">JBoss<\/a><\/noindex>, sealhulgas:<\/p>\n<ul>\n<li>Esimene rakendusserver pilve platvormil t\u00f6\u00f6tamiseks <noindex><a rel=\"nofollow\" href=\"https:\/\/www.redhat.com\/en\/blog\/openshift-is-the-first-paas-to-support-java-ee-6-full-profile-in-the-cloud\">Red Hat OpenShift<\/a><\/noindex>.<\/li>\n<li>Esimene rakenduste server, mis t\u00f6\u00f6tab arvutites <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/index.php\/videos\/youtube\/9c-g7UxT0nk\/\">Plug PC<\/a><\/noindex>.<\/li>\n<li>Esimene rakenduste server, mis t\u00f6\u00f6tab <noindex><a rel=\"nofollow\" href=\"http:\/\/blog.arungupta.me\/wildfly-on-raspberry-pi-techtip-24\/\">Raspberry Pi<\/a><\/noindex>.<\/li>\n<li>Mitmed projektid, mis t\u00f6\u00f6tavad seadmetes <noindex><a rel=\"nofollow\" href=\"http:\/\/www.jboss.org\/iot\/android\/\">Android<\/a><\/noindex>.<\/li>\n<\/ul>\n<p>\nOleme aastaid tegelenud Java-rakenduste k\u00e4ivitamise probleemidega pilves ja piiratud ressurssidega seadmetes (loe: IoT) ning \u00f5ppinud JVM-i maksimumi v\u00e4lja pigistama nii j\u00f5udluse kui ka m\u00e4lu optimeerimise osas. Nagu paljusid teisi, on meid kaua huvitanud Java rakenduste native kompileerimine l\u00e4bi <noindex><a rel=\"nofollow\" href=\"https:\/\/gcc.gnu.org\/wiki\/GCJ\">GCJ<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/readytalk.github.io\/avian\/\">Avian<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.excelsiorjet.com\/\">Excelsior JET<\/a><\/noindex> ja isegi <noindex><a rel=\"nofollow\" href=\"https:\/\/source.android.com\/devices\/tech\/dalvik\">Dalvik<\/a><\/noindex> ja oleme h\u00e4sti teadlikud sellise l\u00e4henemise plussidest ja miinustest (n\u00e4iteks dilemma valiku vahel \u201ekandu kord \u2013 jookse igal pool\u201d ja selle vahel, et kompileeritud rakendustel on v\u00e4iksem suurus ja nad k\u00e4ivituvad kiiremini).<\/p>\n<p>Miks on oluline arvestada nende plusside ja miinustega? Sest teatud olukordades nende suhe muutub m\u00e4\u00e4ravaks:<\/p>\n<ul>\n<li>N\u00e4iteks serverless\/\u00fcritustep\u00f5histes keskkondades, kus <noindex><a rel=\"nofollow\" href=\"https:\/\/mikhail.io\/2018\/08\/serverless-cold-start-war\/\">teenused peavad lihtsalt k\u00e4ivituma<\/a><\/noindex> reaalajas (kas ranged v\u00f5i pehmed) re\u017eiimid, et kiiresti reageerida s\u00fcndmustele. Erinevalt pikaajalistest p\u00fcsimist teenustest, kriitiliselt suurendab siin k\u00fclmk\u00e4ivitamise kestus vastuseaja pikkust. JVM-i k\u00e4ivitamiseks kulub endiselt m\u00e4rkimisv\u00e4\u00e4rselt aega ja kuigi m\u00f5nel juhul on seda v\u00f5imalik l\u00fcheneda puhtalt riistvaratehnikate kaudu, v\u00f5ib vahe \u00fche sekundi ja 5 millisekundi vahel olla elu ja surma k\u00fcsimus. Jah, siin on v\u00f5imalik katsetada Java-masinate kuumad reserveerimise loomisega (nagu me n\u00e4iteks tegime OpenWhiski portimisel Knative'ile <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/projectodd\/kwsk\">OpenWhiski Knative'ile<\/a><\/noindex>), kuid see iseenesest ei taga piisavat JVM-ide arvu, et taluda koormuse suurendamiseks n\u00f5udeid. Ja majanduslikust vaatenurgast ei pruugi see kindlasti olla k\u00f5ige \u00f5igem valik.<\/li>\n<li>Edasi, on veel \u00fcks sageli esile kerkiv aspekt, nagu multitenantsus. Kuigi JVM on oma v\u00f5imaluste poolest j\u00f5udnud l\u00e4hedale operatsioonis\u00fcsteemidele, ei suuda nad siiski teha seda, milleks me oleme Linuxis nii harjunud \u2013 isoleerida protsesse. Seega v\u00f5ib \u00fche t\u00f5rke ilmnemine h\u00e4vitada kogu Java-masina. Paljud \u00fcritavad seda puudust ringi juhtida, eraldades iga kasutaja rakenduse jaoks eraldi JVM, et minimeerida t\u00f5rgete tagaj\u00e4rgi. See on \u00fcsna loogiline, kuid ei sobi h\u00e4sti skaleerimisega.<\/li>\n<li>Lisaks on pilvep\u00f5histe rakenduste jaoks oluline selline n\u00e4itaja nagu teenuste tihedus hostis. \u00dcleminek metoodikale <noindex><a rel=\"nofollow\" href=\"https:\/\/12factor.net\/\">12 rakenduse tegurit<\/a><\/noindex>, mikroteenused ja Kubernetes suurendavad Java-masinate arvu \u00fche rakenduse kohta. Ehkki see pakub paindlikkust ja usaldusv\u00e4\u00e4rsust, suureneb samuti baim\u00e4lu kulu teenuse kohta, mille osa ei ole alati rangelt vajalik. Staatiliselt kompileeritud t\u00e4itmisfailid v\u00f5idavad siin madala taseme optimeerimistehnikaid, nagu dead-code elimination, kasutades ainult neid raamistiku osi (sealhulgas JDK), mida teenus t\u00f5eliselt vajab. Seet\u00f5ttu aitab Quarkuse kohandatud kompileerimine teenuste eesrindelahtede tihedamat paigutamist hostile ilma ohverdamata turvalisust.<\/li>\n<\/ul>\n<p>\nTegurite \u00fclaltoodud p\u00f5hjused on juba piisavad, et m\u00f5ista Quarkuse projekti osalejate jaoks natiivkompileerimise m\u00f5istlikkust. Siiski on veel \u00fcks, mitte tehniline, kuid samuti oluline p\u00f5hjus: viimastel aastatel on paljud programmeerijad ja arendusettev\u00f5tted loobunud Javast, eelistades uusi programmeerimiskeeli, arvates, et Java koos oma JVM-ide, stekkide ja raamistikega on muutunud liiga m\u00e4lurikkaks, liiga aeglaseks jne.<\/p>\n<p>Kuid harjumus kasutada sama t\u00f6\u00f6riista erinevate \u00fclesannete lahendamiseks \u2013 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.reddit.com\/r\/java\/comments\/8xv3ha\/does_anybody_use_spring_boot_with_aws_lambda_do\/\">ei ole alati \u00f5ige<\/a><\/noindex>. M\u00f5nikord on parem astuda samm tagasi ja otsida midagi muud. Ja kui Quarkus paneb inimesi peatuma ja m\u00f5tlema, on see hea kogu Java \u00f6kos\u00fcsteemi jaoks. Quarkus esindab uuenduslikku l\u00e4henemist, kuidas luua efektiivsemaid rakendusi, muutes Java uutele rakenduste arhitektuuridele, nagu serverless, asjakohasemaks. Lisaks, t\u00e4nu oma laiendatavusele, loodame, et Quarkus omandab terve Java laienduste \u00f6kos\u00fcsteemi, mis suurendab m\u00e4rkimisv\u00e4\u00e4rselt raamistike arvu, mis out-of-the-box toetavad natiivset kompileerimist rakenduste koostamisel.<br \/>\n<br \/>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/redhatrussia\/blog\/495212\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u0421 \u0432\u0430\u043c\u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u0441\u0442 \u0438\u0437 \u043d\u0430\u0448\u0435\u0439 \u0441\u0435\u0440\u0438\u0438 \u043f\u043e Quarkus \u2013 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438. Quarkus \u2013 \u044d\u0442\u043e Java-\u0441\u0442\u0435\u043a, \u0437\u0430\u0442\u043e\u0447\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0434 Kubernetes. \u0418 \u0445\u043e\u0442\u044f \u0437\u0434\u0435\u0441\u044c, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043d\u043e\u0433\u043e\u0435 \u0435\u0449\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u0438\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u043c\u044b \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u0440\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u043c\u0430\u0441\u0441\u0443 \u0430\u0441\u043f\u0435\u043a\u0442\u043e\u0432, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e JVM \u0438 \u0446\u0435\u043b\u043e\u0433\u043e \u0440\u044f\u0434\u0430 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432. \u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 Quarkus, \u0432\u044b\u0437\u0432\u0430\u0432\u0448\u0435\u0439 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u0441\u0442\u0430\u043b [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":76574,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-76573","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442!\" \/>\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\/et\/blog\/administrirovanie\/nativnaya-kompilyacziya-v-quarkus-pochemu-eto-vazhno\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041d\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u0432 Quarkus \u2013 \u043f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u043e \u0432\u0430\u0436\u043d\u043e | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442!\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/nativnaya-kompilyacziya-v-quarkus-pochemu-eto-vazhno\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-04-03T11:42:25+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-04-03T11:42:25+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Natiivne kompileerimine Quarkuses \u2013 miks see on oluline | ProHoster","description":"Tere k\u00f5igile!","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/nativnaya-kompilyacziya-v-quarkus-pochemu-eto-vazhno","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041d\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u0432 Quarkus \u2013 \u043f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u043e \u0432\u0430\u0436\u043d\u043e | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442!","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/nativnaya-kompilyacziya-v-quarkus-pochemu-eto-vazhno","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-04-03T11:42:25+00:00","article:modified_time":"2020-04-03T11:42:25+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"76573","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 17:34:49","updated":"2022-09-28 02:06:54","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/76573","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=76573"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/76573\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/76574"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=76573"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=76573"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=76573"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}