{"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\/de\/blog\/administrirovanie\/nativnaya-kompilyacziya-v-quarkus-pochemu-eto-vazhno","title":{"rendered":"Native Compilation in Quarkus \u2013 warum das wichtig ist","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Hallo zusammen! Dies ist der zweite Beitrag unserer Quarkus-Serie \u2013 heute sprechen wir \u00fcber die native Kompilierung.<\/p>\n<p><img decoding=\"async\" alt=\"Native Compilation in Quarkus \u2013 warum das wichtig ist\" 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\/\">unterst\u00fctzt Quarkus die Verwendung des Advanced Message Queuing Protocol (<\/a><\/noindex> \u2013 das ist ein Java-Stack, der f\u00fcr <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/kubernetes\/\">Kubernetes<\/a><\/noindex>optimiert ist. Und obwohl es hier nat\u00fcrlich noch viel zu tun gibt, haben wir viele Aspekte gut bearbeitet, einschlie\u00dflich der Optimierung von JVM und einer Reihe von Frameworks. Ein besonderes Merkmal von Quarkus, das das Interesse der Entwickler geweckt hat, ist der umfassende nahtlose Ansatz zur Umwandlung von Java-Code in ausf\u00fchrbare Dateien f\u00fcr ein bestimmtes Betriebssystem (die sogenannte \"native Kompilierung\"), \u00e4hnlich wie bei C und C++, wo diese Kompilierung normalerweise am Ende eines Zyklus stattfindet, der aus Erstellung, Test und Bereitstellung besteht.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nUnd obwohl die native Kompilierung, wie wir im Folgenden zeigen werden, wichtig ist, sollte man beachten, dass Quarkus tats\u00e4chlich auch auf einer ganz normalen Java-Maschine mit OpenJDK Hotspot gut funktioniert, dank der Leistungsverbesserungen, die wir im gesamten Stack implementiert haben. Daher sollte native Kompilierung als zus\u00e4tzlicher Bonus betrachtet werden, den man nach Wunsch oder Bedarf verwenden kann. Tats\u00e4chlich st\u00fctzt sich Quarkus in Bezug auf native Images in erheblichem Ma\u00dfe auf OpenJDK. Der von den Entwicklern gut angenommene Entwicklungsmodus erm\u00f6glicht nahezu sofortige Tests von \u00c4nderungen dank der erweiterten dynamischen Codeausf\u00fchrungsfunktionen, die in Hotspot implementiert sind. Dar\u00fcber hinaus wird bei der Erstellung nativer Images die OpenJDK-Klassenbibliothek und die F\u00e4higkeit von HotSpot genutzt.<\/p>\n<p>Warum ist dann native Kompilierung notwendig, wenn alles bereits hervorragend optimiert ist? Diese Frage werden wir im Folgenden zu beantworten versuchen.<\/p>\n<p>Fangen wir mit dem Offensichtlichen an: Red Hat hat umfangreiche Erfahrungen in der Optimierung von JVMs, Stacks und Frameworks im Verlauf des Projekts. <noindex><a rel=\"nofollow\" href=\"http:\/\/www.jboss.org\/\">JBoss<\/a><\/noindex>, einschlie\u00dflich:<\/p>\n<ul>\n<li>Der erste Anwendungsserver f\u00fcr den Einsatz in der Cloud auf der Plattform <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\">-Plattform bereitstellt. Weitere Informationen \u00fcber die Funktionsweise finden Sie<\/a><\/noindex>.<\/li>\n<li>Der erste Anwendungsserver f\u00fcr den Einsatz auf Rechnern <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/index.php\/videos\/youtube\/9c-g7UxT0nk\/\">Plug PC<\/a><\/noindex>.<\/li>\n<li>Der erste Anwendungsserver f\u00fcr den Einsatz auf <noindex><a rel=\"nofollow\" href=\"http:\/\/blog.arungupta.me\/wildfly-on-raspberry-pi-techtip-24\/\">Raspberry Pi<\/a><\/noindex>.<\/li>\n<li>Eine Reihe von Projekten, die auf Ger\u00e4ten laufen <noindex><a rel=\"nofollow\" href=\"http:\/\/www.jboss.org\/iot\/android\/\">Android<\/a><\/noindex>.<\/li>\n<\/ul>\n<p>\nWir besch\u00e4ftigen uns seit vielen Jahren mit dem Start von Java-Anwendungen in der Cloud und auf ressourcenbeschr\u00e4nkten Ger\u00e4ten (sprich, IoT) und haben gelernt, das Maximum aus der JVM in Bezug auf Leistung und Speichereffizienz herauszuholen. Wie viele andere arbeiten wir seit Langem mit der nativen Kompilierung von Java-Anwendungen \u00fcber <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> und sogar <noindex><a rel=\"nofollow\" href=\"https:\/\/source.android.com\/devices\/tech\/dalvik\">Dalvik<\/a><\/noindex> und wir sind uns der Vor- und Nachteile dieses Ansatzes bewusst (zum Beispiel das Dilemma der Wahl zwischen der Vielseitigkeit \"build once \u2013 run-anywhere\" und dem Vorteil, dass kompilierte Anwendungen eine kleinere Gr\u00f6\u00dfe haben und schneller starten).<\/p>\n<p>Warum ist es so wichtig, diese Vor- und Nachteile zu ber\u00fccksichtigen? Weil in bestimmten Situationen ihr Verh\u00e4ltnis entscheidend wird:<\/p>\n<ul>\n<li>Zum Beispiel in serverlosen\/ereignisgesteuerten Umgebungen, in denen <noindex><a rel=\"nofollow\" href=\"https:\/\/mikhail.io\/2018\/08\/serverless-cold-start-war\/\">Dienste unbedingt<\/a><\/noindex> in einem (strengen oder lockeren) Echtzeitmodus laufen m\u00fcssen, um auf Ereignisse zu reagieren. Im Gegensatz zu langlebigen persistenten Diensten erh\u00f6ht hier die Dauer des Kaltstarts kritisch die Antwortzeit auf Anfragen. Der Start der JVM ben\u00f6tigt immer noch erhebliche Zeit, und obwohl man in einigen F\u00e4llen die Zeit rein hardwareseitig reduzieren kann, kann der Unterschied zwischen einer Sekunde und 5 Millisekunden eine Frage von Leben und Tod sein. Ja, hier kann man mit der Erstellung von Hot-Standby-Java-Maschinen experimentieren (was wir zum Beispiel bei <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/projectodd\/kwsk\">der Portierung von OpenWhisk auf Knative<\/a><\/noindex>), aber das allein garantiert nicht gen\u00fcgend JVMs, um die Anforderungen bei steigender Last zu bew\u00e4ltigen. Auch aus wirtschaftlicher Sicht ist das sicherlich nicht die beste L\u00f6sung.<\/li>\n<li>Dar\u00fcber hinaus gibt es einen h\u00e4ufig auftretenden Aspekt, die Multitenanz. Obwohl JVMs in ihren F\u00e4higkeiten den Betriebssystemen stark n\u00e4her gekommen sind, sind sie immer noch nicht in der Lage, das zu tun, was wir im gleichen Linux gewohnt sind \u2013 die Isolierung von Prozessen. Daher kann ein Fehler in einem Thread die gesamte Java-Maschine zum Absturz bringen. Viele versuchen, diesen Nachteil zu umgehen, indem sie f\u00fcr jede Anwendung eines Benutzers eine separate JVM bereitstellen, um die Auswirkungen eines Ausfalls zu minimieren. Das ist durchaus sinnvoll, harmoniert aber schlecht mit der Skalierung.<\/li>\n<li>Au\u00dferdem ist f\u00fcr cloudorientierte Anwendungen ein Indikator wichtig, wie die Dichte der Dienste auf dem Host. Der \u00dcbergang zur Methodik <noindex><a rel=\"nofollow\" href=\"https:\/\/12factor.net\/\">12 Faktoren der Anwendung<\/a><\/noindex>, Mikrodienste und Kubernetes erh\u00f6hen die Anzahl der Java-Maschinen pro Anwendung. Das bedeutet, dass dies einerseits Flexibilit\u00e4t und Zuverl\u00e4ssigkeit bietet, andererseits jedoch auch der Grundverbrauch an Speicher pro Dienst steigt, wobei ein Teil dieser Kosten nicht immer unbedingt erforderlich ist. Statisch kompilierte Executables profitieren hier von verschiedenen Optimierungstechniken, wie der Low-Level-Dead-Code-Eliminierung, bei der nur die Teile der Frameworks (einschlie\u00dflich des JDK), die der Dienst tats\u00e4chlich nutzt, in das endg\u00fcltige Image aufgenommen werden. Daher hilft die native Kompilierung von Quarkus dabei, Instanzen von Diensten dichter auf dem Host zu platzieren, ohne die Sicherheit zu gef\u00e4hrden.<\/li>\n<\/ul>\n<p>\nDie oben genannten Argumente sind bereits ausreichend, um die Berechtigung der nativen Kompilierung aus der Perspektive der Teilnehmer des Quarkus-Projekts zu verstehen. Es gibt jedoch noch einen weiteren, nicht technischen, aber ebenso wichtigen Grund: In den letzten Jahren haben viele Programmierer und Entwicklungsunternehmen Java zugunsten neuer Programmiersprachen aufgegeben, da sie der Meinung sind, dass Java zusammen mit ihrer JVM, den Stacks und Frameworks zu speicherhungrig und zu langsam geworden ist.<\/p>\n<p>Allerdings ist es nicht immer richtig, das gleiche Werkzeug f\u00fcr alle Aufgaben zu verwenden \u2013 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.reddit.com\/r\/java\/comments\/8xv3ha\/does_anybody_use_spring_boot_with_aws_lambda_do\/\">das ist nicht immer die richtige Entscheidung.<\/a><\/noindex>. Manchmal ist es besser, einen Schritt zur\u00fcckzutreten und nach etwas anderem zu suchen. Wenn Quarkus die Menschen dazu bringt, eine Pause einzulegen und nachzudenken, ist das gut f\u00fcr das gesamte Java-\u00d6kosystem. Quarkus verk\u00f6rpert einen innovativen Ansatz daf\u00fcr, wie man effizientere Anwendungen erstellt und Java relevanter f\u00fcr neue Anwendungsarchitekturen wie serverless macht. Dar\u00fcber hinaus hoffen wir, dass Quarkus dank seiner Erweiterbarkeit ein ganzes \u00d6kosystem von Java-Erweiterungen schafft, das die Anzahl der Frameworks erheblich erh\u00f6ht, die nativ in Anwendungen unterst\u00fctzt werden.<br \/>\n<br \/>Quelle: <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\/de\/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=\"de_DE\" \/>\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\/de\/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\udd47Native Compilation in Quarkus \u2013 warum ist das wichtig | ProHoster","description":"Hallo zusammen!","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/nativnaya-kompilyacziya-v-quarkus-pochemu-eto-vazhno","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","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\/de\/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\/de\/wp-json\/wp\/v2\/posts\/76573","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=76573"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/76573\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/76574"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=76573"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=76573"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=76573"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}