{"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\/pt\/blog\/administrirovanie\/nativnaya-kompilyacziya-v-quarkus-pochemu-eto-vazhno","title":{"rendered":"Compila\u00e7\u00e3o nativa no Quarkus \u2013 por que isso \u00e9 importante","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ol\u00e1 a todos! Este \u00e9 o segundo post da nossa s\u00e9rie sobre Quarkus \u2013 hoje vamos falar sobre a compila\u00e7\u00e3o nativa.<\/p>\n<p><img decoding=\"async\" alt=\"Compila\u00e7\u00e3o nativa no Quarkus \u2013 por que isso \u00e9 importante\" src=\"\/wp-content\/uploads\/2020\/04\/3690313f6718405b06f0a6b5360767e3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2019\/03\/20\/quarkus-0-12-0-released\/\">Quarkus<\/a><\/noindex> \u2013 \u00e9 um stack Java projetado para <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/kubernetes\/\">Kubernetes<\/a><\/noindex>. E embora haja muito a ser feito, trabalhamos bem em v\u00e1rios aspectos, incluindo a otimiza\u00e7\u00e3o da JVM e uma s\u00e9rie de frameworks. Uma das caracter\u00edsticas do Quarkus que atraiu a aten\u00e7\u00e3o dos desenvolvedores \u00e9 a abordagem integrada e cont\u00ednua para transformar c\u00f3digo Java em arquivos execut\u00e1veis para sistemas operacionais espec\u00edficos (o chamado 'compila\u00e7\u00e3o nativa'), semelhante ao que ocorre em C e C++, onde tal compila\u00e7\u00e3o geralmente acontece no final de um ciclo de constru\u00e7\u00e3o, teste e implanta\u00e7\u00e3o.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nE embora a compila\u00e7\u00e3o nativa, como mostraremos abaixo, seja importante, \u00e9 preciso notar que o Quarkus realmente funciona muito bem tamb\u00e9m em uma simples m\u00e1quina Java, OpenJDK Hotspot, gra\u00e7as \u00e0s melhorias de desempenho que implementamos em toda a stack. Portanto, a compila\u00e7\u00e3o nativa deve ser vista como um b\u00f4nus adicional que pode ser utilizado conforme desejado ou necess\u00e1rio. Na verdade, no que diz respeito \u00e0s imagens nativas, o Quarkus depende consideravelmente do OpenJDK. E o modo dev, muito bem recebido pelos desenvolvedores, oferece testes quase instant\u00e2neos de mudan\u00e7as devido \u00e0s capacidades avan\u00e7adas de execu\u00e7\u00e3o din\u00e2mica de c\u00f3digo implementadas no Hotspot. Al\u00e9m disso, ao criar imagens nativas, o GraalVM utiliza a biblioteca de classes do OpenJDK e as capacidades do HotSpot.<\/p>\n<p>Ent\u00e3o, por que a compila\u00e7\u00e3o nativa \u00e9 necess\u00e1ria se tudo j\u00e1 est\u00e1 t\u00e3o bem otimizado? Vamos tentar responder a essa pergunta abaixo.<\/p>\n<p>Comecemos pelo \u00f3bvio: a Red Hat tem uma ampla experi\u00eancia em otimiza\u00e7\u00e3o de JVM, stacks e frameworks ao longo do desenvolvimento do projeto <noindex><a rel=\"nofollow\" href=\"http:\/\/www.jboss.org\/\">JBoss<\/a><\/noindex>, incluindo:<\/p>\n<ul>\n<li>O primeiro servidor de aplica\u00e7\u00f5es para trabalhar na nuvem na plataforma <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>O primeiro servidor de aplica\u00e7\u00f5es para funcionar em computadores <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/index.php\/videos\/youtube\/9c-g7UxT0nk\/\">Plug PC<\/a><\/noindex>.<\/li>\n<li>O primeiro servidor de aplica\u00e7\u00f5es para funcionar em <noindex><a rel=\"nofollow\" href=\"http:\/\/blog.arungupta.me\/wildfly-on-raspberry-pi-techtip-24\/\">Raspberry Pi<\/a><\/noindex>.<\/li>\n<li>Uma s\u00e9rie de projetos operando em dispositivos <noindex><a rel=\"nofollow\" href=\"http:\/\/www.jboss.org\/iot\/android\/\">Android<\/a><\/noindex>.<\/li>\n<\/ul>\n<p>\nEstamos h\u00e1 muitos anos lidando com problemas de execu\u00e7\u00e3o de aplica\u00e7\u00f5es Java na nuvem e em dispositivos com recursos limitados (ou seja, IoT) e aprendemos a extrair o m\u00e1ximo da JVM em termos de desempenho e otimiza\u00e7\u00e3o de mem\u00f3ria. Assim como muitos outros, j\u00e1 trabalhamos com a compila\u00e7\u00e3o nativa de aplica\u00e7\u00f5es Java atrav\u00e9s de <noindex><a rel=\"nofollow\" href=\"https:\/\/gcc.gnu.org\/wiki\/GCJ\">GCJ<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/readytalk.github.io\/avian\/\">Avian<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.excelsiorjet.com\/\">Excelsior JET<\/a><\/noindex> e at\u00e9 mesmo <noindex><a rel=\"nofollow\" href=\"https:\/\/source.android.com\/devices\/tech\/dalvik\">Dalvik<\/a><\/noindex> E entendemos bem os pr\u00f3s e contras dessa abordagem (por exemplo, o dilema entre a versatilidade do 'build once \u2013 run anywhere' e o fato de que aplicativos compilados t\u00eam um tamanho menor e iniciam mais rapidamente).<\/p>\n<p>Por que \u00e9 t\u00e3o importante considerar esses pr\u00f3s e contras? Porque, em algumas situa\u00e7\u00f5es, a rela\u00e7\u00e3o entre eles se torna decisiva:<\/p>\n<ul>\n<li>Por exemplo, em ambientes serverless\/event-driven, onde <noindex><a rel=\"nofollow\" href=\"https:\/\/mikhail.io\/2018\/08\/serverless-cold-start-war\/\">os servi\u00e7os precisam necessariamente ser iniciados<\/a><\/noindex> em modo (duro ou leve) tempo real, para conseguir reagir aos eventos. Ao contr\u00e1rio de servi\u00e7os persistentes de longa dura\u00e7\u00e3o, aqui a dura\u00e7\u00e3o do in\u00edcio a frio aumenta criticamente o tempo de resposta \u00e0 solicita\u00e7\u00e3o. O tempo de inicializa\u00e7\u00e3o da JVM ainda consome um tempo consider\u00e1vel, e, embora em alguns casos isso possa ser reduzido por m\u00e9todos puramente de hardware, a diferen\u00e7a entre um segundo e 5 milissegundos pode ser uma quest\u00e3o de vida ou morte. Sim, aqui \u00e9 poss\u00edvel brincar com a cria\u00e7\u00e3o de uma reserva quente de m\u00e1quinas Java (o que, por exemplo, fizemos ao <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/projectodd\/kwsk\">portar o OpenWhisk para o Knative<\/a><\/noindex>), mas isso por si s\u00f3 n\u00e3o garante um n\u00famero suficiente de JVMs para lidar com as solicita\u00e7\u00f5es \u00e0 medida que a carga aumenta. E do ponto de vista econ\u00f4mico, certamente n\u00e3o \u00e9 a op\u00e7\u00e3o mais adequada.<\/li>\n<li>Al\u00e9m disso, h\u00e1 outro aspecto frequentemente mencionado, que \u00e9 a multitenancy. Apesar de a JVM ter se aproximado bastante das capacidades dos sistemas operacionais, elas ainda n\u00e3o conseguem fazer o que estamos acostumados a ver no Linux \u2013 isolar processos. Portanto, a falha de uma thread pode derrubar toda a m\u00e1quina Java. Muitos tentam contornar essa limita\u00e7\u00e3o designando uma JVM separada para os aplicativos de cada usu\u00e1rio, a fim de minimizar as consequ\u00eancias de falhas. Isso faz bastante sentido, mas n\u00e3o combina bem com a escalabilidade.<\/li>\n<li>Al\u00e9m disso, para aplicativos orientados \u00e0 nuvem, um indicador importante \u00e9 a densidade de servi\u00e7os no host. A transi\u00e7\u00e3o para a metodologia <noindex><a rel=\"nofollow\" href=\"https:\/\/12factor.net\/\">12 fatores do aplicativo<\/a><\/noindex>, microsservi\u00e7os e Kubernetes aumentam o n\u00famero de inst\u00e2ncias Java por aplicativo. Ou seja, por um lado, tudo isso oferece elasticidade e confiabilidade, mas, ao mesmo tempo, o consumo de mem\u00f3ria base por servi\u00e7o tamb\u00e9m cresce, e parte desse consumo nem sempre \u00e9 estritamente necess\u00e1ria. Arquivos execut\u00e1veis compilados estaticamente se destacam aqui por meio de v\u00e1rias t\u00e9cnicas de otimiza\u00e7\u00e3o, como a elimina\u00e7\u00e3o de c\u00f3digo morto de baixo n\u00edvel, onde apenas as partes dos frameworks (incluindo o pr\u00f3prio JDK) que o servi\u00e7o realmente utiliza s\u00e3o inclu\u00eddas na imagem final. Portanto, a compila\u00e7\u00e3o nativa do Quarkus ajuda a alocar inst\u00e2ncias de servi\u00e7os mais densamente no host sem comprometer a seguran\u00e7a.<\/li>\n<\/ul>\n<p>\nNa verdade, os argumentos apresentados acima j\u00e1 s\u00e3o suficientes para entender a justificativa da compila\u00e7\u00e3o nativa do ponto de vista dos participantes do projeto Quarkus. No entanto, h\u00e1 ainda outra raz\u00e3o, n\u00e3o t\u00e9cnica, mas igualmente importante: nos \u00faltimos anos, muitos programadores e empresas desenvolvedoras abandonaram o Java em favor de novas linguagens de programa\u00e7\u00e3o, considerando que o Java, juntamente com suas JVMs, pilhas e frameworks, se tornou excessivamente exigente em termos de mem\u00f3ria, muito lento etc.<\/p>\n<p>No entanto, o h\u00e1bito de usar a mesma ferramenta para resolver qualquer tarefa \u2013 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.reddit.com\/r\/java\/comments\/8xv3ha\/does_anybody_use_spring_boot_with_aws_lambda_do\/\">nem sempre \u00e9 a escolha certa<\/a><\/noindex>. \u00c0s vezes, \u00e9 melhor dar um passo atr\u00e1s e procurar algo diferente. E se o Quarkus leva as pessoas a fazer uma pausa e refletir, isso \u00e9 bom para todo o ecossistema Java. O Quarkus representa uma vis\u00e3o inovadora sobre como criar aplica\u00e7\u00f5es mais eficientes, tornando o Java mais relevante para novas arquiteturas de aplica\u00e7\u00f5es, como serverless. Al\u00e9m disso, devido \u00e0 sua extensibilidade, o Quarkus, esperamos, ter\u00e1 todo um ecossistema de extens\u00f5es Java, aumentando significativamente o n\u00famero de frameworks que, por padr\u00e3o, suportar\u00e3o a compila\u00e7\u00e3o nativa dentro das aplica\u00e7\u00f5es.<br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/redhatrussia\/blog\/495212\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u0421 \u0432\u0430\u043c\u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u0441\u0442 \u0438\u0437 \u043d\u0430\u0448\u0435\u0439 \u0441\u0435\u0440\u0438\u0438 \u043f\u043e Quarkus \u2013 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438. Quarkus \u2013 \u044d\u0442\u043e Java-\u0441\u0442\u0435\u043a, \u0437\u0430\u0442\u043e\u0447\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0434 Kubernetes. \u0418 \u0445\u043e\u0442\u044f \u0437\u0434\u0435\u0441\u044c, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043d\u043e\u0433\u043e\u0435 \u0435\u0449\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u0438\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u043c\u044b \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u0440\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u043c\u0430\u0441\u0441\u0443 \u0430\u0441\u043f\u0435\u043a\u0442\u043e\u0432, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e JVM \u0438 \u0446\u0435\u043b\u043e\u0433\u043e \u0440\u044f\u0434\u0430 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432. \u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 Quarkus, \u0432\u044b\u0437\u0432\u0430\u0432\u0448\u0435\u0439 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u0441\u0442\u0430\u043b [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":76574,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-76573","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - 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\/pt\/blog\/administrirovanie\/nativnaya-kompilyacziya-v-quarkus-pochemu-eto-vazhno\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\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\/pt\/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\udd47Compila\u00e7\u00e3o nativa no Quarkus \u2013 por que isso \u00e9 importante | ProHoster","description":"Ol\u00e1 a todos!","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/nativnaya-kompilyacziya-v-quarkus-pochemu-eto-vazhno","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/76573","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=76573"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/76573\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/76574"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=76573"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=76573"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=76573"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}