{"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\/pl\/blog\/administrirovanie\/nativnaya-kompilyacziya-v-quarkus-pochemu-eto-vazhno","title":{"rendered":"Nattywna kompilacja w Quarkus \u2013 dlaczego to wa\u017cne.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Cze\u015b\u0107 wszystkim! Witajcie w drugim po\u015bcie z naszej serii o Quarkus \u2013 dzisiaj porozmawiamy o kompilacji natywnej.<\/p>\n<p><img decoding=\"async\" alt=\"Nattywna kompilacja w Quarkus \u2013 dlaczego to wa\u017cne.\" 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 to stos technologiczny Java, dostosowany do <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/kubernetes\/\">Kubernetes<\/a><\/noindex>. I cho\u0107 wci\u0105\u017c jest wiele do zrobienia, dobrze opracowali\u015bmy wiele aspekt\u00f3w, w tym optymalizacj\u0119 JVM oraz szereg framework\u00f3w. Jedn\u0105 z cech Quarkusa, kt\u00f3ra wzbudzi\u0142a du\u017ce zainteresowanie w\u015br\u00f3d programist\u00f3w, jest kompleksowe, bezszwowe podej\u015bcie do przekszta\u0142cania kodu Java w pliki wykonywalne dla konkretnego systemu operacyjnego (tak zwana \u201ekompilacja natywna\u201d), w podobny spos\u00f3b jak w C i C++, gdzie ta kompilacja zazwyczaj ma miejsce na ko\u0144cu cyklu sk\u0142adaj\u0105cego si\u0119 z budowy, testowania i wdra\u017cania.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nI cho\u0107 kompilacja natywna, jak poka\u017cemy poni\u017cej, jest wa\u017cna, nale\u017cy zauwa\u017cy\u0107, \u017ce Quarkus naprawd\u0119 dobrze dzia\u0142a r\u00f3wnie\u017c na zwyk\u0142ej maszynie Java OpenJDK Hotspot dzi\u0119ki udoskonaleniom wydajno\u015bci, kt\u00f3re wprowadzili\u015bmy w ca\u0142ym stosie. Dlatego kompilacj\u0119 natywn\u0105 warto traktowa\u0107 jako dodatkowy bonus, kt\u00f3ry mo\u017cna wykorzysta\u0107 wed\u0142ug potrzeby. W rzeczywisto\u015bci Quarkus w du\u017cej mierze opiera si\u0119 na OpenJDK dla obraz\u00f3w natywnych. A dobrze przyj\u0119ty przez programist\u00f3w tryb dev mode zapewnia niemal natychmiastowe testowanie zmian dzi\u0119ki rozwini\u0119tym mo\u017cliwo\u015bciom dynamicznego wykonywania kodu, wdro\u017conym w Hotspot. Ponadto, podczas tworzenia obraz\u00f3w natywnych, GraalVM wykorzystuje bibliotek\u0119 klas OpenJDK oraz mo\u017cliwo\u015bci HotSpot.<\/p>\n<p>Wi\u0119c po co w og\u00f3le potrzebna jest kompilacja natywna, skoro wszystko jest tak dobrze zoptymalizowane? Na to pytanie postaramy si\u0119 odpowiedzie\u0107 w dalszej cz\u0119\u015bci.<\/p>\n<p>Zacznijmy od oczywisto\u015bci: Red Hat ma ogromne do\u015bwiadczenie w optymalizacji JVM, stos\u00f3w i framework\u00f3w w trakcie rozwoju projektu <noindex><a rel=\"nofollow\" href=\"http:\/\/www.jboss.org\/\">JBoss<\/a><\/noindex>, w tym:<\/p>\n<ul>\n<li>Pierwszy serwer aplikacji do pracy w chmurze na platformie <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>Pierwszy serwer aplikacji do pracy na komputerach <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/index.php\/videos\/youtube\/9c-g7UxT0nk\/\">Plug PC<\/a><\/noindex>.<\/li>\n<li>Pierwszy serwer aplikacji do pracy na <noindex><a rel=\"nofollow\" href=\"http:\/\/blog.arungupta.me\/wildfly-on-raspberry-pi-techtip-24\/\">Raspberry Pi<\/a><\/noindex>.<\/li>\n<li>Ca\u0142a seria projekt\u00f3w dzia\u0142aj\u0105cych na urz\u0105dzeniach <noindex><a rel=\"nofollow\" href=\"http:\/\/www.jboss.org\/iot\/android\/\">Android<\/a><\/noindex>.<\/li>\n<\/ul>\n<p>\nOd wielu lat zajmujemy si\u0119 problemami uruchamiania aplikacji Java w chmurze i na urz\u0105dzeniach o ograniczonych zasobach (czytaj: IoT) i nauczyli\u015bmy si\u0119 wyciska\u0107 z JVM maksimum pod wzgl\u0119dem wydajno\u015bci i optymalizacji pami\u0119ci. Jak wielu innych, od lat pracujemy z kompilacj\u0105 natywn\u0105 aplikacji Java za pomoc\u0105 <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> i nawet <noindex><a rel=\"nofollow\" href=\"https:\/\/source.android.com\/devices\/tech\/dalvik\">Dalvik<\/a><\/noindex> Doskonale zdajemy sobie spraw\u0119 z plus\u00f3w i minus\u00f3w takiego podej\u015bcia (na przyk\u0142ad dylematu wyboru mi\u0119dzy uniwersalno\u015bci\u0105 \u201ebuild once \u2013 run-anywhere\u201d a tym, \u017ce skompilowane aplikacje maj\u0105 mniejszy rozmiar i szybciej si\u0119 uruchamiaj\u0105).<\/p>\n<p>Dlaczego tak wa\u017cne jest uwzgl\u0119dnienie tych plus\u00f3w i minus\u00f3w? Poniewa\u017c w niekt\u00f3rych sytuacjach ich stosunek staje si\u0119 decyduj\u0105cy:<\/p>\n<ul>\n<li>Na przyk\u0142ad w \u015brodowiskach serverless\/zale\u017cnych od zdarze\u0144, gdzie <noindex><a rel=\"nofollow\" href=\"https:\/\/mikhail.io\/2018\/08\/serverless-cold-start-war\/\">us\u0142ugi musz\u0105 by\u0107 uruchamiane<\/a><\/noindex> w trybie (surowym lub mi\u0119kkim) rzeczywistym, aby zd\u0105\u017cy\u0107 z reakcj\u0105 na zdarzenia. W odr\u00f3\u017cnieniu od d\u0142ugo \u017cyj\u0105cych us\u0142ug, tutaj d\u0142ugo\u015b\u0107 zimnego uruchomienia krytycznie zwi\u0119ksza czas reakcji na zapytanie. Uruchomienie JVM nadal zajmuje znaczn\u0105 ilo\u015b\u0107 czasu, a chocia\u017c w niekt\u00f3rych przypadkach mo\u017cna to skr\u00f3ci\u0107 wy\u0142\u0105cznie metodami sprz\u0119towymi, r\u00f3\u017cnica mi\u0119dzy jedn\u0105 sekund\u0105 a 5 milisekundami mo\u017ce by\u0107 kwesti\u0105 \u017cycia i \u015bmierci. Tak, mo\u017cna tu eksperymentowa\u0107 z tworzeniem gor\u0105cej rezerwy maszyn Java (co zrobili\u015bmy na przyk\u0142ad podczas <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/projectodd\/kwsk\">portowania OpenWhisk na Knative<\/a><\/noindex>), ale samo w sobie to nie gwarantuje wystarczaj\u0105cej liczby JVM do obs\u0142ugi zapyta\u0144 w miar\u0119 skalowania obci\u0105\u017cenia. A z ekonomicznego punktu widzenia to z pewno\u015bci\u0105 nie jest najrozs\u0105dniejsza opcja.<\/li>\n<li>Ponadto pojawia si\u0119 jeszcze jeden cz\u0119sto poruszany aspekt, jakim jest wielodost\u0119pno\u015b\u0107. Mimo \u017ce mo\u017cliwo\u015bci JVM znacznie zbli\u017cy\u0142y si\u0119 do system\u00f3w operacyjnych, wci\u0105\u017c nie s\u0105 w stanie robi\u0107 tego, do czego jeste\u015bmy przyzwyczajeni w Linuxie \u2013 izolowa\u0107 procesy. Dlatego awaria jednego w\u0105tku mo\u017ce sparali\u017cowa\u0107 ca\u0142\u0105 maszyn\u0119 Java. Wiele os\u00f3b pr\u00f3buje obej\u015b\u0107 t\u0119 wad\u0119, przydzielaj\u0105c aplikacjom ka\u017cdego u\u017cytkownika osobn\u0105 JVM, aby zminimalizowa\u0107 skutki awarii. To jest ca\u0142kowicie logiczne, ale \u017ale komponuje si\u0119 ze skalowaniem.<\/li>\n<li>Dodatkowo, dla aplikacji chmurowych istotny jest taki wska\u017anik, jak g\u0119sto\u015b\u0107 us\u0142ug na ho\u015bcie. Przej\u015bcie na metodologi\u0119 <noindex><a rel=\"nofollow\" href=\"https:\/\/12factor.net\/\">12 czynnik\u00f3w aplikacji<\/a><\/noindex>, mikroserwisy i Kubernetes zwi\u0119kszaj\u0105 liczb\u0119 maszyn Java dla jednej aplikacji. Z jednej strony daje to elastyczno\u015b\u0107 i niezawodno\u015b\u0107, ale z drugiej strony ro\u015bnie r\u00f3wnie\u017c wydatek pami\u0119ci bazowej na serwis, a cz\u0119\u015b\u0107 tych wydatk\u00f3w nie zawsze jest \u015bci\u015ble niezb\u0119dna. Statycznie skompilowane pliki wykonywalne zyskuj\u0105 tutaj dzi\u0119ki r\u00f3\u017cnym technikom optymalizacji, takim jak niskopoziomowe usuwanie martwego kodu, kiedy do finalnego obrazu zostaj\u0105 do\u0142\u0105czone tylko te cz\u0119\u015bci framework\u00f3w (w\u0142\u0105czaj\u0105c w to sam JDK), kt\u00f3re serwis rzeczywi\u015bcie wykorzystuje. Dlatego natywna kompilacja Quarkus pomaga g\u0119\u015bciej rozmieszcza\u0107 instancje serwis\u00f3w na ho\u015bcie bez uszczerbku dla bezpiecze\u0144stwa.<\/li>\n<\/ul>\n<p>\nSprzyjaj\u0105ce powy\u017cszym argumentom ju\u017c wystarczaj\u0105co t\u0142umacz\u0105 zasadno\u015b\u0107 natywnej kompilacji z perspektywy uczestnik\u00f3w projektu Quarkus. Jednak jest jeszcze jeden, nie techniczny, ale r\u00f3wnie\u017c wa\u017cny pow\u00f3d: w ostatnich latach wielu programist\u00f3w i firm programistycznych zrezygnowa\u0142o z Javy na rzecz nowych j\u0119zyk\u00f3w programowania, uznaj\u0105c, \u017ce Java wraz z jej JVM, stosami i frameworkami sta\u0142a si\u0119 zbyt pami\u0119cio\u017cerna, zbyt wolna itp.<\/p>\n<p>Jednak przyzwyczajenie do u\u017cywania tego samego narz\u0119dzia do rozwi\u0105zywania wszelkich problem\u00f3w \u2013 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.reddit.com\/r\/java\/comments\/8xv3ha\/does_anybody_use_spring_boot_with_aws_lambda_do\/\">nie zawsze jest s\u0142uszne<\/a><\/noindex>. Czasami lepiej zrobi\u0107 krok wstecz i poszuka\u0107 czego\u015b innego. A je\u015bli Quarkus zmusza ludzi do zatrzymania si\u0119 i zastanowienia, to jest to korzystne dla ca\u0142ego ekosystemu Javy. Quarkus urzeczywistnia nowatorskie podej\u015bcie do tworzenia bardziej wydajnych aplikacji, czyni\u0105c Jav\u0119 bardziej odpowiedni\u0105 dla nowych architektur aplikacji, takich jak serverless. Ponadto, dzi\u0119ki swojej rozbudowie, Quarkus, jak mamy nadziej\u0119, zyska ca\u0142\u0105 ekosystem Java-rozszerze\u0144, znacznie zwi\u0119kszaj\u0105c liczb\u0119 framework\u00f3w, kt\u00f3re od razu b\u0119d\u0105 wspiera\u0107 natywn\u0105 kompilacj\u0119 w ramach aplikacji.<br \/>\n<br \/>\u0179r\u00f3d\u0142o: <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.1.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\/pl\/blog\/administrirovanie\/nativnaya-kompilyacziya-v-quarkus-pochemu-eto-vazhno\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\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\/pl\/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\udd47Natywna kompilacja w Quarkus \u2013 dlaczego to wa\u017cne | ProHoster","description":"Cze\u015b\u0107 wszystkim!","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/nativnaya-kompilyacziya-v-quarkus-pochemu-eto-vazhno","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","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\/pl\/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\/pl\/wp-json\/wp\/v2\/posts\/76573","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=76573"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/76573\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/76574"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=76573"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=76573"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=76573"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}