{"id":11062,"date":"2018-09-18T06:52:35","date_gmt":"2018-09-18T04:52:35","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/java9-new-features\/"},"modified":"2018-09-18T06:52:35","modified_gmt":"2018-09-18T04:52:35","slug":"java9-new-features","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/java9-new-features\/","title":{"rendered":"Java9 new features"},"content":{"rendered":"<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/java9.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-22299 size-medium\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/java9.jpg\" alt=\"java9\" width=\"300\" height=\"169\" \/><\/a><\/p>\n<p>Java9 is on its way now, in this blog I&#8217;ll talk about the new features I found interesting, the performances and so on.<\/p>\n<h1>Configure Eclipse for Java9<\/h1>\n<p>Prior to Eclipse Oxygen 4.7.1a, you&#8217;ll have to configure eclipse a little bit to make it run your Java9 projects.<\/p>\n<p>Add in eclipse.ini after &#8211;launcher.appendVmargs<\/p>\n<pre class=\"brush: text; gutter: true; first-line: 1\">-vm\nC:\\Program Files\\Java\\jdk-9.0.4\\bin\\javaw.exe<\/pre>\n<p>&nbsp;<\/p>\n<p>Still in eclipse.ini add:<\/p>\n<pre class=\"brush: text; gutter: true; first-line: 1\">--add-modules=ALL-SYSTEM<\/pre>\n<p>&nbsp;<\/p>\n<p>You should have something like this:<\/p>\n<pre class=\"brush: html; gutter: true; first-line: 1\">--launcher.appendVmargs\n-vm\nC:\\Program Files\\Java\\jdk-9.0.4\\bin\\javaw.exe\n-vmargs\n-Dosgi.requiredJavaVersion=1.6\n-Xms40m\n-Xmx512m\n--add-modules=ALL-SYSTEM\n<\/pre>\n<h1>New Features<\/h1>\n<h3>\u00a0Modules<\/h3>\n<p>Like a lot of other languages, and in order to obfuscate a little more the code, java is going to use Modules. It simply means that you&#8217;ll be able to make your code requiring a specific library. This is quite helpful for small memory device that do not need the whole JVM to be loaded. You can have a list of available modules <a title=\"here\" href=\"http:\/\/cr.openjdk.java.net\/~mr\/jigsaw\/ea\/module-summary.html\">here<\/a>.<\/p>\n<p>When creating a module, you&#8217;ll generate a file called module-info.java which will be like:<\/p>\n<pre class=\"brush: java; gutter: true; first-line: 1\">module test.java9 {\n\trequires com.dbiservices.example.engines;\n\texports com.dbiservices.example.car;\n}\n<\/pre>\n<p>Here my module requires the &#8220;engines&#8221; module and exports the &#8220;car&#8221; module. This allows to only load classes related to our business and not some side libraries, it will help managing memory more efficiently but also requires some understanding regarding the module system. In addition, it creates a real dependency system between jars, and prevent using public classes that were not supposed to be exposed through the API. It prevents some strange behavior when you have duplicates entries, like several jar versions in the classpath. All non-exported modules will be encapsulated by default<\/p>\n<h3>\u00a0JShell<\/h3>\n<p>Java9 now provides a JShell, like other languages you can now execute java code through a java shell command prompt. Simply starts jshell from the JDK in the bin folder:<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/jshell.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-25372\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/jshell.png\" alt=\"jshell\" width=\"680\" height=\"125\" \/><\/a>This kind of tool can greatly improve productivity for small tests, you don&#8217;t have to create small testing classes anymore. Very useful for regular expressions testing for example.<\/p>\n<h3>New HTTP API<\/h3>\n<p>The old http api is being upgraded finally. It now supports WebSockets and HTTP\/2 protocol out of the box. For the moment the API is placed in an incubator module, that mean it can still change a little, but you can start playing with like following:<\/p>\n<pre class=\"brush: java; gutter: true; first-line: 1\">import jdk.incubator.http.*;\npublic class Run {\n\npublic static void main(String[] args) throws IOException, InterruptedException {\n  HttpClient client = HttpClient.newHttpClient();\n  HttpRequest req = HttpRequest.newBuilder(URI.create(\"http:\/\/www.google.com\"))\n\t\t              .header(\"User-Agent\",\"Java\")\n\t\t              .GET()\n\t\t              .build();\n  HttpResponse&lt;String&gt; resp = client.send(req, HttpResponse.BodyHandler.asString());\n}<\/pre>\n<p>You&#8217;ll have to setup module-info.java accordingly:<\/p>\n<pre class=\"brush: java; gutter: true; first-line: 1\">module test.java9 {\n\trequires jdk.incubator.httpclient;\n}<\/pre>\n<h3>\u00a0Private interface methods<\/h3>\n<p>Since Java 8, an interface can contain behavior instead of only a method signature. But if you have several methods doing quite the same thing, usually you can refactor those methods into a private one. But default methods in java 8 can&#8217;t be private. In Java 9 you can add private helper methods to interfaces which can solve this issue:<\/p>\n<pre class=\"brush: java; gutter: true; first-line: 1\">public interface CarContract {\n\n\tvoid normalMethod();\n\tdefault void defaultMethod() {doSomething();}\n\tdefault void secondDefaultMethod() {doSomething();}\n\t\n\tprivate void doSomething(){System.out.println(\"Something\");}\n}<\/pre>\n<p>The private method &#8220;doSomething()&#8221; is hidden from the exposure of the interface.<\/p>\n<h3>\u00a0Unified JVM Logging<\/h3>\n<p>Java 9 adds a handy feature to debug the JVM thanks to logging. You can now enable logging for different tags like gc, compiler, threads and so on. You can set it thanks to the command line parameter -Xlog. Here&#8217;s an example of the configuration for the gc tag, using debug level without decoration:<\/p>\n<pre class=\"brush: text; gutter: true; first-line: 1\">-Xlog:gc=debug:file=log\/gc.log:none<\/pre>\n<p>And the result:<\/p>\n<pre class=\"brush: text; gutter: true; first-line: 1\">ConcGCThreads: 2\nParallelGCThreads: 8\nInitialize mark stack with 4096 chunks, maximum 16384\nUsing G1\nGC(0) Pause Young (G1 Evacuation Pause) 24M-&gt;4M(254M) 5.969ms\nGC(1) Pause Young (G1 Evacuation Pause) 59M-&gt;20M(254M) 21.708ms\nGC(2) Pause Young (G1 Evacuation Pause) 50M-&gt;31M(254M) 20.461ms\nGC(3) Pause Young (G1 Evacuation Pause) 84M-&gt;48M(254M) 30.398ms\nGC(4) Pause Young (G1 Evacuation Pause) 111M-&gt;70M(321M) 31.902ms<\/pre>\n<p>We can even merge info:<\/p>\n<pre class=\"brush: text; gutter: true; first-line: 1\">-Xlog:gc+heap=debug:file=log\/heap.log:none<\/pre>\n<p>Which results to this:<\/p>\n<pre class=\"brush: text; gutter: true; first-line: 1\">Heap region size: 1M\nMinimum heap 8388608  Initial heap 266338304  Maximum heap 4248829952\nGC(0) Heap before GC invocations=0 (full 0):\nGC(0)  garbage-first heap   total 260096K, used 24576K [0x00000006c2c00000, 0x00000006c2d007f0, 0x00000007c0000000)\nGC(0)   region size 1024K, 24 young (24576K), 0 survivors (0K)\nGC(0)  Metaspace       used 6007K, capacity 6128K, committed 6272K, reserved 1056768K\nGC(0)   class space    used 547K, capacity 589K, committed 640K, reserved 1048576K\nGC(0) Eden regions: 24-&gt;0(151)\nGC(0) Survivor regions: 0-&gt;1(3)\nGC(0) Old regions: 0-&gt;0\nGC(0) Humongous regions: 0-&gt;0\nGC(0) Heap after GC invocations=1 (full 0):\nGC(0)  garbage-first heap   total 260096K, used 985K [0x00000006c2c00000, 0x00000006c2d007f0, 0x00000007c0000000)\nGC(0)   region size 1024K, 1 young (1024K), 1 survivors (1024K)\nGC(0)  Metaspace       used 6007K, capacity 6128K, committed 6272K, reserved 1056768K\nGC(0)   class space    used 547K, capacity 589K, committed 640K, reserved 1048576K\nGC(1) Heap before GC invocations=1 (full 0):\nGC(1)  garbage-first heap   total 260096K, used 155609K [0x00000006c2c00000, 0x00000006c2d007f0, 0x00000007c0000000)\nGC(1)   region size 1024K, 152 young (155648K), 1 survivors (1024K)\nGC(1)  Metaspace       used 6066K, capacity 6196K, committed 6272K, reserved 1056768K\nGC(1)   class space    used 548K, capacity 589K, committed 640K, reserved 1048576K\nGC(1) Eden regions: 151-&gt;0(149)\nGC(1) Survivor regions: 1-&gt;3(19)\n...\n...<\/pre>\n<p>There are other new features not detailed here, but you can find a list <a title=\"here\" href=\"http:\/\/openjdk.java.net\/projects\/jdk9\/\">here<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Java9 is on its way now, in this blog I&#8217;ll talk about the new features I found interesting, the performances and so on. Configure Eclipse for Java9 Prior to Eclipse Oxygen 4.7.1a, you&#8217;ll have to configure eclipse a little bit to make it run your Java9 projects. Add in eclipse.ini after &#8211;launcher.appendVmargs -vm C:\\Program Files\\Java\\jdk-9.0.4\\bin\\javaw.exe [&hellip;]<\/p>\n","protected":false},"author":40,"featured_media":11063,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[197],"tags":[1335,1336,1337,1217],"type_dbi":[],"class_list":["post-11062","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-application-integration-middleware","tag-eclipse","tag-feature","tag-java9","tag-jvm"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Java9 new features - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/java9-new-features\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Java9 new features\" \/>\n<meta property=\"og:description\" content=\"Java9 is on its way now, in this blog I&#8217;ll talk about the new features I found interesting, the performances and so on. Configure Eclipse for Java9 Prior to Eclipse Oxygen 4.7.1a, you&#8217;ll have to configure eclipse a little bit to make it run your Java9 projects. Add in eclipse.ini after &#8211;launcher.appendVmargs -vm C:Program FilesJavajdk-9.0.4binjavaw.exe [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/java9-new-features\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-09-18T04:52:35+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/java9.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"870\" \/>\n\t<meta property=\"og:image:height\" content=\"489\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Middleware Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Middleware Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/java9-new-features\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/java9-new-features\/\"},\"author\":{\"name\":\"Middleware Team\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d8563acfc6e604cce6507f45bac0ea1\"},\"headline\":\"Java9 new features\",\"datePublished\":\"2018-09-18T04:52:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/java9-new-features\/\"},\"wordCount\":523,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/java9-new-features\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/java9.jpg\",\"keywords\":[\"eclipse\",\"feature\",\"java9\",\"jvm\"],\"articleSection\":[\"Application integration &amp; Middleware\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/java9-new-features\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/java9-new-features\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/java9-new-features\/\",\"name\":\"Java9 new features - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/java9-new-features\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/java9-new-features\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/java9.jpg\",\"datePublished\":\"2018-09-18T04:52:35+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d8563acfc6e604cce6507f45bac0ea1\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/java9-new-features\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/java9-new-features\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/java9-new-features\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/java9.jpg\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/java9.jpg\",\"width\":870,\"height\":489},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/java9-new-features\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java9 new features\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d8563acfc6e604cce6507f45bac0ea1\",\"name\":\"Middleware Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g\",\"caption\":\"Middleware Team\"},\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/middleware-team\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Java9 new features - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/java9-new-features\/","og_locale":"en_US","og_type":"article","og_title":"Java9 new features","og_description":"Java9 is on its way now, in this blog I&#8217;ll talk about the new features I found interesting, the performances and so on. Configure Eclipse for Java9 Prior to Eclipse Oxygen 4.7.1a, you&#8217;ll have to configure eclipse a little bit to make it run your Java9 projects. Add in eclipse.ini after &#8211;launcher.appendVmargs -vm C:Program FilesJavajdk-9.0.4binjavaw.exe [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/java9-new-features\/","og_site_name":"dbi Blog","article_published_time":"2018-09-18T04:52:35+00:00","og_image":[{"width":870,"height":489,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/java9.jpg","type":"image\/jpeg"}],"author":"Middleware Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Middleware Team","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/java9-new-features\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/java9-new-features\/"},"author":{"name":"Middleware Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d8563acfc6e604cce6507f45bac0ea1"},"headline":"Java9 new features","datePublished":"2018-09-18T04:52:35+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/java9-new-features\/"},"wordCount":523,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/java9-new-features\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/java9.jpg","keywords":["eclipse","feature","java9","jvm"],"articleSection":["Application integration &amp; Middleware"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/java9-new-features\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/java9-new-features\/","url":"https:\/\/www.dbi-services.com\/blog\/java9-new-features\/","name":"Java9 new features - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/java9-new-features\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/java9-new-features\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/java9.jpg","datePublished":"2018-09-18T04:52:35+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d8563acfc6e604cce6507f45bac0ea1"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/java9-new-features\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/java9-new-features\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/java9-new-features\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/java9.jpg","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/java9.jpg","width":870,"height":489},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/java9-new-features\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Java9 new features"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d8563acfc6e604cce6507f45bac0ea1","name":"Middleware Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g","caption":"Middleware Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/middleware-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/11062","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/40"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=11062"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/11062\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/11063"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=11062"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=11062"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=11062"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=11062"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}