{"id":4606,"date":"2020-05-06T15:34:13","date_gmt":"2020-05-06T13:34:13","guid":{"rendered":"https:\/\/www.codemotion.com\/magazine\/?p=4606"},"modified":"2022-01-05T20:04:56","modified_gmt":"2022-01-05T19:04:56","slug":"quarkus-cloud-native-containers-based-development-java-framework","status":"publish","type":"post","link":"https:\/\/www.codemotion.com\/magazine\/devops\/cloud\/quarkus-cloud-native-containers-based-development-java-framework\/","title":{"rendered":"Cloud-native, Containers-based development: Quarkus revamps Java"},"content":{"rendered":"\t\t\t\t<div class=\"wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-94f31e93-9f25-4df3-97d3-51c1b1851277      \"\n\t\t\t\t\tdata-scroll= \"1\"\n\t\t\t\t\tdata-offset= \"30\"\n\t\t\t\t\tstyle=\"\"\n\t\t\t\t>\n\t\t\t\t<div class=\"uagb-toc__wrap\">\n\t\t\t\t\t\t<div class=\"uagb-toc__title\">\n\t\t\t\t\t\t\tTable Of Contents\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"uagb-toc__list-wrap \">\n\t\t\t\t\t\t<ol class=\"uagb-toc__list\"><li class=\"uagb-toc__list\"><a href=\"#explore-cloud-native-computing\" class=\"uagb-toc-link__trigger\">Explore Cloud Native Computing<\/a><li class=\"uagb-toc__list\"><a href=\"#designed-for-developers\" class=\"uagb-toc-link__trigger\">Designed for developers<\/a><li class=\"uagb-toc__list\"><a href=\"#container-first-environment\" class=\"uagb-toc-link__trigger\">Container-first environment<\/a><li class=\"uagb-toc__list\"><a href=\"#imperative-and-reactive-code\" class=\"uagb-toc-link__trigger\">Imperative and reactive code<\/a><li class=\"uagb-toc__list\"><a href=\"#microservices-on-ibm-cloud-kubernetes-service\" class=\"uagb-toc-link__trigger\">Microservices on IBM Cloud Kubernetes Service<\/a><li class=\"uagb-toc__list\"><a href=\"#the-challenges-of-reactive-applications\" class=\"uagb-toc-link__trigger\">The challenges of reactive applications<\/a><li class=\"uagb-toc__list\"><a href=\"#explore-cloud-native-computing\" class=\"uagb-toc-link__trigger\">Explore Cloud Native Computing<\/a><\/ol>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\n\n\n<div class=\"uagb-cta__outer-wrap uagb-block-a2cb8af4-d247-4414-8977-72c7cfca84bc\"><div class=\"uagb-cta__content-wrap uagb-cta__block uagb-cta__icon-position-right uagb-cta__content-right uagb-cta__content-stacked-tablet uagb-cta__button-valign-middle \"><div class=\"uagb-cta__left-right-wrap\"><div class=\"uagb-cta__content\"><div class=\"uagb-cta__title-wrap\"><h3 class=\"uagb-cta__title\">Explore Cloud Native Computing<\/h3><\/div><div class=\"uagb-cta-text-wrap\"><p class=\"uagb-cta__desc\">On March 3 2020, IBM held a conference to give developers insights into key technologies required to rapidly build secure applications that can be managed and optimized across multiple cloud providers.<br>If you missed it, worry not! You can still replay its entire content list.<\/p><\/div><\/div><div class=\"uagb-cta__link-wrapper uagb-cta__block-link-style\"><div class=\"uagb-cta__button-wrapper\"><a href=\"https:\/\/ibm.co\/3e07ehN\" class=\"uagb-cta__block-link uagb-cta__button-link-wrapper uagb-cta-typeof-button\" target=\"_blank\" rel=\"noopener noreferrer\"><span class=\"uagb-cta__link-content-inner\"><span>Replay<\/span><\/span><\/a><\/div><\/div><\/div><\/div><\/div>\n\n\n\n<p><strong style=\"user-select: auto;\"><span style=\"user-select: auto;\" id=\"urn:enhancement-8ae446ff\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/java\">Java<\/span><\/strong> contributed to making a significant impact on the history of <span style=\"user-select: auto;\" id=\"urn:enhancement-4aad32ae\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/rewrite_programming\">programming<\/span> like few other coding languages but, as time passes, it is constantly being sidelined by other frameworks offering different <span style=\"user-select: auto;\" id=\"urn:enhancement-8270654f\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/performance\">performances<\/span> in terms of <span style=\"user-select: auto;\" id=\"urn:enhancement-d8ca4fbf\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/resource\">resources<\/span> and flexibility.<\/p>\n\n\n\n<p>In contrast, <span id=\"urn:enhancement-efbae3ca\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/java_software_platform\">Java-based<\/span> solutions are very well known and can still offer a great path to cloud-based <span id=\"urn:enhancement-9a6b0987\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/application_software\">applications<\/span> such as <span id=\"urn:enhancement-8c554c88\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/reactive_programming\">reactive programming<\/span>, serverless computing, and <span id=\"urn:enhancement-3a5f9ea1\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/containerization\">container<\/span>-based <span id=\"urn:enhancement-234aef54\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/application_software\">applications<\/span>.&nbsp;<\/p>\n\n\n\n<p><strong>Niklas Heidloff<\/strong>, <span id=\"urn:enhancement-b2b2eff5\" class=\"textannotation disambiguated wl-organization\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/ibm\">IBM<\/span> <span id=\"urn:enhancement-89c729c5\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/software_developer\">Developer<\/span> Advocate, has written many technical <a aria-label=\" (opens in a new tab)\" href=\"http:\/\/heidloff.net\/article-development-reactive-applications-quarkus\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" class=\"ek-link\">blog posts<\/a> in this area and thus we asked for his contribution as part of a deep dive. Niklas shares our passion for coding and finding new solutions.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>&#8220;I find this work amazing because we learn new technologies every day. We talk to other developers to improve our skills. This is the best job in the world!&#8221;<\/p><\/blockquote>\n\n\n\n<p>Being a <span id=\"urn:enhancement-981fd104\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/programmer\">programmer<\/span> is very exciting today, he details: &#8220;<em>It&#8217;s so much easier to get started than in the past as you just rely on <span id=\"urn:enhancement-91c571ba\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/cloud\">cloud<\/span> or other self-service solutions, and with two clicks they free you of the code part<\/em>&#8220;. And then he adds about the continuous renewal of the coding ecosystem: &#8220;<em>The new trend in programming techniques is MVM, micro <span id=\"urn:enhancement-200a4749\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/virtual_machine\">virtual machine<\/span><\/em>&#8220;, explains Niklas, &#8220;<em>and the <span id=\"urn:enhancement-c11db2b4\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/containerization\">container<\/span> approach is one of the solutions offered in this area, where the key is to split the <span id=\"urn:enhancement-c4a71b36\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/application_software\">applications<\/span> into modules<\/em>&#8220;.<\/p>\n\n\n\n<p>The year 2020 is a very interesting time for <span id=\"urn:enhancement-14381efb\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/java\">Java<\/span>, he declares: &#8220;<em>This language was declared dead too soon!<\/em>&#8220;, he grins, &#8220;<em><span id=\"urn:enhancement-1f628cef\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/java\">Java<\/span> is still alive and kicking for several reasons. To name one, the number of enthusiasts is too high and giving up would be a shame<\/em>&#8220;.<\/p>\n\n\n\n<p>Indeed, many new initiatives have recently given more life to <span id=\"urn:enhancement-620539ab\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/java\">Java<\/span>. In particular, <strong>Quarkus<\/strong>, upon which Niklas Heidloff predicts: &#8220;<em>Quarkus effects will span over the next few years: it is easy and fun to use and gives <span id=\"urn:enhancement-7cc810c4\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/java_software_platform\">Java<\/span> the boost it needed<\/em>&#8220;.<\/p>\n\n\n\n<p>Put this way, Quarkus really seems the best of both worlds &#8211; <span id=\"urn:enhancement-5c099fa4\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/java\">Java<\/span> and <span id=\"urn:enhancement-d36befcb\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/cloud\">Cloud<\/span> &#8211; to build cloud-native <span id=\"urn:enhancement-966dd0b9\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/application_software\">applications<\/span>. But to make sense of it, it is necessary to <a aria-label=\" (opens in a new tab)\" href=\"https:\/\/developer.ibm.com\/digitalconference\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" class=\"ek-link\">know more<\/a> about it and its context.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What is Quarkus?<\/h2>\n\n\n\n<p>Quarkus is a full-stack, Kubernetes-native <span id=\"urn:enhancement-67fddd02\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/java_software_platform\">Java<\/span> framework made for <span id=\"urn:enhancement-57897865\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/java_software_platform\">Java<\/span> <span id=\"urn:enhancement-28a69efc\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/virtual_machine\">Virtual Machines<\/span> and native compilation. It optimizes <span id=\"urn:enhancement-3342cf1f\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/java\">Java<\/span> specifically for <span id=\"urn:enhancement-fbd61dd1\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/container_abstract_data_type\">containers<\/span> and enables it to become an effective platform for serverless, <span id=\"urn:enhancement-9a25cf7\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/cloud\">cloud<\/span>, and <span id=\"urn:local-annotation-962833\" class=\"textannotation disambiguated\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/kubernetes\">Kubernetes<\/span>.<\/p>\n\n\n\n<p>It is designed to work with popular <span id=\"urn:enhancement-eb23ce52\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/java_software_platform\">Java<\/span> standards, frameworks, and libraries like <span id=\"urn:enhancement-4ed318be\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/eclipse_software\">Eclipse<\/span> MicroProfile, <span id=\"urn:enhancement-2288003b\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/apache_kafka\">Apache Kafka<\/span>, RESTEasy (<span id=\"urn:enhancement-6c77669c\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/java_api_for_restful_web_services\">JAX-RS<\/span>), <span id=\"urn:enhancement-cc02b0a7\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/hibernate_java\">Hibernate<\/span> <span id=\"urn:enhancement-a17e0d9\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/object-relational_mapping\">ORM<\/span> (<span id=\"urn:enhancement-a39c1fb3\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/java_persistence_api\">JPA<\/span>), <span id=\"urn:enhancement-3480bb88\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/spring_framework\">Spring<\/span>, <span id=\"urn:enhancement-6a9fb266\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/infinispan\">Infinispan<\/span>, <span id=\"urn:enhancement-5a6bbdea\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/apache_camel\">Camel<\/span>, and many more.<\/p>\n\n\n\n<p>Quarkus is based on a <span id=\"urn:enhancement-ae75621e\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/java_community_process\">CDI<\/span> framework. Its dependency injection solution focuses on contexts and dependency injection, and includes an extension framework needed to <span id=\"urn:enhancement-6eb3d59\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/configure_script\">configure<\/span>, <span id=\"urn:enhancement-6eac90df\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/booting\">boot<\/span>, and integrate a framework into your <span id=\"urn:enhancement-ecb87e6b\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/application_software\">application<\/span>. Simply put, Quarkus also offers <span id=\"urn:enhancement-bcc93ed8\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/programming_tool\">tools<\/span> to add extensions.<\/p>\n\n\n\n<p>Additionally, Quarkus also provides the correct information to GraalVM for the native compilation of your <span style=\"user-select: auto;\" id=\"urn:enhancement-b4a7c6cf\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/application_software\">application<\/span>. Just in case you&#8217;re not aware of it, GraalVM is a polyglot virtual machine that makes your <span style=\"user-select: auto;\" id=\"urn:enhancement-c178a50e\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/java_software_platform\">Java<\/span>\/<span style=\"user-select: auto;\" id=\"urn:enhancement-d192d98a\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/javascript\">Javascript<\/span> able to talk with several languages, giving your app a fast start-up and a smaller <span style=\"user-select: auto;\" id=\"urn:enhancement-2a9072da\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/memory_footprint\">memory footprint<\/span>, often welcome in <span style=\"user-select: auto;\" id=\"urn:enhancement-a7071fa1\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/java_software_platform\">Java<\/span>-based <span style=\"user-select: auto;\" id=\"urn:enhancement-c763396b\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/application_software\">applications<\/span>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Designed for developers<\/h3>\n\n\n\n<p>Quarkus was built around a <span id=\"urn:enhancement-f018c9aa\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/containerization\">container<\/span>-first philosophy and with an eye for <span id=\"urn:enhancement-1d9f2f10\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/software_developer\">developers<\/span>\u2019 enjoyment. It was designed to be easy to use right from the start as its features allow a <span id=\"urn:enhancement-f6bc9673\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/software_developer\">developer<\/span> to code with little to no <span id=\"urn:enhancement-86fdf878\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/computer_configuration\">configuration<\/span> issues.<\/p>\n\n\n\n<p>The <span id=\"urn:enhancement-9b547874\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/java_software_platform\">Java<\/span> framework of choice can be run in <span id=\"urn:enhancement-5f26967c\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/java_virtual_machine\">JVM<\/span> mode, or compiled and run in native mode. Quarkus also supports <span id=\"urn:enhancement-e698b60d\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/live_coding\">live coding<\/span>, unified imperative and <span id=\"urn:enhancement-b5cf5cd0\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/reactive_programming\">reactive programming<\/span>, unified <span id=\"urn:enhancement-c4d70ee4\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/computer_configuration\">configuration<\/span>, and easy native executable generation. Thus, <span id=\"urn:enhancement-6dea5183\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/software_developer\">developers<\/span> can check the effect of code changes in real-time thanks to <span id=\"urn:enhancement-d688b6f8\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/live_coding\">live coding<\/span>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Container-first environment<\/h3>\n\n\n\n<p>Fast startup and low memory consumption are important characteristics, independent of the execution environment. Whether your <span id=\"urn:enhancement-f872099f\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/application_software\">application<\/span> is running on a public <span id=\"urn:enhancement-534da3bd\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/cloud\">cloud<\/span> or in an internally hosted Kubernetes cluster, you need to boost execution while keeping costs down.<\/p>\n\n\n\n<p>Quarkus was built around a container-first philosophy. This means that it is optimized for lower <span id=\"urn:enhancement-f36b9092\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/memory_debugger\">memory usage<\/span> and faster startup times in the following ways:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>First-class support for Graal\/SubstrateVM;<\/li><li>Build-time metadata processing;<\/li><li>Reduction in reflection usage;<\/li><li>Native image pre-boot.<\/li><\/ul>\n\n\n\n<p>Quarkus creates <span id=\"urn:enhancement-78076a99\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/application_software\">applications<\/span> that consume 1\/10th of the memory when compared to traditional <span id=\"urn:enhancement-a1c95dfe\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/java\">Java<\/span>, with a faster startup time: up to 300 times faster! Clearly, this greatly reduces the cost of <span id=\"urn:enhancement-82440ad7\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/cloud\">cloud<\/span> <span id=\"urn:enhancement-2f059fc3\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/resource\">resources<\/span>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Imperative and reactive code<\/h3>\n\n\n\n<p>Let&#8217;s now explore reactive <span id=\"urn:enhancement-aad7c499\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/rewrite_programming\">programming<\/span> and its combination with <span id=\"urn:enhancement-899fbeb9\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/java_programming_language\">Java&#8217;s<\/span> imperative coding method. Quarkus is designed to seamlessly combine the familiar imperative style code and the non-blocking, reactive style when developing applications.<\/p>\n\n\n\n<p>This is helpful for both Java developers who are used to working with the imperative model and don\u2019t want to switch, and those working with a <span id=\"urn:enhancement-f75b24b\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/cloud\">cloud<\/span>-native\/reactive approach. The Quarkus development model can adapt itself to whatever app you\u2019re developing.&nbsp;<\/p>\n\n\n\n<p>Quarkus has it all to be a truly <span id=\"urn:enhancement-4585902a\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/decision-making\">effective solution<\/span> for running <span id=\"urn:enhancement-47052edb\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/java\">Java<\/span> in the new scenario made of serverless architecture, <span id=\"urn:enhancement-d770f3b2\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/microservices_2\">microservices<\/span>, containers, Kubernetes, function-as-a-service (FaaS), and <span id=\"urn:enhancement-aad396a2\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/cloud\">cloud<\/span>. After all, it was created with all these things in mind.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The future is Java-driven!<\/h2>\n\n\n\n<p>\u201cI think Quarkus is a game changer and will change the landscape of enterprise development\u201d, says Niklas. The <span id=\"urn:enhancement-e369e2c9\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/java_software_platform\">Java<\/span> world is under a constant revolution, as the new <span id=\"urn:enhancement-9180878b\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/virtual_machine\">virtual machine<\/span>, OpenJ9, demonstrates. This version has a low-<span id=\"urn:enhancement-b165620d\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/memory_footprint\">memory footprint<\/span>, but boosts <span id=\"urn:enhancement-b012ff8c\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/performance\">performances<\/span> in full compliance to the <span id=\"urn:enhancement-c3c3f8f6\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/java_virtual_machine\">JVM<\/span> specifications. \u201cQuarkus, together with OpenJ9, is a perfect fit for container workloads so that enterprise <span id=\"urn:enhancement-b5cbaa34\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/software_developer\">developers<\/span> with <span id=\"urn:enhancement-e18bfe98\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/java_software_platform\">Java<\/span> skills can build modern cloud-native <span id=\"urn:enhancement-3704e772\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/application_software\">applications<\/span>\u201d.<\/p>\n\n\n\n<p>Talking about <span id=\"urn:enhancement-c0796357\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/container_abstract_data_type\">containers<\/span>, one of the best online <span id=\"urn:enhancement-2d77074\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/resource\">resources<\/span> is the <span id=\"urn:enhancement-76290fc\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/cloud_computing\">Cloud<\/span> Native track of the <a href=\"https:\/\/ibm.co\/3e07ehN\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">IBM Digital Dev Conference<\/a>. The conference sessions detail subjects such as &#8220;Containerized workloads on the <span id=\"urn:enhancement-ed239fff\" class=\"textannotation disambiguated wl-organization\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/ibm\">IBM<\/span> cloud&#8221;, &#8220;<span id=\"urn:enhancement-dd245adc\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/microservices_2\">Microservices<\/span> in practice&#8221; and &#8220;Hands-on with Kubernetes&#8221;.<\/p>\n\n\n\n<p>Two of Niklas Heidloff\u2019s articles, demonstrating the best of Quarkus, are <a aria-label=\" (opens in a new tab)\" href=\"https:\/\/developer.ibm.com\/articles\/deploy-reactive-quarkus-microservices-on-ibm-cloud-kubernetes-service\/\" rel=\"noreferrer noopener nofollow\" target=\"_blank\" class=\"ek-link\">Quarkus on the IBM Cloud Kubernetes service<\/a> and <a href=\"https:\/\/www.codemotion.com\/magazine\/dev-hub\/backend-dev\/naturally-born-reactive-systems\/\" class=\"ek-link\">Reactive software development<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Resources to explore the key benefits of Quarkus<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Microservices on IBM Cloud Kubernetes Service<\/h3>\n\n\n\n<p>The need for more efficient <span id=\"urn:enhancement-f2da9abc\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/application_software\">applications<\/span> and better <span id=\"urn:enhancement-6ad5bea9\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/user_computing\">user<\/span> experiences is key, today. That&#8217;s why &#8220;reactivity&#8221; is becoming more and more important in the context of cloud-native <span id=\"urn:enhancement-d680ec9f\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/application_software\">applications<\/span>.<\/p>\n\n\n\n<p>Let&#8217;s learn how to <span id=\"urn:enhancement-4773536e\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/software_deployment\">deploy<\/span> cloud-native <span id=\"urn:enhancement-5ad1100e\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/application_software\">applications<\/span> on the <a href=\"https:\/\/cloud.ibm.com\/kubernetes\/catalog\/cluster?cm_sp=ibmdev-_-developer-articles-_-cloudreg\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener nofollow\" class=\"ek-link\">IBM Cloud Kubernetes Service<\/a>. Niklas also has a <a href=\"https:\/\/developer.ibm.com\/articles\/deploy-reactive-quarkus-microservices-on-ibm-cloud-kubernetes-service\/\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener nofollow\" class=\"ek-link\">guide<\/a> detailing how to build more efficient <span id=\"urn:enhancement-850e4c4c\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/application_software\">applications<\/span> with reactive <span id=\"urn:enhancement-76a9039b\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/java_software_platform\">Java<\/span> technologies.<\/p>\n\n\n\n<p>We will use <span id=\"urn:enhancement-645ce43a\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/toolchain\">toolchains<\/span> in <span id=\"urn:enhancement-9cfc0c\" class=\"textannotation disambiguated wl-organization\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/ibm\">IBM<\/span> <span id=\"urn:enhancement-7418c338\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/cloud_computing\">Cloud<\/span>, which contains CD\/CI pipelines to build and <span id=\"urn:enhancement-9c9acf78\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/software_deployment\">deploy<\/span> all <span id=\"urn:enhancement-26c8734\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/microservices_2\">microservices<\/span>, and not any client-side setup.<\/p>\n\n\n\n<p>The sample <span id=\"urn:enhancement-e345d826\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/application_software\">application<\/span> used in this article is available as <span id=\"urn:enhancement-6416efb8\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/open_source\">open source<\/span> in <span id=\"urn:enhancement-11174088\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/github\">GitHub<\/span> as part of the<a href=\"https:\/\/github.com\/IBM\/cloud-native-starter\/tree\/master\/reactive\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener nofollow\" class=\"ek-link\"> cloud-native-starter project<\/a>, which details how to get started with <span id=\"urn:enhancement-d9fdb014\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/java_software_platform\">Java-based<\/span> microservices. You can <span id=\"urn:enhancement-c408f4da\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/software_deployment\">deploy<\/span> the sample yourself in less than an hour (30 \u2013 60 minutes).<\/p>\n\n\n\n<p><strong>Benefits of <span id=\"urn:enhancement-556ebbef\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/reactive_programming\">reactive<\/span> <span id=\"urn:enhancement-84ea809c\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/application_software\">applications<\/span><\/strong><\/p>\n\n\n\n<p>One benefit of <span id=\"urn:enhancement-1493d4ba\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/reactive_programming\">reactive<\/span> models is the ability to update web <span id=\"urn:enhancement-3965491a\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/application_software\">applications<\/span> by sending messages rather than pulling for updates, which improves the <span id=\"urn:enhancement-f639e53f\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/user_experience\">user experience<\/span>. The image below shows how a <span id=\"urn:enhancement-415f585d\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/web_application\">web application<\/span> is updated automatically when new objects are created using <span id=\"urn:enhancement-9b3e6880\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/representational_state_transfer\">REST API<\/span> invocations:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/05\/image1-1-1024x576.png\" alt=\"quarkus reactive\" class=\"wp-image-4612\" srcset=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/05\/image1-1-1024x576.png 1024w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/05\/image1-1-300x169.png 300w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/05\/image1-1-768x432.png 768w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/05\/image1-1-896x504.png 896w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/05\/image1-1-400x225.png 400w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/05\/image1-1.png 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n\n<p>Another benefit of <span id=\"urn:enhancement-2ba6835\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/reactive_programming\">reactive<\/span> <span id=\"urn:enhancement-c2817927\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/system\">systems<\/span> is efficiency. For example, reactive REST endpoints can provide much faster response times. Especially in public clouds, where costs depend on CPU, RAM, and compute durations, this model saves money. In the cloud-native-starter sample, the response times are cut in half compared to synchronous REST endpoints.<\/p>\n\n\n\n<p><strong>Deploying on<span id=\"urn:local-annotation-830415\" class=\"textannotation disambiguated\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/ibm_cloud_computing\"> IBM Cloud<\/span> Kubernetes Service<\/strong><\/p>\n\n\n\n<p>In order to make the deployment of the sample application as easy as possible, a toolchain has been created. Client-side installations and configurations are not necessary. The toolchain installs the following components:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><span id=\"urn:local-annotation-458433\" class=\"textannotation disambiguated\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/postgresql\">PostgreSQL<\/span> and admin client<\/li><li>Kafka<\/li><li>Microservices: articles, authors, web-api<\/li><li>Web application<\/li><li>Eclipse Orion web IDE<\/li><\/ul>\n\n\n\n<p>Before you can trigger the toolchain, you need three <a aria-label=\" (opens in a new tab)\" href=\"https:\/\/github.com\/nheidloff\/cloud-native-starter-reactive-toolchain\/blob\/master\/README.md\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" class=\"ek-link\">prerequisites<\/a>, which are all free: <a aria-label=\" (opens in a new tab)\" href=\"https:\/\/cloud.ibm.com\/registration?cm_sp=ibmdev-_-developer-articles-_-cloudreg\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" class=\"ek-link\">IBM id<\/a>, <a aria-label=\" (opens in a new tab)\" href=\"https:\/\/cloud.ibm.com\/kubernetes\/catalog\/cluster?cm_sp=ibmdev-_-developer-articles-_-cloudreg\" rel=\"noreferrer noopener nofollow\" target=\"_blank\" class=\"ek-link\">IBM Cloud Kubernetes Service<\/a>, and <a aria-label=\" (opens in a new tab)\" href=\"https:\/\/cloud.ibm.com\/kubernetes\/catalog\/registry\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" class=\"ek-link\">IBM Container Registry<\/a>.<\/p>\n\n\n\n<p>When all prerequisites are met, you can simply click on a button to deploy the application. For more detail, Niklas has created a GitHub repo for step-by-step <a href=\"https:\/\/github.com\/nheidloff\/cloud-native-starter-reactive-toolchain\/blob\/master\/README.md#step-1\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener nofollow\" class=\"ek-link\">instructions<\/a>.<\/p>\n\n\n\n<p>The next screenshot shows the pipeline. The log of the last job \u201cDeploy web-app\u201d displays all the URLs you need to access the application:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/05\/image3-1-1024x694.png\" alt=\"quarkus IBM Cloud dashboard\" class=\"wp-image-4614\"\/><\/figure><\/div>\n\n\n\n<p>The <a href=\"https:\/\/developer.ibm.com\/articles\/deploy-reactive-quarkus-microservices-on-ibm-cloud-kubernetes-service\/(https:\/\/github.com\/nheidloff\/cloud-native-starter-reactive-toolchain\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener nofollow\" class=\"ek-link\">definitions<\/a> of the toolchain and the pipeline are open source and also available in GitHub which you can use as a starting point for your own toolchains.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">The challenges of reactive applications<\/h3>\n\n\n\n<p>A different application will show how to operate synchronous microservices with imperative coding. For a deeper dive, Niklas has also written <a href=\"http:\/\/heidloff.net\/article-development-reactive-applications-quarkus\/\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener nofollow\" class=\"ek-link\">Development of Reactive Applications with Quarkus<\/a> which offers more details.<\/p>\n\n\n\n<p>The term &#8220;reactive&#8221; is overused and overloaded and describes different aspects, for example reactive programming, reactive systems, reactive manifesto and reactive streams. There are several frameworks which support different functionalities and use other terminologies.<\/p>\n\n\n\n<p>When first beginning, it is not always easy or obvious to figure out the Java counterparts for JavaScript callbacks, promises and observables when you have a JavaScript background. Reactive programming requires a different type of thinking compared to writing imperative code.<\/p>\n\n\n\n<p>In order to understand how to use these functions together, it helps to look at more complete applications with use cases that come closer to what developers need when building enterprise applications to be easily deployed on Kubernetes platforms.<\/p>\n\n\n\n<p>A good example proposes a web application which displays links to press\/blog articles with their author information in a simple web application. The web application invokes the web-api service; it implements a backend-for-frontend pattern and invokes the articles and author\u2019s service. The articles service stores data in a Postgres database. Messages are sent between the microservices via Kafka. This diagram describes the high level architecture:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"530\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/05\/image2-1-1024x530.png\" alt=\"quarkus kubernetes\" class=\"wp-image-4613\" srcset=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/05\/image2-1-1024x530.png 1024w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/05\/image2-1-300x155.png 300w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/05\/image2-1-768x397.png 768w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/05\/image2-1.png 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n\n<p><strong>Reactive REST Endpoints for higher Efficiency<\/strong><\/p>\n\n\n\n<p>Another benefit of reactive systems and reactive REST endpoints is efficiency. This scenario describes how to use reactive systems and reactive programming to achieve faster response times. This is especially beneficial in public clouds where costs depend on CPU, RAM and compute durations, and this model saves money.<\/p>\n\n\n\n<p>The project contains the endpoint \u2018\/articles\u2019 of the web-api service in two different versions, one uses imperative code, the other one reactive code. The reactive stack of this sample provides response times that take less than half of the time compared to the imperative stack:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Reactive: 793 ms&nbsp;<\/li><li>Imperative: 1956 ms.<\/li><\/ul>\n\n\n\n<p>You can deep dive further by reading <a href=\"https:\/\/github.com\/IBM\/cloud-native-starter\/blob\/master\/reactive\/documentation\/LoadTests.md\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener nofollow\" class=\"ek-link\">Efficient Reactive Programming<\/a>.<\/p>\n\n\n\n<p><strong>Supported Kubernetes Environments<\/strong><\/p>\n\n\n\n<p>For all components and services, there are scripts that deploy and configure everything. For example, if you have Minikube installed, the setup shouldn\u2019t take longer than 10 minutes.<\/p>\n\n\n\n<p>Cloud: &nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a aria-label=\" (opens in a new tab)\" href=\"https:\/\/github.com\/IBM\/cloud-native-starter\/blob\/master\/reactive\/documentation\/IKS.md\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" class=\"ek-link\">IBM Cloud Kubernetes Service<\/a><\/li><li>OpenShift 4.3 on the IBM Cloud<\/li><\/ul>\n\n\n\n<p>Local:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Minikube &nbsp;&nbsp;&nbsp;<\/li><li><a href=\"https:\/\/github.com\/IBM\/cloud-native-starter\/blob\/master\/reactive\/documentation\/OpenShift4.md\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener nofollow\" class=\"ek-link\">CodeReady Containers \/ local OpenShift 4<\/a><\/li><\/ul>\n\n\n\n<p>As this tutorial demonstrates, Quarkus offers many current and future benefits to developers, it breathes new life into Java, and brings an older technology into the future.<\/p>\n\n\n\n<div class=\"uagb-cta__outer-wrap uagb-block-3df666e9-f639-4045-9d2d-655b25197c40\"><div class=\"uagb-cta__content-wrap uagb-cta__block uagb-cta__icon-position-right uagb-cta__content-right uagb-cta__content-stacked-tablet uagb-cta__button-valign-middle \"><div class=\"uagb-cta__left-right-wrap\"><div class=\"uagb-cta__content\"><div class=\"uagb-cta__title-wrap\"><h3 class=\"uagb-cta__title\">Explore Cloud Native Computing<\/h3><\/div><div class=\"uagb-cta-text-wrap\"><p class=\"uagb-cta__desc\">On March 3 2020, IBM held a conference to give developers insights into key technologies required to rapidly build secure applications that can be managed and optimized across multiple cloud providers.<br>If you missed it, worry not! You can still replay its entire content list.<\/p><\/div><\/div><div class=\"uagb-cta__link-wrapper uagb-cta__block-link-style\"><div class=\"uagb-cta__button-wrapper\"><a href=\"https:\/\/ibm.co\/3e07ehN\" class=\"uagb-cta__block-link uagb-cta__button-link-wrapper uagb-cta-typeof-button\" target=\"_blank\" rel=\"noopener noreferrer\"><span class=\"uagb-cta__link-content-inner\"><span>Replay<\/span><\/span><\/a><\/div><\/div><\/div><\/div><\/div>\n\n\n","protected":false},"excerpt":{"rendered":"<p>Java contributed to making a significant impact on the history of programming like few other coding languages but, as time passes, it is constantly being sidelined by other frameworks offering different performances in terms of resources and flexibility. In contrast, Java-based solutions are very well known and can still offer a great path to cloud-based&#8230; <a class=\"more-link\" href=\"https:\/\/www.codemotion.com\/magazine\/devops\/cloud\/quarkus-cloud-native-containers-based-development-java-framework\/\">Read more<\/a><\/p>\n","protected":false},"author":8,"featured_media":4611,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":1,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","_uag_custom_page_level_css":"","_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[5244],"tags":[5221,52,56,75],"collections":[],"class_list":{"0":"post-4606","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-cloud","8":"tag-ibm","9":"tag-java","10":"tag-kubernetes","11":"tag-serverless","12":"entry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.9 (Yoast SEO v26.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Quarkus: Java framework for Containers-based development - Codemotion<\/title>\n<meta name=\"description\" content=\"Quarkus is a Java framework that is considered a true game-changer. Meet it with the help of IBM Developer Advocate Niklas Heidloff.\" \/>\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.codemotion.com\/magazine\/devops\/cloud\/quarkus-cloud-native-containers-based-development-java-framework\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Cloud-native, Containers-based development: Quarkus revamps Java\" \/>\n<meta property=\"og:description\" content=\"Quarkus is a Java framework that is considered a true game-changer. Meet it with the help of IBM Developer Advocate Niklas Heidloff.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.codemotion.com\/magazine\/devops\/cloud\/quarkus-cloud-native-containers-based-development-java-framework\/\" \/>\n<meta property=\"og:site_name\" content=\"Codemotion Magazine\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Codemotion.Italy\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-06T13:34:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-01-05T19:04:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/05\/GettyImages-1030878158-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1012\" \/>\n\t<meta property=\"og:image:height\" content=\"675\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Leo Sorge\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:site\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Leo Sorge\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/devops\/cloud\/quarkus-cloud-native-containers-based-development-java-framework\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/devops\/cloud\/quarkus-cloud-native-containers-based-development-java-framework\/\"},\"author\":{\"name\":\"Leo Sorge\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/99fe84861e17797989e16094aac727d5\"},\"headline\":\"Cloud-native, Containers-based development: Quarkus revamps Java\",\"datePublished\":\"2020-05-06T13:34:13+00:00\",\"dateModified\":\"2022-01-05T19:04:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/devops\/cloud\/quarkus-cloud-native-containers-based-development-java-framework\/\"},\"wordCount\":1917,\"publisher\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/devops\/cloud\/quarkus-cloud-native-containers-based-development-java-framework\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/05\/GettyImages-1030878158-1.jpg\",\"keywords\":[\"IBM\",\"Java\",\"Kubernetes\",\"Serverless\"],\"articleSection\":[\"Cloud\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/devops\/cloud\/quarkus-cloud-native-containers-based-development-java-framework\/\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/devops\/cloud\/quarkus-cloud-native-containers-based-development-java-framework\/\",\"name\":\"Quarkus: Java framework for Containers-based development - Codemotion\",\"isPartOf\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/devops\/cloud\/quarkus-cloud-native-containers-based-development-java-framework\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/devops\/cloud\/quarkus-cloud-native-containers-based-development-java-framework\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/05\/GettyImages-1030878158-1.jpg\",\"datePublished\":\"2020-05-06T13:34:13+00:00\",\"dateModified\":\"2022-01-05T19:04:56+00:00\",\"description\":\"Quarkus is a Java framework that is considered a true game-changer. Meet it with the help of IBM Developer Advocate Niklas Heidloff.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/devops\/cloud\/quarkus-cloud-native-containers-based-development-java-framework\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.codemotion.com\/magazine\/devops\/cloud\/quarkus-cloud-native-containers-based-development-java-framework\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/devops\/cloud\/quarkus-cloud-native-containers-based-development-java-framework\/#primaryimage\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/05\/GettyImages-1030878158-1.jpg\",\"contentUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/05\/GettyImages-1030878158-1.jpg\",\"width\":1012,\"height\":675,\"caption\":\"containers cloud\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/devops\/cloud\/quarkus-cloud-native-containers-based-development-java-framework\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.codemotion.com\/magazine\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DevOps\",\"item\":\"https:\/\/www.codemotion.com\/magazine\/devops\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Cloud\",\"item\":\"https:\/\/www.codemotion.com\/magazine\/devops\/cloud\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Cloud-native, Containers-based development: Quarkus revamps Java\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#website\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/\",\"name\":\"Codemotion Magazine\",\"description\":\"We code the future. Together\",\"publisher\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.codemotion.com\/magazine\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\",\"name\":\"Codemotion\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png\",\"contentUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png\",\"width\":225,\"height\":225,\"caption\":\"Codemotion\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Codemotion.Italy\/\",\"https:\/\/x.com\/CodemotionIT\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/99fe84861e17797989e16094aac727d5\",\"name\":\"Leo Sorge\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/60ef89012822fdaeb014dc2b17dcc78c3a835e1dfe86ede053fa46a91926fd29?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/60ef89012822fdaeb014dc2b17dcc78c3a835e1dfe86ede053fa46a91926fd29?s=96&d=mm&r=g\",\"caption\":\"Leo Sorge\"},\"description\":\"I hold a degree in electronics. I talk and write about science and technology in both real and close-to-real worlds since 1976. I frankly believe that business plan and singularity are excellent starts for science-fiction stories.\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/author\/leo-sorge\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Quarkus: Java framework for Containers-based development - Codemotion","description":"Quarkus is a Java framework that is considered a true game-changer. Meet it with the help of IBM Developer Advocate Niklas Heidloff.","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.codemotion.com\/magazine\/devops\/cloud\/quarkus-cloud-native-containers-based-development-java-framework\/","og_locale":"en_US","og_type":"article","og_title":"Cloud-native, Containers-based development: Quarkus revamps Java","og_description":"Quarkus is a Java framework that is considered a true game-changer. Meet it with the help of IBM Developer Advocate Niklas Heidloff.","og_url":"https:\/\/www.codemotion.com\/magazine\/devops\/cloud\/quarkus-cloud-native-containers-based-development-java-framework\/","og_site_name":"Codemotion Magazine","article_publisher":"https:\/\/www.facebook.com\/Codemotion.Italy\/","article_published_time":"2020-05-06T13:34:13+00:00","article_modified_time":"2022-01-05T19:04:56+00:00","og_image":[{"width":1012,"height":675,"url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/05\/GettyImages-1030878158-1.jpg","type":"image\/jpeg"}],"author":"Leo Sorge","twitter_card":"summary_large_image","twitter_creator":"@CodemotionIT","twitter_site":"@CodemotionIT","twitter_misc":{"Written by":"Leo Sorge","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.codemotion.com\/magazine\/devops\/cloud\/quarkus-cloud-native-containers-based-development-java-framework\/#article","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/devops\/cloud\/quarkus-cloud-native-containers-based-development-java-framework\/"},"author":{"name":"Leo Sorge","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/99fe84861e17797989e16094aac727d5"},"headline":"Cloud-native, Containers-based development: Quarkus revamps Java","datePublished":"2020-05-06T13:34:13+00:00","dateModified":"2022-01-05T19:04:56+00:00","mainEntityOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/devops\/cloud\/quarkus-cloud-native-containers-based-development-java-framework\/"},"wordCount":1917,"publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/devops\/cloud\/quarkus-cloud-native-containers-based-development-java-framework\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/05\/GettyImages-1030878158-1.jpg","keywords":["IBM","Java","Kubernetes","Serverless"],"articleSection":["Cloud"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.codemotion.com\/magazine\/devops\/cloud\/quarkus-cloud-native-containers-based-development-java-framework\/","url":"https:\/\/www.codemotion.com\/magazine\/devops\/cloud\/quarkus-cloud-native-containers-based-development-java-framework\/","name":"Quarkus: Java framework for Containers-based development - Codemotion","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/devops\/cloud\/quarkus-cloud-native-containers-based-development-java-framework\/#primaryimage"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/devops\/cloud\/quarkus-cloud-native-containers-based-development-java-framework\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/05\/GettyImages-1030878158-1.jpg","datePublished":"2020-05-06T13:34:13+00:00","dateModified":"2022-01-05T19:04:56+00:00","description":"Quarkus is a Java framework that is considered a true game-changer. Meet it with the help of IBM Developer Advocate Niklas Heidloff.","breadcrumb":{"@id":"https:\/\/www.codemotion.com\/magazine\/devops\/cloud\/quarkus-cloud-native-containers-based-development-java-framework\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.codemotion.com\/magazine\/devops\/cloud\/quarkus-cloud-native-containers-based-development-java-framework\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/devops\/cloud\/quarkus-cloud-native-containers-based-development-java-framework\/#primaryimage","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/05\/GettyImages-1030878158-1.jpg","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/05\/GettyImages-1030878158-1.jpg","width":1012,"height":675,"caption":"containers cloud"},{"@type":"BreadcrumbList","@id":"https:\/\/www.codemotion.com\/magazine\/devops\/cloud\/quarkus-cloud-native-containers-based-development-java-framework\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.codemotion.com\/magazine\/"},{"@type":"ListItem","position":2,"name":"DevOps","item":"https:\/\/www.codemotion.com\/magazine\/devops\/"},{"@type":"ListItem","position":3,"name":"Cloud","item":"https:\/\/www.codemotion.com\/magazine\/devops\/cloud\/"},{"@type":"ListItem","position":4,"name":"Cloud-native, Containers-based development: Quarkus revamps Java"}]},{"@type":"WebSite","@id":"https:\/\/www.codemotion.com\/magazine\/#website","url":"https:\/\/www.codemotion.com\/magazine\/","name":"Codemotion Magazine","description":"We code the future. Together","publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.codemotion.com\/magazine\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.codemotion.com\/magazine\/#organization","name":"Codemotion","url":"https:\/\/www.codemotion.com\/magazine\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","width":225,"height":225,"caption":"Codemotion"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Codemotion.Italy\/","https:\/\/x.com\/CodemotionIT"]},{"@type":"Person","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/99fe84861e17797989e16094aac727d5","name":"Leo Sorge","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/60ef89012822fdaeb014dc2b17dcc78c3a835e1dfe86ede053fa46a91926fd29?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/60ef89012822fdaeb014dc2b17dcc78c3a835e1dfe86ede053fa46a91926fd29?s=96&d=mm&r=g","caption":"Leo Sorge"},"description":"I hold a degree in electronics. I talk and write about science and technology in both real and close-to-real worlds since 1976. I frankly believe that business plan and singularity are excellent starts for science-fiction stories.","url":"https:\/\/www.codemotion.com\/magazine\/author\/leo-sorge\/"}]}},"featured_image_src":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/05\/GettyImages-1030878158-1-600x400.jpg","featured_image_src_square":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/05\/GettyImages-1030878158-1-600x600.jpg","author_info":{"display_name":"Leo Sorge","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/leo-sorge\/"},"uagb_featured_image_src":{"full":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/05\/GettyImages-1030878158-1.jpg",1012,675,false],"thumbnail":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/05\/GettyImages-1030878158-1-150x150.jpg",150,150,true],"medium":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/05\/GettyImages-1030878158-1-300x200.jpg",300,200,true],"medium_large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/05\/GettyImages-1030878158-1-768x512.jpg",768,512,true],"large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/05\/GettyImages-1030878158-1.jpg",1012,675,false],"1536x1536":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/05\/GettyImages-1030878158-1.jpg",1012,675,false],"2048x2048":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/05\/GettyImages-1030878158-1.jpg",1012,675,false],"small-home-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/05\/GettyImages-1030878158-1.jpg",100,67,false],"sidebar-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/05\/GettyImages-1030878158-1-180x128.jpg",180,128,true],"genesis-singular-images":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/05\/GettyImages-1030878158-1-896x504.jpg",896,504,true],"archive-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/05\/GettyImages-1030878158-1-400x225.jpg",400,225,true],"gb-block-post-grid-landscape":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/05\/GettyImages-1030878158-1-600x400.jpg",600,400,true],"gb-block-post-grid-square":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/05\/GettyImages-1030878158-1-600x600.jpg",600,600,true]},"uagb_author_info":{"display_name":"Leo Sorge","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/leo-sorge\/"},"uagb_comment_info":0,"uagb_excerpt":"Java contributed to making a significant impact on the history of programming like few other coding languages but, as time passes, it is constantly being sidelined by other frameworks offering different performances in terms of resources and flexibility. In contrast, Java-based solutions are very well known and can still offer a great path to cloud-based&#8230;&hellip;","lang":"en","_links":{"self":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/4606","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/comments?post=4606"}],"version-history":[{"count":14,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/4606\/revisions"}],"predecessor-version":[{"id":16022,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/4606\/revisions\/16022"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media\/4611"}],"wp:attachment":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media?parent=4606"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/categories?post=4606"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/tags?post=4606"},{"taxonomy":"collections","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/collections?post=4606"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}