{"id":457,"date":"2011-10-13T21:58:45","date_gmt":"2011-10-13T19:58:45","guid":{"rendered":"http:\/\/blog.fabianpiau.com\/?p=457"},"modified":"2022-01-01T16:14:27","modified_gmt":"2022-01-01T16:14:27","slug":"java-ee-cdi-vs-spring","status":"publish","type":"post","link":"https:\/\/blog.fabianpiau.com\/en\/2011\/10\/13\/java-ee-cdi-vs-spring\/","title":{"rendered":"Java EE &#038; CDI vs. Spring"},"content":{"rendered":"<p><a class=\"lang\" href=\"https:\/\/blog.fabianpiau.com\/fr\/2011\/10\/13\/java-ee-cdi-vs-spring\/\" title=\"Lire en fran\u00e7ais\"><strong class=\"labellang\"><span class=\"fr\">&nbsp;<\/span>Version fran\u00e7aise disponible<\/strong><\/a><\/p>\n<p>Last Wednesday, I have attended to the &#8220;Stateful is beautiful&#8221; talk at Nantes <a href=\"https:\/\/blog.fabianpiau.com\/en\/2009\/10\/24\/java-user-group-jug\/\" title=\"JUG\">JUG<\/a>, introduced by Antoine Sabot-Durand.<\/p>\n<p><br clear=\"none\"\/><\/p>\n<p>Expert in Java EE for several years, Antoine has shared his vision for the Java landscape today, especially for <a href=\"https:\/\/docs.oracle.com\/javaee\/6\/tutorial\/doc\/\" title=\"Official Java EE documentation\" target=\"_blank\" rel=\"noopener noreferrer\">Java EE<\/a> (Enterprise Edition) and the <a href=\"https:\/\/spring.io\/\" target=\"_blank\" title=\"Official Spring framework website\" rel=\"noopener noreferrer\">Spring<\/a> alternative.<\/p>\n<p><br clear=\"none\"\/><\/p>\n<p>Spring is a light-weight container that provides similar features to those found in a heavier Java EE application server. Spring only uses stateless beans, but Java EE also uses stateful beans.<\/p>\n<p>To introduce those two notions, the classic example is the e-commerce application.<\/p>\n<p>On one hand, the shopping &#8220;cart&#8221; object will be store in a stateful bean. Why? Because we need to maintain a conversational state between requests, from the time the customer has added a product to its cart to the time he would give its credit card information. On the other hand, the stateless state will be sufficient to look through the products catalog. To view a product, we do not care about the products the user has previously visited. Thus, a product will be stored in a stateless bean.<\/p>\n<p><br clear=\"none\"\/><\/p>\n<p style=\"float : left;\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" title=\"Java EE and old demons\" src=\"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/post\/00033\/java_evil_edition.png?resize=144%2C232&#038;ssl=1\" alt=\"Java EE and old demons\" width=\"144\" height=\"232\" \/>&nbsp; &nbsp; &nbsp; &nbsp;<\/p>\n<p>Antoine has made a review of the received wisdom on Java EE. Most of them belong to its history but still pursue it in the latest versions. At the time of J2EE (Java EE 4 and older &#8211; i.e. all Java EE releases until 2003), EJB 1.X &#8211; 2.1 included has suffered much Java community criticism. Heavy, complex to implement and tricky when your want to test your code, the Java platform dedicated Enterprise has not convinced&#8230;<\/p>\n<p>Because of these lacks in Java EE, some Open Source alternatives have become popular such as Spring and Hibernate.<\/p>\n<p><br clear=\"none\"\/><\/p>\n<p>Now, the platform (renamed as Java EE) has evolved and has been simplified, the new EJB 3.X specification has became lighter and more competitive. This is especially true for the latest Java EE 6 release in late 2009. Indeed, it includes <a href=\"https:\/\/www.oracle.com\/technical-resources\/articles\/java\/cdi-javaee-bien.html\" target=\"_blank\" title=\"Post about CDI\" rel=\"noopener noreferrer\">CDI<\/a> (Contexts and Dependency Injection), the standard that it needed to compete Spring seriously. It also includes the &#8220;profile&#8221; feature that allows Java EE to be specialized. Broadly, you take only the components you need. For testing into the container, Antoine advised us to use <a href=\"http:\/\/arquillian.org\/\" target=\"_blank\" title=\"Official Arquillian website\" rel=\"noopener noreferrer\">Arquillian<\/a> software.<\/p>\n<p><br clear=\"none\"\/><\/p>\n<p style=\"float : right;\">&nbsp; &nbsp; &nbsp; &nbsp;<img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" title=\"Spring logo\" src=\"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/post\/00033\/spring.png?resize=206%2C117&#038;ssl=1\" alt=\"Spring logo\" width=\"206\" height=\"117\" \/><\/p>\n<p>Spring has chosen not to implement the new CDI standard. Why? The answer is not so simple. Perhaps this implementation would have been impactful on the existing code and could slow down the development of the framework. At the same time, with a large number of users, maybe SpringSource has decided to continue its parallel development of Spring in the hope one day it will dethrone CDI definitely. In general, companies are not keen on changing their habits, knowledge and other best practices (replace Spring by CDI would be a very important investment). At the same time, this can be dangerous if CDI takes off in the coming years. Watch this space!<\/p>\n<p>Note: Unlike Spring, Hibernate implements JPA for the persistence layer (which is the standard in Java EE) ensuring greater longevity.<\/p>\n<p><br clear=\"none\"\/><\/p>\n<p>As Antoine pointed out, the purpose of his presentation was not to denigrate Spring. On the contrary, he continues to use it and could hardly do without it. He has made a metaphor with a &#8220;golden hammer&#8221; I found rather interesting. Today, majority of Java developers do not ask themselves the good questions when they want to use dependency injection. At the end, they choose Spring spontaneously (we have a nail, oh I just need my Spring favorite hammer). However, we should be able to put the golden hammer down for a while and see what is existing around. Depending on the project, Spring is not always the most appropriate.<\/p>\n<p><br clear=\"none\"\/><\/p>\n<p>Today, the success of Java EE is still uncertain. Received wisdom won&#8217;t die, Spring still has a bright future. How much longer? Only time will tell&#8230; In the meantime, Antoine strongly advices us to try Java EE 6 and get our own opinion. At the end, he made a demo : a Java EE example project, created from a Maven archetype template and using stateful and stateless beans.<br \/>\n<\/p>","protected":false},"excerpt":{"rendered":"<p>&nbsp;Version fran\u00e7aise disponible Last Wednesday, I have attended to the &#8220;Stateful is beautiful&#8221; talk at Nantes JUG, introduced by Antoine Sabot-Durand. Expert in Java EE for several years, Antoine has shared his vision for the Java landscape today, especially for Java EE (Enterprise Edition) and the Spring alternative. Spring is a light-weight container that provides [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1395,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":true,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[6],"tags":[131,130,53,128,51,129],"class_list":["post-457","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-event","tag-cdi","tag-hibernate-software","tag-java","tag-java-ee","tag-jug","tag-spring"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Java EE &amp; CDI vs. Spring | CarmaBlog<\/title>\n<meta name=\"description\" content=\"&nbsp;English version available Mercredi soir au JUG nantais, nous avons pu assister \u00e0 la pr\u00e9sentation &quot;Stateful is beautiful&quot; d&#039;Antoine Sabot-Durand.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.fabianpiau.com\/en\/2011\/10\/13\/java-ee-cdi-vs-spring\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Java EE &amp; CDI vs. Spring | CarmaBlog\" \/>\n<meta property=\"og:description\" content=\"&nbsp;English version available Mercredi soir au JUG nantais, nous avons pu assister \u00e0 la pr\u00e9sentation &quot;Stateful is beautiful&quot; d&#039;Antoine Sabot-Durand.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.fabianpiau.com\/en\/2011\/10\/13\/java-ee-cdi-vs-spring\/\" \/>\n<meta property=\"og:site_name\" content=\"CarmaBlog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/fabian.piau\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/fabian.piau\" \/>\n<meta property=\"article:published_time\" content=\"2011-10-13T19:58:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-01-01T16:14:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.fabianpiau.com\/wp-content\/uploads\/2011\/10\/00033.png\" \/>\n\t<meta property=\"og:image:width\" content=\"265\" \/>\n\t<meta property=\"og:image:height\" content=\"265\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Fabian Piau\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@fabianpiau\" \/>\n<meta name=\"twitter:site\" content=\"@fabianpiau\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fabian Piau\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/2011\\\/10\\\/13\\\/java-ee-cdi-vs-spring\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/2011\\\/10\\\/13\\\/java-ee-cdi-vs-spring\\\/\"},\"author\":{\"name\":\"Fabian Piau\",\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/#\\\/schema\\\/person\\\/c5cbffd7cf0b10117877f5dfd1b35f14\"},\"headline\":\"Java EE &#038; CDI vs. Spring\",\"datePublished\":\"2011-10-13T19:58:45+00:00\",\"dateModified\":\"2022-01-01T16:14:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/2011\\\/10\\\/13\\\/java-ee-cdi-vs-spring\\\/\"},\"wordCount\":1535,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/#\\\/schema\\\/person\\\/c5cbffd7cf0b10117877f5dfd1b35f14\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/2011\\\/10\\\/13\\\/java-ee-cdi-vs-spring\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/blog.fabianpiau.com\\\/wp-content\\\/uploads\\\/2011\\\/10\\\/00033.png?fit=265%2C265&ssl=1\",\"keywords\":[\"cdi\",\"hibernate\",\"java\",\"java ee\",\"jug\",\"spring\"],\"articleSection\":[\"Event\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blog.fabianpiau.com\\\/2011\\\/10\\\/13\\\/java-ee-cdi-vs-spring\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/2011\\\/10\\\/13\\\/java-ee-cdi-vs-spring\\\/\",\"url\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/2011\\\/10\\\/13\\\/java-ee-cdi-vs-spring\\\/\",\"name\":\"Java EE & CDI vs. Spring | CarmaBlog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/2011\\\/10\\\/13\\\/java-ee-cdi-vs-spring\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/2011\\\/10\\\/13\\\/java-ee-cdi-vs-spring\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/blog.fabianpiau.com\\\/wp-content\\\/uploads\\\/2011\\\/10\\\/00033.png?fit=265%2C265&ssl=1\",\"datePublished\":\"2011-10-13T19:58:45+00:00\",\"dateModified\":\"2022-01-01T16:14:27+00:00\",\"description\":\"&nbsp;English version available Mercredi soir au JUG nantais, nous avons pu assister \u00e0 la pr\u00e9sentation \\\"Stateful is beautiful\\\" d'Antoine Sabot-Durand.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/2011\\\/10\\\/13\\\/java-ee-cdi-vs-spring\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[[\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/2011\\\/10\\\/13\\\/java-ee-cdi-vs-spring\\\/\"]]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/2011\\\/10\\\/13\\\/java-ee-cdi-vs-spring\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/blog.fabianpiau.com\\\/wp-content\\\/uploads\\\/2011\\\/10\\\/00033.png?fit=265%2C265&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/blog.fabianpiau.com\\\/wp-content\\\/uploads\\\/2011\\\/10\\\/00033.png?fit=265%2C265&ssl=1\",\"width\":265,\"height\":265,\"caption\":\"Java EE vs Spring\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/2011\\\/10\\\/13\\\/java-ee-cdi-vs-spring\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Homepage\",\"item\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ev\u00e9nement\",\"item\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/category\\\/event\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Java EE &#038; CDI vs. Spring\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/\",\"name\":\"CarmaBlog\",\"description\":\"Agility, Java programming, New technologies and more...\",\"publisher\":{\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/#\\\/schema\\\/person\\\/c5cbffd7cf0b10117877f5dfd1b35f14\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/#\\\/schema\\\/person\\\/c5cbffd7cf0b10117877f5dfd1b35f14\",\"name\":\"Fabian Piau\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/i0.wp.com\\\/blog.fabianpiau.com\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/fabian-pro-small.jpg?fit=567%2C667&ssl=1\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/blog.fabianpiau.com\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/fabian-pro-small.jpg?fit=567%2C667&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/blog.fabianpiau.com\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/fabian-pro-small.jpg?fit=567%2C667&ssl=1\",\"width\":567,\"height\":667,\"caption\":\"Fabian Piau\"},\"logo\":{\"@id\":\"https:\\\/\\\/i0.wp.com\\\/blog.fabianpiau.com\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/fabian-pro-small.jpg?fit=567%2C667&ssl=1\"},\"description\":\"Java developer, Fabian is interested in new technologies and their use within an Agile environment.\",\"sameAs\":[\"https:\\\/\\\/blog.fabianpiau.com\",\"https:\\\/\\\/www.facebook.com\\\/fabian.piau\",\"https:\\\/\\\/www.instagram.com\\\/fabianpiau\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/fabianpiau\\\/\",\"https:\\\/\\\/x.com\\\/fabianpiau\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Java EE & CDI vs. Spring | CarmaBlog","description":"&nbsp;English version available Mercredi soir au JUG nantais, nous avons pu assister \u00e0 la pr\u00e9sentation \"Stateful is beautiful\" d'Antoine Sabot-Durand.","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:\/\/blog.fabianpiau.com\/en\/2011\/10\/13\/java-ee-cdi-vs-spring\/","og_locale":"en_US","og_type":"article","og_title":"Java EE & CDI vs. Spring | CarmaBlog","og_description":"&nbsp;English version available Mercredi soir au JUG nantais, nous avons pu assister \u00e0 la pr\u00e9sentation \"Stateful is beautiful\" d'Antoine Sabot-Durand.","og_url":"https:\/\/blog.fabianpiau.com\/en\/2011\/10\/13\/java-ee-cdi-vs-spring\/","og_site_name":"CarmaBlog","article_publisher":"https:\/\/www.facebook.com\/fabian.piau","article_author":"https:\/\/www.facebook.com\/fabian.piau","article_published_time":"2011-10-13T19:58:45+00:00","article_modified_time":"2022-01-01T16:14:27+00:00","og_image":[{"width":265,"height":265,"url":"https:\/\/blog.fabianpiau.com\/wp-content\/uploads\/2011\/10\/00033.png","type":"image\/png"}],"author":"Fabian Piau","twitter_card":"summary_large_image","twitter_creator":"@fabianpiau","twitter_site":"@fabianpiau","twitter_misc":{"Written by":"Fabian Piau","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.fabianpiau.com\/2011\/10\/13\/java-ee-cdi-vs-spring\/#article","isPartOf":{"@id":"https:\/\/blog.fabianpiau.com\/2011\/10\/13\/java-ee-cdi-vs-spring\/"},"author":{"name":"Fabian Piau","@id":"https:\/\/blog.fabianpiau.com\/#\/schema\/person\/c5cbffd7cf0b10117877f5dfd1b35f14"},"headline":"Java EE &#038; CDI vs. Spring","datePublished":"2011-10-13T19:58:45+00:00","dateModified":"2022-01-01T16:14:27+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.fabianpiau.com\/2011\/10\/13\/java-ee-cdi-vs-spring\/"},"wordCount":1535,"commentCount":0,"publisher":{"@id":"https:\/\/blog.fabianpiau.com\/#\/schema\/person\/c5cbffd7cf0b10117877f5dfd1b35f14"},"image":{"@id":"https:\/\/blog.fabianpiau.com\/2011\/10\/13\/java-ee-cdi-vs-spring\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/2011\/10\/00033.png?fit=265%2C265&ssl=1","keywords":["cdi","hibernate","java","java ee","jug","spring"],"articleSection":["Event"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.fabianpiau.com\/2011\/10\/13\/java-ee-cdi-vs-spring\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.fabianpiau.com\/en\/2011\/10\/13\/java-ee-cdi-vs-spring\/","url":"https:\/\/blog.fabianpiau.com\/en\/2011\/10\/13\/java-ee-cdi-vs-spring\/","name":"Java EE & CDI vs. Spring | CarmaBlog","isPartOf":{"@id":"https:\/\/blog.fabianpiau.com\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.fabianpiau.com\/en\/2011\/10\/13\/java-ee-cdi-vs-spring\/#primaryimage"},"image":{"@id":"https:\/\/blog.fabianpiau.com\/2011\/10\/13\/java-ee-cdi-vs-spring\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/2011\/10\/00033.png?fit=265%2C265&ssl=1","datePublished":"2011-10-13T19:58:45+00:00","dateModified":"2022-01-01T16:14:27+00:00","description":"&nbsp;English version available Mercredi soir au JUG nantais, nous avons pu assister \u00e0 la pr\u00e9sentation \"Stateful is beautiful\" d'Antoine Sabot-Durand.","breadcrumb":{"@id":"https:\/\/blog.fabianpiau.com\/en\/2011\/10\/13\/java-ee-cdi-vs-spring\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":[["https:\/\/blog.fabianpiau.com\/en\/2011\/10\/13\/java-ee-cdi-vs-spring\/"]]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.fabianpiau.com\/en\/2011\/10\/13\/java-ee-cdi-vs-spring\/#primaryimage","url":"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/2011\/10\/00033.png?fit=265%2C265&ssl=1","contentUrl":"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/2011\/10\/00033.png?fit=265%2C265&ssl=1","width":265,"height":265,"caption":"Java EE vs Spring"},{"@type":"BreadcrumbList","@id":"https:\/\/blog.fabianpiau.com\/en\/2011\/10\/13\/java-ee-cdi-vs-spring\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Homepage","item":"https:\/\/blog.fabianpiau.com\/en\/"},{"@type":"ListItem","position":2,"name":"Ev\u00e9nement","item":"https:\/\/blog.fabianpiau.com\/en\/category\/event\/"},{"@type":"ListItem","position":3,"name":"Java EE &#038; CDI vs. Spring"}]},{"@type":"WebSite","@id":"https:\/\/blog.fabianpiau.com\/en\/#website","url":"https:\/\/blog.fabianpiau.com\/en\/","name":"CarmaBlog","description":"Agility, Java programming, New technologies and more...","publisher":{"@id":"https:\/\/blog.fabianpiau.com\/en\/#\/schema\/person\/c5cbffd7cf0b10117877f5dfd1b35f14"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.fabianpiau.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/blog.fabianpiau.com\/en\/#\/schema\/person\/c5cbffd7cf0b10117877f5dfd1b35f14","name":"Fabian Piau","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/2022\/08\/fabian-pro-small.jpg?fit=567%2C667&ssl=1","url":"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/2022\/08\/fabian-pro-small.jpg?fit=567%2C667&ssl=1","contentUrl":"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/2022\/08\/fabian-pro-small.jpg?fit=567%2C667&ssl=1","width":567,"height":667,"caption":"Fabian Piau"},"logo":{"@id":"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/2022\/08\/fabian-pro-small.jpg?fit=567%2C667&ssl=1"},"description":"Java developer, Fabian is interested in new technologies and their use within an Agile environment.","sameAs":["https:\/\/blog.fabianpiau.com","https:\/\/www.facebook.com\/fabian.piau","https:\/\/www.instagram.com\/fabianpiau\/","https:\/\/www.linkedin.com\/in\/fabianpiau\/","https:\/\/x.com\/fabianpiau"]}]}},"views":16250,"jetpack_featured_media_url":"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/2011\/10\/00033.png?fit=265%2C265&ssl=1","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pbSHyl-7n","_links":{"self":[{"href":"https:\/\/blog.fabianpiau.com\/en\/wp-json\/wp\/v2\/posts\/457","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.fabianpiau.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.fabianpiau.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.fabianpiau.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.fabianpiau.com\/en\/wp-json\/wp\/v2\/comments?post=457"}],"version-history":[{"count":0,"href":"https:\/\/blog.fabianpiau.com\/en\/wp-json\/wp\/v2\/posts\/457\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.fabianpiau.com\/en\/wp-json\/wp\/v2\/media\/1395"}],"wp:attachment":[{"href":"https:\/\/blog.fabianpiau.com\/en\/wp-json\/wp\/v2\/media?parent=457"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.fabianpiau.com\/en\/wp-json\/wp\/v2\/categories?post=457"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.fabianpiau.com\/en\/wp-json\/wp\/v2\/tags?post=457"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}