{"id":2508,"date":"2017-10-13T14:03:04","date_gmt":"2017-10-13T13:03:04","guid":{"rendered":"http:\/\/www.xenonique.co.uk\/blog\/?p=2508"},"modified":"2017-10-17T06:09:00","modified_gmt":"2017-10-17T05:09:00","slug":"javaone-2017-in-depth-java-ee-eclipse-foundation-and-native-serverless-cloud","status":"publish","type":"post","link":"https:\/\/www.xenonique.co.uk\/blog\/2017\/10\/13\/javaone-2017-in-depth-java-ee-eclipse-foundation-and-native-serverless-cloud\/","title":{"rendered":"JavaOne 2017 in Depth &#8211; Java EE, Eclipse Foundation and Native Serverless Cloud"},"content":{"rendered":"<p>I left the second article with the feeling of a less ostentatious technology conference about JavaOne 2017. On the other hand, the conference was packed with information on where Java the language, the runtime and platform with community are going to.<br \/>\nIn this third article, I want to dig into the future of Java EE and where it is heading to.<\/p>\n<p> &nbsp; <\/p>\n<p> &nbsp; <\/p>\n<h2> Enterprise edition <\/h2>\n<p>The <strong>Enterprise Edition<\/strong> is an extension of the standalone Java SDK as Sun Microsystems imagined it way back in 1998. It was designed as a framework, library and runnable container for <em>Beans<\/em> that lived on the server side. The history of <strong>J2EE<\/strong> is mangled, long and varied and I will not care to extrapolate it here in this article. Suffice to say, that Oracle announced the transfer of the brand Java EE <a class=\"\" tabindex=\"0\" role=\"button\"  style=\"cursor: pointer;\" data-toggle=\"x-popover\"  data-trigger=\"focus\" data-placement=\"bottom\" data-popover-content=\"#popup1\"><span class=\"badge badge-pill badge-primary\">#1<\/span><\/a> to the Eclipse Foundation. Executive Director, Mike Milinkovich, announced the <a href=\"https:\/\/projects.eclipse.org\/projects\/ee4j\/charter\"> Eclipse Enterprise for Java<\/a>, <strong>EE4J<\/strong> &#8211; Top Level Project with charter. <a class=\"\" tabindex=\"0\" role=\"button\"  style=\"cursor: pointer;\" data-toggle=\"x-popover\"  data-trigger=\"focus\" data-placement=\"bottom\" data-popover-content=\"#popup2\"><span class=\"badge badge-pill badge-primary\">#2<\/span><\/a><\/p>\n<div id=\"popup1\" class=\"popover-box d-none\">\n<div class=\"popover-heading\">The Java EE brand<\/div>\n<div class=\"popover-body\">\nThe <a href=\"https:\/\/stackoverflow.com\/questions\/4699302\/how-to-pronounce-j2ee-or-java-ee\">Java EE brand is unfortunate failed marketing scheme<\/a>, because technologists have long memories about the original <a href=\"https:\/\/archive.oreilly.com\/pub\/post\/the_death_of_ejb_as_we_know_it.html\"><strong>Enterprise Java Beans<\/strong><\/a> in the early J2EE releases 1.0 to 1.4. EJBs were too hard to work with, develop and deploy solutions. Application server were proprietary and expensive, which left a glaring business opportunity with market. This was taken by <a href=\"https:\/\/en.wikipedia.org\/wiki\/Rod_Johnson_(programmer)\">Rod Johnson<\/a> and his Spring Framework, which was open source and explicitly targeting Plain Old Java Object (POJOs). Finally, the name J2EE has stuck around in recruitment consultants mind, business managers and enterprise architects, despite Sun Microsystems and Oracle renaming the standard to Java EE. In my opinion, this is an example of <code>#Fail!<\/code>.\n<\/div>\n<\/div>\n<p><!-- popup1 --><\/p>\n<div id=\"popup2\" class=\"popover-box d-none\">\n<div class=\"popover-heading\">EE4J<\/div>\n<div class=\"popover-body\">\nIt would appear that Eclipse Foundation are at the time of writing failing or ignore the branding name issue. When J2EE was rebranded to Java EE, it didn&#8217;t work. The exercise never triggered renew interest in Java enterprise programming. Go and see any Java development job board anywhere in the world, I bet you find and read a description asking for J2EE development experience, for a technology that was ended by 2007 (Java EE 5).\n<\/div>\n<\/div>\n<p><!-- popup2 --><\/p>\n<p> &nbsp; <\/p>\n<p> &nbsp; <\/p>\n<p><a data-flickr-embed=\"true\"  href=\"https:\/\/www.flickr.com\/photos\/8268882@N06\/37518199312\/in\/album-72157687023515890\/\" title=\"IMG_6915\"><img src=\"https:\/\/farm5.staticflickr.com\/4457\/37518199312_5fdafeb43d_c.jpg\" class=\"d-block mx-auto  img-fluid\" alt=\"IMG_6915\"><\/a><script async src=\"\/\/embedr.flickr.com\/assets\/client-code.js\" charset=\"utf-8\"><\/script><\/p>\n<p class=\"text-center\"> <small> JavaOne 2017 will be remembered for the surge of interest in Java 9 modules and migration <\/small><\/p>\n<p>&nbsp;<\/p>\n<div class=\"panel panel-default\">\n<div class=\"panel-body\">\n    Just what are these funny medicine pill buttons <a class=\"\" tabindex=\"0\" role=\"button\"  style=\"cursor: pointer;\" data-toggle=\"x-popover\"  data-trigger=\"focus\" data-placement=\"bottom\" data-popover-content=\"#popup0\"><span class=\"badge badge-pill badge-primary\">#0<\/span><\/a>? (Click on me)\n  <\/div>\n<\/div>\n<p><!-- panel panel-default --><\/p>\n<div id=\"popup0\" class=\"popover-box d-none\">\n<div class=\"popover-heading\">Popover<\/div>\n<div class=\"popover-body\">\nThese are popover dialogs that go with the article and provide additional information to the audience<br \/>\nin my writing. Finger or press your mouse button off the dialog to dismiss these handy notes!\n<\/div>\n<\/div>\n<p><!-- popup0 --><\/p>\n<p> &nbsp; <\/p>\n<p> &nbsp; <\/p>\n<blockquote><p>\n&#8220;Moving Java EE to the Eclipse Foundation is going to be an exciting and massive undertaking. It is a significant opportunity to use the Eclipse open development model to accelerate innovation in Java for enterprise and cloud native computing.&#8221;<\/p>\n<footer>Mike Milinkovich, <cite title=\"Source Title\"> <a href=\"https:\/\/mmilinkov.wordpress.com\/2017\/09\/28\/introducing-ee4j\/\">Introducing EE4J <\/a> <\/cite> <\/footer>\n<\/blockquote>\n<h2> Accelerating Microprofile <\/h2>\n<p>At JavaOne, I attended the session <em>Panel: Accelerating the Adoption of Java EE 8 with MicroProfile<\/em> panel session with David Blevins (Tomitribe), John Clingan (Red Hat), Mike Croft (Payara), Mark Little (Red Hat) and Kevin Sutter (IBM). I also witnessed David Delabass\u00e9e and Linda DeMichel attending the same session sitting along the back. I could imagine that the two Oracle folk felt a little strange in the circumstance passing on the responsibility of Java EE to the Eclipse Foundation representatives on the panel. The mood of the session was generally in a warm spirit and the panel were approachable. When asked about the future of <em>enterprise edition profiles<\/em>, David Blevins, said that he hoped that <em>Web Profile<\/em> would continue, especially because Tom EE is based on it. Tomitribe had to jump through hoops in order to release a 2016 edition of their solution. &#8220;Tomitribe took a long time to write a Java EE 7 container, because we didn&#8217;t want to endure the expense of the TCK [Technology Compatibility Kit]. Apache Tom EE is based on the Web Profile, so it is paramount that it survives. There were lots of bugs, issues and differences in how application server tests were done in our Java EE 7 port. It was very hard without access to the proper framework. Moving to Eclipse should ensure that we solve that problem forever.&#8221;<\/p>\n<p><strong>John Clingan<\/strong> also offered, &#8220;In the future, there might be more <em>profile<\/em>, but at this point we just don&#8217;t know and it is way too early to decide. Going forward the Full Profile and Web Profile will be supported.&#8221;<\/p>\n<p><strong>Mark Little <\/strong>said, &#8220;The Microprofile is intended for innovation. A standard process is not the best place for innovation. Libraries that get proven within the Microprofile ought to be considered for a future EE standard.&#8221; From my own perspective, I liked the fact that representative panel were open to new ideas and had plans to reach out to developers, designers and architects. The panel encouraged the community to get involved with EE4J as quickly as possible. <\/p>\n<div class=\"content-sidebar pull-right\">\n<h3> MVC 1.0 to Eclipse Foundation<\/h3>\n<p>Java EE 8 was supposed to provide a lean Model View Controller (MVC) specification for action based web frameworks under the<br \/>\nJSR-371. However, because the umbrella specification was seriously delayed [because of Oracle&#8217;s Cloud Native internal work and resources] the MVC specification 1.0 was removed from the Java EE 8 specification in September 2016. Oracle agreed to transfer MVC JSR intellectual property to Ivar Grimstad. Just after JavaOne 2017, the late breaking news is that <a href=\"https:\/\/www.agilejava.eu\/2017\/10\/11\/mvc-1-0-goes-to-eclipse-foundation\/\">MVC is now transfered to the EE4J and the Eclipse Foundation<\/a>. There is an accompanying <a href=\"https:\/\/dev.eclipse.org\/mhonarc\/lists\/ee4j-community\/msg00106.html\">email message<\/a> to confirm this story.\n<\/div>\n<p>During the conference, <strong>Mark Cavage<\/strong> was at pains to outline the reason to transfer Java EE to the Eclipse Foundation. Oracle wanted a faster progressive release, but it wanted to turn over the responsibility to the Java EE licensees and the community. Cavage appealed to the wider Java community to embrace the transfer of #JavaEE during the keynot. However at the during the same keynote, <strong>Spotify<\/strong>&#8216;s&#8217; Cloud Director, <strong>Niklas Gustavsson<\/strong> revealed that his company went from being a PHP shop to agile developer-operation Java development engineering teams with 1200 microservice in production. At an earlier conference keynote with Intel&#8217;s <strong>Michael Greene<\/strong> introduced <strong>Kingsum Chow<\/strong>, chief scientist Alibaba, who told the world that I they employ 10,000 Java programmers. Alibabi execute 1,000,000 JVM instances in their distributed production environment. The company serves 12.5 Billion hits on Single Day far ahead of the USA&#8217;s Thanksgiving. <\/p>\n<h2> Analysis: Microprofile versus Spring Boot<\/h2>\n<p>Whilst transferring the responsibility of Java EE is to be applauded, I couldn&#8217;t help to feel that the platform is left far behind where it should have been. The current Java EE 8 solution could not support Spotify&#8217;s infrastructure. It is difficult to see how any modern Java EE application server (in full profile) can reach this deployment of 1200 JVM instances. Consequently, Oracle turned its attention to the target that it thinks lies behind Microservices\/SOA. The idea of so-called <em>Serverless<\/em> computing is appealing to many. Instead explicit marshalling of data between sets of APIs, REST or SOAP or otherwise, launching functions across a network boundary, which appear to be seamless and orchestrated on a dynamic distributed thread pool executor matrix could be the answer. Despite, whatever warnings from history, every sort of easy abstraction ultimately adds a level of accidental complexity to application and it is that leakage of the abstraction that can never be quite suppressed to zero, which causes inflexibility, bit-rot and technical debt, Oracle have invested heavy into <a href=\"https:\/\/github.com\/fnproject\">FN Project<\/a>, <a href=\"https:\/\/www.wercker.com\/\">Wercker<\/a> and <a href=\"https:\/\/apiary.io\/\">Apiary.IO<\/a>. Java EE traditionally based on Web Archive, Enterprise Archive Zip file and deployment into remote pooled bean containers and servlet containers inside a monolithic architecture might have had it&#8217;s day. <\/p>\n<p>Modern organisations want a flexible and sustainable architecture without the cruft of a monolithic container that blocks the scalability and high availability of user \/ customer demand. It is for this reason, <a href=\"https:\/\/projects.eclipse.org\/projects\/technology.microprofile\/releases\/microprofile-1.2\/plan\"><strong>Microprofile<\/strong><\/a>, was defined to appear to streamline the multitude of JSRs, library and components for a Java EE enterprise application. My own fear is that the Microprofile falls way behind the surge in interest <a href=\"https:\/\/projects.spring.io\/spring-boot\/\"><strong>Pivotal&#8217;s Spring Boot Project<\/strong><\/a>. At best, this delay is one year and at its worst, it could be three years, at which point the competition would be game over. As I write these musing in early October 2017, let me just say, the current job descriptions for contract and permanent engineers who know Spring Boot, Java 8, Agile and microservices architecture, in London and Home Counties, UK  have exploded. <\/p>\n<p>The question is why has this occurred? What is behind the popularity of Spring Boot as a soluition? <\/p>\n<ul>\n<li>Spring Boot compatible layers and library component integrate very well with each<\/li>\n<li>Widespread annotation configuration and conventions <\/li>\n<li>No XML required, if any. Developer prefer YAML files for configuration<\/li>\n<li>Works with Tomcat, Jetty or Undertow<\/li>\n<li>Well designed Metrics library<\/li>\n<li>Many developer already have familiarity with other existing Spring project components: IOC, Data, Web, MVC, REST, Security, Integration, Social etc<\/li>\n<\/ul>\n<p>Perhaps the most significant development with Spring Boot applications is that Pivotal offers its own cloud hosting under <a href=\"https:\/\/pivotal.io\/platform\"><strong>Cloud Foundry<\/strong><\/a> <a href=\"https:\/\/projects.eclipse.org\/projects\/technology.microprofile\/releases\/microprofile-1.2\/plan\">Microprofile 1.2<\/a> <a class=\"\" tabindex=\"0\" role=\"button\"  style=\"cursor: pointer;\" data-toggle=\"x-popover\"  data-trigger=\"focus\" data-placement=\"bottom\" data-popover-content=\"#popup7\"><span class=\"badge badge-pill badge-primary\">#7<\/span><\/a>. Spring Boot fits in very well with the [SEC-]DEV-OPS mindset of Docker containers, composability and elastic deployments. Microprofile does not offer any native cloud support [yet]. Developers have to build their own supporting deployment infrastructure with Microprofile. At the time of writing, <a href=\"https:\/\/projects.eclipse.org\/projects\/technology.microprofile\/releases\/microprofile-1.2\/plan\">Microprofile 1.2<\/a> <a class=\"\" tabindex=\"0\" role=\"button\"  style=\"cursor: pointer;\" data-toggle=\"x-popover\"  data-trigger=\"focus\" data-placement=\"bottom\" data-popover-content=\"#popup3\"><span class=\"badge badge-pill badge-primary\">#3<\/span><\/a> only has these functionality from the Java EE 7 \/ Java EE 8 specifications, namely: JAX-RS, Bean Validation, CDI, Config, Fault Tolerance and Health Metrics.<\/p>\n<div id=\"popup3\" class=\"popover-box d-none\">\n<div class=\"popover-heading\">Microprofile<\/div>\n<div class=\"popover-body\">\n\tThe Microprofile was launched in September 2016 as a reaction to Oracle&#8217;s lack of commit and push for Java EE 8.\n<\/div>\n<\/div>\n<p><!-- popup3 --><\/p>\n<div id=\"popup7\" class=\"popover-box d-none\">\n<div class=\"popover-heading\">Cloud Foundry<\/div>\n<div class=\"popover-body\">\n<a href=\"https:\/\/en.wikipedia.org\/wiki\/Cloud_Foundry\">Cloud Foundry<\/a> was originally a pet project started by fellow Java Champion, <strong>Chris Richardson<\/strong>. He later sold it to then <strong>Spring Source<\/strong> in 2008, and in 2009 <strong>VMWare Inc<\/strong> acquired Spring Source. Alas, Chris Richardson may have missed out on Squillions of US Dollars!\n<\/div>\n<\/div>\n<p><!-- popup7 --><\/p>\n<h2> Ramifactions <\/h2>\n<p>Let&#8217;s step back a bit and consider the ramifications for Microprofile, what would it need to have to successful in, say, 12 to 18 months time in the future. Consider the hardware specification of trusty Apple iMac computer. Suppose we went into an Apple store to buy ten of these popular development machines for a new software engineering team, and suppose want to allocate them to pair-development programming and we are going to building microservices for the new project. We don&#8217;t care about the vertical sector: industry could be retail, financial, shipping, government or just digital e-commerce. I would recommend spending all of the money that you can to get the best specification available. In the UK, this would be the top range model<\/p>\n<ul>\n<li>Retina 5K Display<\/li>\n<li>3.8GHz Processor<\/li>\n<li>2TB Storage<\/li>\n<li>3.8GHz quad-core 7th-generation Intel Core i5 processor<\/li>\n<li>Turbo Boost up to 4.2GHz<\/li>\n<li>8GB 2400MHz memory, configurable up to 64GB<\/li>\n<li>2TB Fusion Drive1<\/li>\n<li>Radeon Pro 580 with 8GB video memory\n<li>Two Thunderbolt 3 ports<\/li>\n<li>Retina 5K 5120&#215;2880 P3 display<\/li>\n<li>Total cost:\u00a32,249.00<\/li>\n<\/li>\n<p>Why? Because of what we are going to do as a team, we will be writing 25 separate micro-services, at best guess, and that means every development-pair would be launching at 25 Java Virtual Machines simultaneously during their working day. The reason is <strong>END-TO-END TESTING<\/strong> <a class=\"\" tabindex=\"0\" role=\"button\"  style=\"cursor: pointer;\" data-toggle=\"x-popover\"  data-trigger=\"focus\" data-placement=\"bottom\" data-popover-content=\"#popup4\"><span class=\"badge badge-pill badge-primary\">#4<\/span><\/a>.  All considered, that our new team, are building against the final JDK 8 update 144 release just before Java 9 went GA, and have yet to migrate to Java 9 and Modules. <\/p>\n<div id=\"popup4\" class=\"popover-box d-none\">\n<div class=\"popover-heading\">CI \/ CD<\/div>\n<div class=\"popover-body\">\nYes. I do know there are some very advanced digital and highly Agile team out there already working with microservices and when they commit code it deploys directly to a cloud environment. I also know that sophisticated can also remote debug applications in a cloud sector, but bare with me for this article*, most SME are not definitely not Netflix, Facebook, etc.\n<\/div>\n<\/div>\n<p><!-- popup4 --><\/p>\n<div class=\"content-sidebar pull-right\">\n<h3> Microservices Performance<\/h3>\n<p>As an engineer I have witnessed the high resource demands for newly minted micro-services applications <a class=\"\" tabindex=\"0\" role=\"button\"  style=\"cursor: pointer;\" data-toggle=\"x-popover\"  data-trigger=\"focus\" data-placement=\"bottom\" data-popover-content=\"#popup6\"><span class=\"badge badge-pill badge-primary\">#6<\/span><\/a>. Consider that a modern editor like NetBeans, Eclipse and IDEA will chew up memory and CPU for their own demands. Most of developers at some stage in their project, have had to fine-tune the memory of IDE on their workstation by adding a JVM parameter into increase the maximum memory <code>-Xmx1535m<\/code> beyond the default value. Also projects tend be across scores of firm-wide code repositories, it is not uncommon to find yourself with six window frames of code during the day. During the day, spinning up 25 Java 8 JVM instances on a single iMac (or PC) takes its toll. Executing all of the JVM instances with <code>-Xmx1024<\/code> requirements is going take serious grunt. The hope is with Java 9, in a well-thought out modularised microservices application, this demand on memory and CPU is less. Well for instance, why do we need corba.jar, awt.jar and swing.jar in a server-side application (actually these JARs did not officially exist pre-Java 9 JDKs, because the traditional JVMs (pre-version 9 jigsaw) all shared a library <code>rt.jar<\/code>. Modularity means this runtime <code>rt.jar<\/code> and replaced by a potential small Java Runtime Environment for each microservices.\n<\/div>\n<div id=\"popup6\" class=\"popover-box d-none\">\n<div class=\"popover-heading\">CI \/ CD<\/div>\n<div class=\"popover-body\">\nThis sidebar is an addendum to the first version of the article. Some engineers wanted information about the memory and performance issues of running JVM instances on a single laptop or desktop.\n<\/div>\n<\/div>\n<p><!-- popup6 --><\/p>\n<p>Are you starting to get the picture of why we need so much on their grunt on these development machines? In the traditionally Java EE world of full profile application servers, would you envision launching 25 WildFly 10 servers or 25 WebLogic servers simultaneously from a Bash script? The machine would grind to halt, if we could only beg the management for Dell Windows Vista desktop PC from the year 2007. Hence new microservices development incurs are high hardware, software and a human resourcing cost for most businesses. However, if you launched 25 Tom EE, Plain Tomcat, Jetty or may be Payara Micro instance, you might get away with it, but still. When we are in environment where we launch 25 microservices on a single machine, not inside a Docker container, we also are going to running an IDE be it Eclipse or, better yet, IDEA Ultimate. Our programming language editor of choice had better be lean and mean with our limited CPU resources, especially if we choose to launch a few of those JVM instance in Run\/Debug configuration mode, and especially when we are investigating a crucial issue in our code-bases (note the plural in that last word). <\/p>\n<p>So when we run our <code>E2E<\/code> testing, we must ensure the <strong>Identity Instance Runtime Profile<\/strong> is viable. In other words, by running tests where there at least one instance of our microservice in our distributed application, we have a baseline and confidence that will scale in production <a class=\"\" tabindex=\"0\" role=\"button\"  style=\"cursor: pointer;\" data-toggle=\"x-popover\"  data-trigger=\"focus\" data-placement=\"bottom\" data-popover-content=\"#popup5\"><span class=\"badge badge-pill badge-primary\">#5<\/span><\/a>. <\/p>\n<div id=\"popup5\" class=\"popover-box d-none\">\n<div class=\"popover-heading\">Testing M\/SOA<\/div>\n<div class=\"popover-body\">\nOf course this is not the whole story, but run with it for now. In fact, checking viability of microservices is a complexity job and there are lots of considerations of how best to get the right heuristics.\n<\/div>\n<\/div>\n<p><!-- popup5 --><\/p>\n<h2> Are the pennies dropping yet? <\/h2>\n<p>If you have been following my blog, you will know probably that I claimed JDK 9 is a game changer for about two years now. Consider that JDK 9 and modules allows you strip down your Java Runtime to only the modules that you need in your application. Are the pennies dropping yet? Suppose I told the engineering team today, that JDK 9 is released, let move to Java 9 and upgrade from Java 8. What do you think that will do with the 25 JVM instances that we run in our <code>E2E<\/code> tests? Suddenly, it will be far easier to launch the 25 instances, it also means I could scale the instances up to 50 or add more micro-services on a single machine. What do you think excites the Chinese developers working on Alibaba services? What happens if you develop not on a iMac, but instead on a laptop machine, MacBook Pro retina? Suppose you are disconnected from the Internet for hours on end or work in a remote location? <\/p>\n<blockquote><p>\n&#8220;I state for the record that I hold no grudge against Microprofile.IO project, I just believe that it is lagging behind the success of the Spring Boot project&#8221;\n<\/p><\/blockquote>\n<p>So these ruminations, I believe the Microprofile has to jump immediately in Java 9 and modularisation. I am not sure if WildFly is already there with JDK9 support, but I would like to think that some of the smaller players like <a href=\"https:\/\/ee.kumuluz.com\/\"><strong>KumuluzEE<\/strong><\/a> and <a href=\"https:\/\/www.tomitribe.com\/\/\"><strong>Tomitribe<\/strong><\/a> can get there faster and with more agility. Other than <a href=\"https:\/\/javaee.github.io\/glassfish\/download\"><strong>GlassFish 5<\/strong><\/a>, there are no other certified Java EE 8 production application servers. I state for the record that I hold no grudge against Microprofile.IO project, I just believe that it is lagging behind the success of the Spring Boot project. I think Microprofile is best thing to happen to the future EE4J standard, now that an Oracle led and JCP defined Java EE 9 is non-existent. I also believe solving the Java 9 and enterprise edition platform support and integration is where Microprofile can catch up, improve and get strategically ahead of Spring Boot. If the vendors behind Microprofile initiative can do that, then happy days will be orange and great. So here&#8217;s hoping for it in 2018!<\/p>\n<p>*PP*<br \/>\nOctober 2017<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I left the second article with the feeling of a less ostentatious technology conference about JavaOne 2017. On the other hand, the conference was packed with information on where Java the language, the runtime and platform with community are going to. In this third article, I want to dig into the future of Java EE [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[58,21,4,110,102],"tags":[],"_links":{"self":[{"href":"https:\/\/www.xenonique.co.uk\/blog\/wp-json\/wp\/v2\/posts\/2508"}],"collection":[{"href":"https:\/\/www.xenonique.co.uk\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xenonique.co.uk\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xenonique.co.uk\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xenonique.co.uk\/blog\/wp-json\/wp\/v2\/comments?post=2508"}],"version-history":[{"count":21,"href":"https:\/\/www.xenonique.co.uk\/blog\/wp-json\/wp\/v2\/posts\/2508\/revisions"}],"predecessor-version":[{"id":2538,"href":"https:\/\/www.xenonique.co.uk\/blog\/wp-json\/wp\/v2\/posts\/2508\/revisions\/2538"}],"wp:attachment":[{"href":"https:\/\/www.xenonique.co.uk\/blog\/wp-json\/wp\/v2\/media?parent=2508"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xenonique.co.uk\/blog\/wp-json\/wp\/v2\/categories?post=2508"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xenonique.co.uk\/blog\/wp-json\/wp\/v2\/tags?post=2508"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}