{"id":544,"date":"2014-02-19T10:59:25","date_gmt":"2014-02-19T07:59:25","guid":{"rendered":"http:\/\/www.coding-dude.com\/wp\/?p=544"},"modified":"2018-11-12T12:14:17","modified_gmt":"2018-11-12T09:14:17","slug":"liferay-architecture-a-simplified-view","status":"publish","type":"post","link":"https:\/\/www.coding-dude.com\/wp\/liferay\/liferay-architecture-a-simplified-view\/","title":{"rendered":"Liferay Architecture &#8211; a Simplified View"},"content":{"rendered":"<div class=\"9db0862b9cf2e44f8d962262c5a80491\" data-index=\"1\" style=\"float: none; margin:10px 0 10px 0; text-align:center;\">\n<script type=\"text\/javascript\"><!--\r\ngoogle_ad_client = \"ca-pub-3421619882899259\";\r\n\/* Coding Dude Medium Banner *\/\r\ngoogle_ad_slot = \"2969896483\";\r\ngoogle_ad_width = 468;\r\ngoogle_ad_height = 60;\r\n\/\/-->\r\n<\/script>\r\n<script type=\"text\/javascript\"\r\nsrc=\"\/\/pagead2.googlesyndication.com\/pagead\/show_ads.js\">\r\n<\/script>\n<\/div>\n<h1>Liferay Architecture Diagram<\/h1>\n<p>&nbsp;<\/p>\n<p>Let&#8217;s do a very brief analysis of the Liferay portal architecture. The best way to do that get an overview of Liferay portal architecture is through a visual representation, so here is a <strong>diagram of the Liferay architecture<\/strong>.<\/p>\n<figure id=\"attachment_549\" aria-describedby=\"caption-attachment-549\" style=\"width: 744px\" class=\"wp-caption alignnone\"><a href=\"\/\/www.coding-dude.com\/wp\/wp-content\/uploads\/2014\/02\/liferay-architecture-diagram.png\"><img fetchpriority=\"high\" decoding=\"async\" class=\"size-full wp-image-549\" src=\"\/\/www.coding-dude.com\/wp\/wp-content\/uploads\/2014\/02\/liferay-architecture-diagram.png\" alt=\"Liferay Architecture Diagram\" width=\"744\" height=\"957\" srcset=\"https:\/\/www.coding-dude.com\/wp\/wp-content\/uploads\/2014\/02\/liferay-architecture-diagram.png 744w, https:\/\/www.coding-dude.com\/wp\/wp-content\/uploads\/2014\/02\/liferay-architecture-diagram-233x300.png 233w\" sizes=\"(max-width: 744px) 100vw, 744px\" \/><\/a><figcaption id=\"caption-attachment-549\" class=\"wp-caption-text\">3 Tier Liferay Architecture Diagram<\/figcaption><\/figure>\n<p>As you can see in the diagram the Liferay architecture has 3 tiers, which is a pretty standard architecture.<\/p>\n<p>[googleAd]<\/p>\n<h2>Tier 1 of the Liferay architecture: the front-end<\/h2>\n<p>Liferay front-end is based on the implementation of JSR-268, which is the specification for Java Portlets 2.0. As pointed out in the diagram Liferay&#8217;s UI uses Velocity for templating in its views, HTML, CSS and an extension of the YUI JavaScript library, called AUI. One other important technology used in the Liferay architecture for front-end is Vaadin. A very loose description for Vaadin would be a precompiled GWT UI framework.<\/p>\n<h2>Tier 2 &#8211; the services layer<\/h2>\n<p>Here is where all the business logic resides. What I tried to depict in the diagram was that Liferay services can be one of two types. They can be either secured or not secured.<\/p>\n<p>Liferay uses an ACL authorization system and all secured services will do a check against that authorization scheme. The non-secured services are used internally.<\/p>\n<p>The most important operations that the services facilitate relate to:<\/p>\n<ul>\n<li>management of portal assets (users, portal organizations, sites, pages, etc.)<\/li>\n<li>document management (the portal uses an abstraction of a document management system and also comes with a default implementation based on Apache Jackrabbit)<\/li>\n<li>Liferay workflow engine (the portal uses an abstraction of a workflow engine interactions and comes with an implementation for <strong>Kaleo workflow<\/strong>, but also the <strong>JBPM workflow engine<\/strong> from JBoss can be used; the workflow is used for assets approval workflows)<\/li>\n<li>etc.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h2>Tier 3 &#8211; the persistence layer<\/h2>\n<p>Liferay&#8217;s persistence layer uses Hibernate ORM to store data managed by the portal (portal assets). Hibernate offers a lot of flexibility in that it makes Liferay totally independent from the database engine (it can run without problems on MySQL, Oracle or even HSQL).<\/p>\n<p>If you are interested in specifics for the persistence layer, and especially the way that Liferay handles a multi-tenant architecture here&#8217;s a post that discusses <a title=\"Liferay Saas solution \u2013 handling multi-tenancy\" href=\"\/\/www.coding-dude.com\/wp\/java\/liferay\/liferay-saas-multi-tenancy\/\">Liferay multi-tenancy configuration<\/a>.<\/p>\n<p>Besides the persistence of Liferay assets, the persistence tier manages the persistence for other components like:<\/p>\n<ul>\n<li>the document management module &#8211; through Apache Jackrabbit which can be configured to run on any RDBMS or can be filebased<\/li>\n<li>the search index which by default works on Apache Lucene, but can be made to work with SOLR<\/li>\n<li>the workflow engine which by default is Kaleo, but can be made to work with jBPM on any RDBMS<\/li>\n<\/ul>\n<p>Hope you found this post insightful regarding and overview of the Liferay Architecture. In the future I will create some posts about various areas of Liferay, but if you have questions on any specific subject related to this please leave me a comment and I will give that higher priority.<\/p>\n<!--CusAds0-->\n<div style=\"font-size: 0px; height: 0px; line-height: 0px; margin: 0; padding: 0; clear: both;\"><\/div>","protected":false},"excerpt":{"rendered":"<p>Liferay Architecture Diagram &nbsp; Let&#8217;s do a very brief analysis of the Liferay portal architecture. The best way to do that get an overview of Liferay portal architecture is through a visual representation, so here is a diagram of the Liferay architecture. As you can see in the diagram the Liferay architecture has 3 tiers, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":768,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[253],"tags":[293,11],"class_list":["post-544","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-liferay","tag-6-0-x","tag-liferay-2"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Liferay Architecture - a Simplified View - Coding Dude<\/title>\n<meta name=\"description\" content=\"Liferay architecture with a high-level diagram or Liferay&#039;s 3-tiers. The Liferay portal architecture is a three tier architecture.\" \/>\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.coding-dude.com\/wp\/liferay\/liferay-architecture-a-simplified-view\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Liferay Architecture - a Simplified View - Coding Dude\" \/>\n<meta property=\"og:description\" content=\"Liferay architecture with a high-level diagram or Liferay&#039;s 3-tiers. The Liferay portal architecture is a three tier architecture.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.coding-dude.com\/wp\/liferay\/liferay-architecture-a-simplified-view\/\" \/>\n<meta property=\"og:site_name\" content=\"Coding Dude\" \/>\n<meta property=\"article:published_time\" content=\"2014-02-19T07:59:25+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-11-12T09:14:17+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.coding-dude.com\/wp\/wp-content\/uploads\/2014\/02\/liferay-architecture-overview.png\" \/>\n\t<meta property=\"og:image:width\" content=\"252\" \/>\n\t<meta property=\"og:image:height\" content=\"133\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"John Negoita\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@codingdudecom\" \/>\n<meta name=\"twitter:site\" content=\"@codingdudecom\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"John Negoita\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.coding-dude.com\\\/wp\\\/liferay\\\/liferay-architecture-a-simplified-view\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.coding-dude.com\\\/wp\\\/liferay\\\/liferay-architecture-a-simplified-view\\\/\"},\"author\":{\"name\":\"John Negoita\",\"@id\":\"https:\\\/\\\/www.coding-dude.com\\\/wp\\\/#\\\/schema\\\/person\\\/29b7100b9ec7bb332359bd9fcba98370\"},\"headline\":\"Liferay Architecture &#8211; a Simplified View\",\"datePublished\":\"2014-02-19T07:59:25+00:00\",\"dateModified\":\"2018-11-12T09:14:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.coding-dude.com\\\/wp\\\/liferay\\\/liferay-architecture-a-simplified-view\\\/\"},\"wordCount\":502,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\\\/\\\/www.coding-dude.com\\\/wp\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.coding-dude.com\\\/wp\\\/liferay\\\/liferay-architecture-a-simplified-view\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.coding-dude.com\\\/wp\\\/wp-content\\\/uploads\\\/2014\\\/02\\\/liferay-architecture-overview.png\",\"keywords\":[\"6.0.x\",\"liferay\"],\"articleSection\":[\"Liferay\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.coding-dude.com\\\/wp\\\/liferay\\\/liferay-architecture-a-simplified-view\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.coding-dude.com\\\/wp\\\/liferay\\\/liferay-architecture-a-simplified-view\\\/\",\"url\":\"https:\\\/\\\/www.coding-dude.com\\\/wp\\\/liferay\\\/liferay-architecture-a-simplified-view\\\/\",\"name\":\"Liferay Architecture - a Simplified View - Coding Dude\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.coding-dude.com\\\/wp\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.coding-dude.com\\\/wp\\\/liferay\\\/liferay-architecture-a-simplified-view\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.coding-dude.com\\\/wp\\\/liferay\\\/liferay-architecture-a-simplified-view\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.coding-dude.com\\\/wp\\\/wp-content\\\/uploads\\\/2014\\\/02\\\/liferay-architecture-overview.png\",\"datePublished\":\"2014-02-19T07:59:25+00:00\",\"dateModified\":\"2018-11-12T09:14:17+00:00\",\"description\":\"Liferay architecture with a high-level diagram or Liferay's 3-tiers. The Liferay portal architecture is a three tier architecture.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.coding-dude.com\\\/wp\\\/liferay\\\/liferay-architecture-a-simplified-view\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.coding-dude.com\\\/wp\\\/liferay\\\/liferay-architecture-a-simplified-view\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.coding-dude.com\\\/wp\\\/liferay\\\/liferay-architecture-a-simplified-view\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.coding-dude.com\\\/wp\\\/wp-content\\\/uploads\\\/2014\\\/02\\\/liferay-architecture-overview.png\",\"contentUrl\":\"https:\\\/\\\/www.coding-dude.com\\\/wp\\\/wp-content\\\/uploads\\\/2014\\\/02\\\/liferay-architecture-overview.png\",\"width\":252,\"height\":133},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.coding-dude.com\\\/wp\\\/liferay\\\/liferay-architecture-a-simplified-view\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.coding-dude.com\\\/wp\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Liferay Architecture &#8211; a Simplified View\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.coding-dude.com\\\/wp\\\/#website\",\"url\":\"https:\\\/\\\/www.coding-dude.com\\\/wp\\\/\",\"name\":\"Coding Dude\",\"description\":\"Coding tutorials, tips and tricks\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.coding-dude.com\\\/wp\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.coding-dude.com\\\/wp\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.coding-dude.com\\\/wp\\\/#organization\",\"name\":\"Coding Dude\",\"url\":\"https:\\\/\\\/www.coding-dude.com\\\/wp\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.coding-dude.com\\\/wp\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.coding-dude.com\\\/wp\\\/wp-content\\\/uploads\\\/2018\\\/05\\\/codingdude-logo-wide.jpg\",\"contentUrl\":\"https:\\\/\\\/www.coding-dude.com\\\/wp\\\/wp-content\\\/uploads\\\/2018\\\/05\\\/codingdude-logo-wide.jpg\",\"width\":226,\"height\":60,\"caption\":\"Coding Dude\"},\"image\":{\"@id\":\"https:\\\/\\\/www.coding-dude.com\\\/wp\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/codingdudecom\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.coding-dude.com\\\/wp\\\/#\\\/schema\\\/person\\\/29b7100b9ec7bb332359bd9fcba98370\",\"name\":\"John Negoita\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d51d5d54d4c51f0a7bfe39333bd98cfc5245ab49433be692fce26b741c08181e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d51d5d54d4c51f0a7bfe39333bd98cfc5245ab49433be692fce26b741c08181e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d51d5d54d4c51f0a7bfe39333bd98cfc5245ab49433be692fce26b741c08181e?s=96&d=mm&r=g\",\"caption\":\"John Negoita\"},\"description\":\"I'm a Java programmer, been into programming since 1999 and having tons of fun with it.\",\"sameAs\":[\"http:\\\/\\\/www.coding-dude.com\",\"https:\\\/\\\/x.com\\\/codingdudecom\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Liferay Architecture - a Simplified View - Coding Dude","description":"Liferay architecture with a high-level diagram or Liferay's 3-tiers. The Liferay portal architecture is a three tier architecture.","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.coding-dude.com\/wp\/liferay\/liferay-architecture-a-simplified-view\/","og_locale":"en_US","og_type":"article","og_title":"Liferay Architecture - a Simplified View - Coding Dude","og_description":"Liferay architecture with a high-level diagram or Liferay's 3-tiers. The Liferay portal architecture is a three tier architecture.","og_url":"https:\/\/www.coding-dude.com\/wp\/liferay\/liferay-architecture-a-simplified-view\/","og_site_name":"Coding Dude","article_published_time":"2014-02-19T07:59:25+00:00","article_modified_time":"2018-11-12T09:14:17+00:00","og_image":[{"width":252,"height":133,"url":"https:\/\/www.coding-dude.com\/wp\/wp-content\/uploads\/2014\/02\/liferay-architecture-overview.png","type":"image\/png"}],"author":"John Negoita","twitter_card":"summary_large_image","twitter_creator":"@codingdudecom","twitter_site":"@codingdudecom","twitter_misc":{"Written by":"John Negoita","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.coding-dude.com\/wp\/liferay\/liferay-architecture-a-simplified-view\/#article","isPartOf":{"@id":"https:\/\/www.coding-dude.com\/wp\/liferay\/liferay-architecture-a-simplified-view\/"},"author":{"name":"John Negoita","@id":"https:\/\/www.coding-dude.com\/wp\/#\/schema\/person\/29b7100b9ec7bb332359bd9fcba98370"},"headline":"Liferay Architecture &#8211; a Simplified View","datePublished":"2014-02-19T07:59:25+00:00","dateModified":"2018-11-12T09:14:17+00:00","mainEntityOfPage":{"@id":"https:\/\/www.coding-dude.com\/wp\/liferay\/liferay-architecture-a-simplified-view\/"},"wordCount":502,"commentCount":1,"publisher":{"@id":"https:\/\/www.coding-dude.com\/wp\/#organization"},"image":{"@id":"https:\/\/www.coding-dude.com\/wp\/liferay\/liferay-architecture-a-simplified-view\/#primaryimage"},"thumbnailUrl":"https:\/\/www.coding-dude.com\/wp\/wp-content\/uploads\/2014\/02\/liferay-architecture-overview.png","keywords":["6.0.x","liferay"],"articleSection":["Liferay"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.coding-dude.com\/wp\/liferay\/liferay-architecture-a-simplified-view\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.coding-dude.com\/wp\/liferay\/liferay-architecture-a-simplified-view\/","url":"https:\/\/www.coding-dude.com\/wp\/liferay\/liferay-architecture-a-simplified-view\/","name":"Liferay Architecture - a Simplified View - Coding Dude","isPartOf":{"@id":"https:\/\/www.coding-dude.com\/wp\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.coding-dude.com\/wp\/liferay\/liferay-architecture-a-simplified-view\/#primaryimage"},"image":{"@id":"https:\/\/www.coding-dude.com\/wp\/liferay\/liferay-architecture-a-simplified-view\/#primaryimage"},"thumbnailUrl":"https:\/\/www.coding-dude.com\/wp\/wp-content\/uploads\/2014\/02\/liferay-architecture-overview.png","datePublished":"2014-02-19T07:59:25+00:00","dateModified":"2018-11-12T09:14:17+00:00","description":"Liferay architecture with a high-level diagram or Liferay's 3-tiers. The Liferay portal architecture is a three tier architecture.","breadcrumb":{"@id":"https:\/\/www.coding-dude.com\/wp\/liferay\/liferay-architecture-a-simplified-view\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.coding-dude.com\/wp\/liferay\/liferay-architecture-a-simplified-view\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.coding-dude.com\/wp\/liferay\/liferay-architecture-a-simplified-view\/#primaryimage","url":"https:\/\/www.coding-dude.com\/wp\/wp-content\/uploads\/2014\/02\/liferay-architecture-overview.png","contentUrl":"https:\/\/www.coding-dude.com\/wp\/wp-content\/uploads\/2014\/02\/liferay-architecture-overview.png","width":252,"height":133},{"@type":"BreadcrumbList","@id":"https:\/\/www.coding-dude.com\/wp\/liferay\/liferay-architecture-a-simplified-view\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.coding-dude.com\/wp\/"},{"@type":"ListItem","position":2,"name":"Liferay Architecture &#8211; a Simplified View"}]},{"@type":"WebSite","@id":"https:\/\/www.coding-dude.com\/wp\/#website","url":"https:\/\/www.coding-dude.com\/wp\/","name":"Coding Dude","description":"Coding tutorials, tips and tricks","publisher":{"@id":"https:\/\/www.coding-dude.com\/wp\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.coding-dude.com\/wp\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.coding-dude.com\/wp\/#organization","name":"Coding Dude","url":"https:\/\/www.coding-dude.com\/wp\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.coding-dude.com\/wp\/#\/schema\/logo\/image\/","url":"https:\/\/www.coding-dude.com\/wp\/wp-content\/uploads\/2018\/05\/codingdude-logo-wide.jpg","contentUrl":"https:\/\/www.coding-dude.com\/wp\/wp-content\/uploads\/2018\/05\/codingdude-logo-wide.jpg","width":226,"height":60,"caption":"Coding Dude"},"image":{"@id":"https:\/\/www.coding-dude.com\/wp\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/codingdudecom"]},{"@type":"Person","@id":"https:\/\/www.coding-dude.com\/wp\/#\/schema\/person\/29b7100b9ec7bb332359bd9fcba98370","name":"John Negoita","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/d51d5d54d4c51f0a7bfe39333bd98cfc5245ab49433be692fce26b741c08181e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/d51d5d54d4c51f0a7bfe39333bd98cfc5245ab49433be692fce26b741c08181e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d51d5d54d4c51f0a7bfe39333bd98cfc5245ab49433be692fce26b741c08181e?s=96&d=mm&r=g","caption":"John Negoita"},"description":"I'm a Java programmer, been into programming since 1999 and having tons of fun with it.","sameAs":["http:\/\/www.coding-dude.com","https:\/\/x.com\/codingdudecom"]}]}},"jetpack_featured_media_url":"https:\/\/www.coding-dude.com\/wp\/wp-content\/uploads\/2014\/02\/liferay-architecture-overview.png","amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.coding-dude.com\/wp\/wp-json\/wp\/v2\/posts\/544","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.coding-dude.com\/wp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.coding-dude.com\/wp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.coding-dude.com\/wp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.coding-dude.com\/wp\/wp-json\/wp\/v2\/comments?post=544"}],"version-history":[{"count":11,"href":"https:\/\/www.coding-dude.com\/wp\/wp-json\/wp\/v2\/posts\/544\/revisions"}],"predecessor-version":[{"id":3047,"href":"https:\/\/www.coding-dude.com\/wp\/wp-json\/wp\/v2\/posts\/544\/revisions\/3047"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.coding-dude.com\/wp\/wp-json\/wp\/v2\/media\/768"}],"wp:attachment":[{"href":"https:\/\/www.coding-dude.com\/wp\/wp-json\/wp\/v2\/media?parent=544"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.coding-dude.com\/wp\/wp-json\/wp\/v2\/categories?post=544"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.coding-dude.com\/wp\/wp-json\/wp\/v2\/tags?post=544"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}