{"id":22365,"date":"2014-03-04T07:00:34","date_gmt":"2014-03-04T05:00:34","guid":{"rendered":"http:\/\/www.javacodegeeks.com\/?p=22365"},"modified":"2014-03-03T19:26:10","modified_gmt":"2014-03-03T17:26:10","slug":"java-enterprise-software-versus-what-it-should-be","status":"publish","type":"post","link":"https:\/\/www.javacodegeeks.com\/2014\/03\/java-enterprise-software-versus-what-it-should-be.html","title":{"rendered":"Java Enterprise Software Versus What it Should Be"},"content":{"rendered":"<p>A lot of developers end up in the Java \u201centerprise\u201d world at some point in their careers. I know the term alone conjures up all kinds of reactions, and rightly so. Often environments where lots of interesting technical challenges exist end up being those that nobody wants to work on because they are brittle, difficult to work on and just no fun. Often the problems that crop up in big projects are due to management, but I\u2019ve seen developers make lots of bad decisions that lead to awful pieces of software, all in the name of \u201centerprise\u201d.<\/p>\n<h2>What is Enterprise?<\/h2>\n<p>You could argue that the term can mean just about anything, and that\u2019s true, but for the sake of this article I\u2019m going to define it in a way that I think lines up with the common usage. The average enterprise project has these attributes:<\/p>\n<ul>\n<li>typically in a large corporate environment<\/li>\n<li>multiple layers of management\/direction involved<\/li>\n<li>preference for solutions from large vendors like Red Hat, IBM or Microsoft<\/li>\n<li>preference for well-known, established (though sometimes deficient) products and standards<\/li>\n<li>concerns about scaling and performance<\/li>\n<\/ul>\n<p>Now that I\u2019ve defined what type of project we are talking about, let\u2019s see what they usually end up looking like.<\/p>\n<h2>The Typical Enterprise Java Project<\/h2>\n<p>Most of us have seen the hallmarks of enterprise projects. It would help if we had an example, so let\u2019s pretend it\u2019s an e-commerce platform with some B2B capabilities. Here\u2019s what it might look like:<\/p>\n<ul>\n<li><a title=\"EJB3\" href=\"http:\/\/www.oracle.com\/technetwork\/articles\/entarch\/ejb-3-085455.html\">EJB3<\/a> plus JPA and JSF \u2013 these fit a \u201cstandard\u201d and everyone use them, so it\u2019s safe choice.<\/li>\n<li><a title=\"SOAP\" href=\"http:\/\/en.wikipedia.org\/wiki\/SOAP\">SOAP<\/a> \u2013 it\u2019s standard and defines how things like security should work, so there\u2019s less to worry about.<\/li>\n<li>JMS <a title=\"Message-Driven Beans\" href=\"http:\/\/docs.oracle.com\/javaee\/6\/tutorial\/doc\/gipko.html\">Message-Driven Beans<\/a> \u2013 it fits into the platform and offers reliability and load-balancing.<\/li>\n<li><a title=\"Quartz Scheduler\" href=\"http:\/\/quartz-scheduler.org\/\">Quartz <\/a>for job scheduling \u2013 a \u201csafe\u201d choice (better the enemy you know than the devil you don\u2019t).<\/li>\n<li>Deployed on <a title=\"JBoss\" href=\"https:\/\/www.jboss.org\/overview\/\">JBoss<\/a> \u2013 it has the backing of a large company and paid support channels.<\/li>\n<\/ul>\n<p>Now, the problem with a project like this isn\u2019t necessarily the individual pieces of technology selected. I definitely have issues with some of the ones in my example, but the real issue is how the choices are made and what the motivations are for using certain technologies.<div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<p>The stack of software above is notoriously more difficult to manage and work with compared to other choices. Development will take longer to get off the ground, changes will be more difficult to make as requirements evolve, and the project will ultimately end up more complicated than other possible solutions.<\/p>\n<h2>Enterprise Decision-Making<\/h2>\n<p>The goals that enterprise project usually fixate on when making choices are:<\/p>\n<ul>\n<li>Low-risk technology \u2013 make a \u201csafe\u201d choice that won\u2019t result in blow-back, even if it is known to have serious drawbacks.<\/li>\n<li>Standards obsession \u2013 worrying more about having well-defined specifications like EJB3 or SOAP than offering the simplest solution that does the job effectively.<\/li>\n<li>Need for paid support with an SLA, often without concern to the quality or timeliness of responses.<\/li>\n<li>Designing out of fear of unknown future requirements.<\/li>\n<\/ul>\n<p>These goals aren\u2019t bad ones, with the exception of the last one, but they tend to overshadow the real goals of every software project. The primary objective of all software projects is to deliver a project that:<\/p>\n<ul>\n<li>is on-time;<\/li>\n<li>meets requirements;<\/li>\n<li>is reliable;<\/li>\n<li>performs well; and<\/li>\n<li>is easy to maintain and extend.<\/li>\n<\/ul>\n<p>These should be what decision-makers focus on in software projects, whether small or large. It\u2019s obvious that sometimes special organizational needs factor into the choices that are made, but fundamentally good choices generally apply in all types of organizations.<\/p>\n<p>So what if we were to reimagine our project with those goals in mind instead?<\/p>\n<h2>A Reimagined Enterprise Project<\/h2>\n<p>First, a little disclaimer: there are many ways one can go in any project, and I won\u2019t claim that the technologies below are better that the ones mentioned previously. Tools need to be evaluated according to your needs, and everyone\u2019s are different.<\/p>\n<p>What I will try to do is demonstrate an example technology stack along with the reasoning for each choice. This will show how well designed systems can be built which survive in the enterprise world without succumbing to the bad choices that are often made.<\/p>\n<p>Here\u2019s the suggested stack:<\/p>\n<ul>\n<li><a title=\"Spring MVC\" href=\"http:\/\/docs.spring.io\/spring\/docs\/3.0.x\/spring-framework-reference\/html\/mvc.html\">Spring MVC<\/a> using <a title=\"ThymeLeaf\" href=\"http:\/\/www.thymeleaf.org\/\">Thymeleaf<\/a> \u2013 stable history, lots of development resources, quick development and flexibility. Don\u2019t be afraid of using platforms or libraries, but try to avoid too much \u201cbuy-in\u201d to their stack that you might regret.<\/li>\n<li>Simple database layer using <a title=\"jOOQ\" href=\"http:\/\/www.jooq.org\/\">jOOQ <\/a>for persistence where useful. This lets us manage performance in a more fine-grained way, while still getting easy database interaction and avoiding <a title=\"Problems with ORMs\" href=\"http:\/\/www.obsidianscheduler.com\/blog\/problems-with-orms\/\">ORM pitfalls<\/a>.<\/li>\n<li>REST using <a title=\"Jackson\" href=\"http:\/\/jackson.codehaus.org\/\">Jackson <\/a>JSON processor \u2013 REST and JSON are both popular because they are easy-to-use and understand, cheap to develop, use simple standards and are familiar to developers. Lock-in isn\u2019t much of a problem either \u2013 we could easily switch to another JSON processor without much difficulty, unlike SOAP. This can be easily secured with SSL and basic authentication.<\/li>\n<li>JMS messaging using JSON-encoded messages on <a title=\"ActiveMQ\" href=\"http:\/\/activemq.apache.org\/\">ActiveMQ<\/a> \u2013 loose coupling, reliability and load-balancing, without the nastiness of being stuck with <a title=\"Message-Driven Beans\" href=\"http:\/\/docs.oracle.com\/javaee\/6\/tutorial\/doc\/gipko.html\">Message-Driven Beans<\/a>.<\/li>\n<li><a title=\"Obsidian Scheduler\" href=\"http:\/\/obsidianscheduler.com\/\">Obsidian Scheduler<\/a> \u2013 simple-to-use, offers excellent monitoring and reduces burden on developers. Once again, the goal is to simplify and reduce costs where possible.<\/li>\n<li>Deployed on <a title=\"Tomcat\" href=\"http:\/\/tomcat.apache.org\/\">Tomcat<\/a> \u2013 no proprietary features used. This helps us follow standards, avoid upgrade issues and keep things working in the future. Who needs support with SLAs when things aren\u2019t inexplicably breaking all the time?<\/li>\n<\/ul>\n<p>I think the stack and corresponding explanations above help give an idea to what an enterprise project can be if it\u2019s approached from the right angle. The idea is to show that even enterprise projects can be simple and be nimbly built \u2013 bloated frameworks and platforms aren\u2019t a necessary part, and rarely offer any significant tangible benefit.<\/p>\n<h2>In Closing<\/h2>\n<p>Recent trends in development to technologies like REST have been very encouraging and inroads are being made into the enterprise world. Development groups are realizing that simplicity leads to reliability and cost-effective solutions long as the underlying technology choices meets the performance, security, etc. needs of the project.<\/p>\n<p>The software world moves quickly, and is showing promising signs that it\u2019s moving in the right direction. I can only hope that one day the memories of bloated enterprise platforms fade into obscurity.<br \/>\n&nbsp;<\/p>\n<div style=\"border: 1px solid #D8D8D8; background: #FAFAFA; width: 100%; padding-left: 5px;\"><b><i>Reference: <\/i><\/b><a href=\"http:\/\/www.obsidianscheduler.com\/blog\/java-enterprise-software-versus-what-it-should-be\/\">Java Enterprise Software Versus What it Should Be<\/a> from our <a href=\"http:\/\/www.javacodegeeks.com\/jcg\">JCG partner<\/a> Craig Flichel at the <a href=\"http:\/\/www.obsidianscheduler.com\/blog\/\">Carfey Software Blog<\/a> blog.<\/div>\n","protected":false},"excerpt":{"rendered":"<p>A lot of developers end up in the Java \u201centerprise\u201d world at some point in their careers. I know the term alone conjures up all kinds of reactions, and rightly so. Often environments where lots of interesting technical challenges exist end up being those that nobody wants to work on because they are brittle, difficult &hellip;<\/p>\n","protected":false},"author":59,"featured_media":112,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-22365","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-enterprise-java"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Java Enterprise Software Versus What it Should Be<\/title>\n<meta name=\"description\" content=\"A lot of developers end up in the Java \u201centerprise\u201d world at some point in their careers. I know the term alone conjures up all kinds of reactions, and\" \/>\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.javacodegeeks.com\/2014\/03\/java-enterprise-software-versus-what-it-should-be.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Java Enterprise Software Versus What it Should Be\" \/>\n<meta property=\"og:description\" content=\"A lot of developers end up in the Java \u201centerprise\u201d world at some point in their careers. I know the term alone conjures up all kinds of reactions, and\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.javacodegeeks.com\/2014\/03\/java-enterprise-software-versus-what-it-should-be.html\" \/>\n<meta property=\"og:site_name\" content=\"Java Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/javacodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2014-03-04T05:00:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Craig Flichel\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Craig Flichel\" \/>\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.javacodegeeks.com\\\/2014\\\/03\\\/java-enterprise-software-versus-what-it-should-be.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/03\\\/java-enterprise-software-versus-what-it-should-be.html\"},\"author\":{\"name\":\"Craig Flichel\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/c1bcd58320330b548e07d846510f9460\"},\"headline\":\"Java Enterprise Software Versus What it Should Be\",\"datePublished\":\"2014-03-04T05:00:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/03\\\/java-enterprise-software-versus-what-it-should-be.html\"},\"wordCount\":1101,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/03\\\/java-enterprise-software-versus-what-it-should-be.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"articleSection\":[\"Enterprise Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/03\\\/java-enterprise-software-versus-what-it-should-be.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/03\\\/java-enterprise-software-versus-what-it-should-be.html\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/03\\\/java-enterprise-software-versus-what-it-should-be.html\",\"name\":\"Java Enterprise Software Versus What it Should Be\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/03\\\/java-enterprise-software-versus-what-it-should-be.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/03\\\/java-enterprise-software-versus-what-it-should-be.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"datePublished\":\"2014-03-04T05:00:34+00:00\",\"description\":\"A lot of developers end up in the Java \u201centerprise\u201d world at some point in their careers. I know the term alone conjures up all kinds of reactions, and\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/03\\\/java-enterprise-software-versus-what-it-should-be.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/03\\\/java-enterprise-software-versus-what-it-should-be.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/03\\\/java-enterprise-software-versus-what-it-should-be.html#primaryimage\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"width\":150,\"height\":150,\"caption\":\"java-interview-questions-answers\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/03\\\/java-enterprise-software-versus-what-it-should-be.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Enterprise Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\\\/enterprise-java\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Java Enterprise Software Versus What it Should Be\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"name\":\"Java Code Geeks\",\"description\":\"Java Developers Resource Center\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"alternateName\":\"JCG\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.javacodegeeks.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/javacodegeeks\",\"https:\\\/\\\/x.com\\\/javacodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/c1bcd58320330b548e07d846510f9460\",\"name\":\"Craig Flichel\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f7ada05eac86c369123683747aa5f714e262e52d4af354efe8aba14f76075dc4?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f7ada05eac86c369123683747aa5f714e262e52d4af354efe8aba14f76075dc4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f7ada05eac86c369123683747aa5f714e262e52d4af354efe8aba14f76075dc4?s=96&d=mm&r=g\",\"caption\":\"Craig Flichel\"},\"sameAs\":[\"http:\\\/\\\/www.carfey.com\\\/blog\\\/\"],\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/author\\\/Craig-Flichel\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Java Enterprise Software Versus What it Should Be","description":"A lot of developers end up in the Java \u201centerprise\u201d world at some point in their careers. I know the term alone conjures up all kinds of reactions, and","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.javacodegeeks.com\/2014\/03\/java-enterprise-software-versus-what-it-should-be.html","og_locale":"en_US","og_type":"article","og_title":"Java Enterprise Software Versus What it Should Be","og_description":"A lot of developers end up in the Java \u201centerprise\u201d world at some point in their careers. I know the term alone conjures up all kinds of reactions, and","og_url":"https:\/\/www.javacodegeeks.com\/2014\/03\/java-enterprise-software-versus-what-it-should-be.html","og_site_name":"Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_published_time":"2014-03-04T05:00:34+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","type":"image\/jpeg"}],"author":"Craig Flichel","twitter_card":"summary_large_image","twitter_creator":"@javacodegeeks","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Craig Flichel","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.javacodegeeks.com\/2014\/03\/java-enterprise-software-versus-what-it-should-be.html#article","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/2014\/03\/java-enterprise-software-versus-what-it-should-be.html"},"author":{"name":"Craig Flichel","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/c1bcd58320330b548e07d846510f9460"},"headline":"Java Enterprise Software Versus What it Should Be","datePublished":"2014-03-04T05:00:34+00:00","mainEntityOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2014\/03\/java-enterprise-software-versus-what-it-should-be.html"},"wordCount":1101,"commentCount":0,"publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2014\/03\/java-enterprise-software-versus-what-it-should-be.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","articleSection":["Enterprise Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.javacodegeeks.com\/2014\/03\/java-enterprise-software-versus-what-it-should-be.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.javacodegeeks.com\/2014\/03\/java-enterprise-software-versus-what-it-should-be.html","url":"https:\/\/www.javacodegeeks.com\/2014\/03\/java-enterprise-software-versus-what-it-should-be.html","name":"Java Enterprise Software Versus What it Should Be","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2014\/03\/java-enterprise-software-versus-what-it-should-be.html#primaryimage"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2014\/03\/java-enterprise-software-versus-what-it-should-be.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","datePublished":"2014-03-04T05:00:34+00:00","description":"A lot of developers end up in the Java \u201centerprise\u201d world at some point in their careers. I know the term alone conjures up all kinds of reactions, and","breadcrumb":{"@id":"https:\/\/www.javacodegeeks.com\/2014\/03\/java-enterprise-software-versus-what-it-should-be.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.javacodegeeks.com\/2014\/03\/java-enterprise-software-versus-what-it-should-be.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/2014\/03\/java-enterprise-software-versus-what-it-should-be.html#primaryimage","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","width":150,"height":150,"caption":"java-interview-questions-answers"},{"@type":"BreadcrumbList","@id":"https:\/\/www.javacodegeeks.com\/2014\/03\/java-enterprise-software-versus-what-it-should-be.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.javacodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Java","item":"https:\/\/www.javacodegeeks.com\/category\/java"},{"@type":"ListItem","position":3,"name":"Enterprise Java","item":"https:\/\/www.javacodegeeks.com\/category\/java\/enterprise-java"},{"@type":"ListItem","position":4,"name":"Java Enterprise Software Versus What it Should Be"}]},{"@type":"WebSite","@id":"https:\/\/www.javacodegeeks.com\/#website","url":"https:\/\/www.javacodegeeks.com\/","name":"Java Code Geeks","description":"Java Developers Resource Center","publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"alternateName":"JCG","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.javacodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.javacodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.javacodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/javacodegeeks","https:\/\/x.com\/javacodegeeks"]},{"@type":"Person","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/c1bcd58320330b548e07d846510f9460","name":"Craig Flichel","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f7ada05eac86c369123683747aa5f714e262e52d4af354efe8aba14f76075dc4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f7ada05eac86c369123683747aa5f714e262e52d4af354efe8aba14f76075dc4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f7ada05eac86c369123683747aa5f714e262e52d4af354efe8aba14f76075dc4?s=96&d=mm&r=g","caption":"Craig Flichel"},"sameAs":["http:\/\/www.carfey.com\/blog\/"],"url":"https:\/\/www.javacodegeeks.com\/author\/Craig-Flichel"}]}},"_links":{"self":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/22365","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/users\/59"}],"replies":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=22365"}],"version-history":[{"count":0,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/22365\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media\/112"}],"wp:attachment":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media?parent=22365"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=22365"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=22365"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}