{"id":11686,"date":"2021-12-12T21:23:15","date_gmt":"2021-12-12T21:23:15","guid":{"rendered":"https:\/\/exceptionly.com\/?p=11686"},"modified":"2022-06-29T16:37:56","modified_gmt":"2022-06-29T16:37:56","slug":"welcome-to-quarkus-supersonic-kubernetes-native-java-framework","status":"publish","type":"post","link":"https:\/\/exceptionly.com\/ar\/2021\/12\/12\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework\/","title":{"rendered":"Welcome to Quarkus: Supersonic, Kubernetes-Native Java Framework"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"11686\" class=\"elementor elementor-11686\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-e0dacf8 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"e0dacf8\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-9ddf2c4\" data-id=\"9ddf2c4\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-55835a5 elementor-widget elementor-widget-text-editor\" data-id=\"55835a5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2>What is Quarkus?<\/h2><p>Quarkus is an open-source Java framework that has been designed to run on Kubernetes platforms for developing and delivering applications on platforms such as serverless and cloud-native environments.<\/p><p>Applications developed with Quarkus can be natively compiled on top of the GraalVM and HotSpot, as well as running on traditional Java Virtual Machines (JVMs).<\/p><p>Quarkus increases efficiency by optimizing Java to enable minimum startup time and memory usage in applications.\u00a0<\/p><h2>Quarkus vs. Spring Boot<\/h2><p>Spring Boot is an open-source project built on top of Spring Framework that provides a simple way to create, configure and run web-based Java applications. Spring Boot has exceptional official documentation and a fantastic community behind it.<\/p><p>Both Quarkus and Spring Boot are comprehensive frameworks for developing and deploying Java applications.\u00a0<\/p><p>But unlike Quarkus, Spring Boot has higher startup times and more memory consumption in general. \u00a0Quarkus provides faster hot reloads than Spring Boot because of the auto detections on the code.\u00a0<\/p><p>Quarkus gives Dockerfiles by default, unlike Spring Boot. To Dockerize a Spring Boot application, check out my previous tutorial <a href=\"https:\/\/exceptionly.com\/2021\/11\/29\/dockerize-a-spring-boot-application\/\">Dockerize a Spring Boot Application<\/a>.<\/p><p>For a detailed inspection on the comparison between Spring Boot and Quarkus, check\u00a0 <a href=\"https:\/\/medium.com\/swlh\/springboot-vs-quarkus-a-real-life-experiment-be70c021634e\">SpringBoot vs. Quarkus: a Real-Life Experiment tutorial<\/a> that explains a real-life example.\u00a0<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-5802752 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"5802752\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-74142ef\" data-id=\"74142ef\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-bc81192 elementor-widget elementor-widget-image\" data-id=\"bc81192\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/medium.com\/swlh\/springboot-vs-quarkus-a-real-life-experiment-be70c021634e\" target=\"_blank\" rel=\"nofollow\">\n\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"800\" height=\"555\" src=\"https:\/\/exceptionly.com\/wp-content\/uploads\/2021\/12\/Screenshot-2021-12-12-at-15.00.06-1024x711.png\" class=\"attachment-large size-large wp-image-11687\" alt=\"\" srcset=\"https:\/\/exceptionly.com\/wp-content\/uploads\/2021\/12\/Screenshot-2021-12-12-at-15.00.06-1024x711.png 1024w, https:\/\/exceptionly.com\/wp-content\/uploads\/2021\/12\/Screenshot-2021-12-12-at-15.00.06-300x208.png 300w, https:\/\/exceptionly.com\/wp-content\/uploads\/2021\/12\/Screenshot-2021-12-12-at-15.00.06-768x533.png 768w, https:\/\/exceptionly.com\/wp-content\/uploads\/2021\/12\/Screenshot-2021-12-12-at-15.00.06.png 1368w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">Source:SWLH<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-300d526 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"300d526\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-203b5f3\" data-id=\"203b5f3\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2226526 elementor-widget elementor-widget-text-editor\" data-id=\"2226526\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2>Initialize a Quarkus Application<\/h2><p>There are a few assumptions for these instructions;<\/p><ul><li aria-level=\"1\">You have <a href=\"https:\/\/maven.apache.org\/download.cgi\">Apache Maven<\/a> installed on your local environment!\u00a0<\/li><li aria-level=\"1\">If you want to run with Docker, you need to have Docker installed, up and running!\u00a0<\/li><\/ul><p>I already initialized an application that contains a Reactive Kafka messaging example with Quarkus. Feel free to download the complete source code for this tutorial from the <a href=\"https:\/\/github.com\/exceptionly\/blog-quarkus\">Exceptionly Github<\/a> account.\u00a0<\/p><p>Otherwise, run the followed command to initialize an application that will come with the below defaults;<\/p><ul><li aria-level=\"1\">A default resource<\/li><li aria-level=\"1\">An enhanced UI that contains Quarkus how-to links and details for the application you just initialized<\/li><li aria-level=\"1\">Dockerfiles for native (no JVM) and JVM mode<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-97616ce elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"97616ce\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-e98990f\" data-id=\"e98990f\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f25bc00 elementor-widget elementor-widget-code-highlight\" data-id=\"f25bc00\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash \">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>$ mvn io.quarkus.platform:quarkus-maven-plugin:2.5.1.Final:create \\\n    -DprojectGroupId=org.exceptionly \\\n    -DprojectArtifactId=quarqus-demo \\\n    -DclassName=\"org.exceptionly.demo.QuarkusResource\" \\\n    -Dpath=\"\/ping\"\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-15d3863 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"15d3863\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3880848\" data-id=\"3880848\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-20c59e1 elementor-widget elementor-widget-text-editor\" data-id=\"20c59e1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2>Apache Kafka Reactive Messaging with Quarkus<\/h2><p>To enable the application to produce and consume data from Kafka, I will start a Kafka cluster with Docker Compose. First, create a docker-compose.yaml file with the following content in the src\/main\/docker folder.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-3dbc324 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3dbc324\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5fd5f28\" data-id=\"5fd5f28\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-41a7004 elementor-widget elementor-widget-code-highlight\" data-id=\"41a7004\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash \">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>version: '2'\nservices:\n  zookeeper:\n    image: strimzi\/kafka:0.11.3-kafka-2.1.0\n    command: [\n        \"sh\", \"-c\",\n        \"bin\/zookeeper-server-start.sh config\/zookeeper.properties\"\n    ]\n    ports:\n      - \"2181:2181\"\n    environment:\n      LOG_DIR: \/tmp\/logs\n\n  kafka:\n    image: strimzi\/kafka:0.11.3-kafka-2.1.0\n    command: [\n        \"sh\", \"-c\",\n        \"bin\/kafka-server-start.sh config\/server.properties --override listeners=$${KAFKA_LISTENERS} --override advertised.listeners=$${KAFKA_ADVERTISED_LISTENERS} --override zookeeper.connect=$${KAFKA_ZOOKEEPER_CONNECT}\"\n    ]\n    depends_on:\n      - zookeeper\n    ports:\n      - \"9092:9092\"\n    environment:\n      LOG_DIR: \"\/tmp\/logs\"\n      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT:\/\/localhost:9092\n      KAFKA_LISTENERS: PLAINTEXT:\/\/0.0.0.0:9092\n      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-72f213e elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"72f213e\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7aba214\" data-id=\"7aba214\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-32ffa07 elementor-widget elementor-widget-text-editor\" data-id=\"32ffa07\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Update application.properties to configure the Kafka connector by following up the configuration structure.<\/p><p>mp.messaging.[outgoing|incoming].{channel-name}.property=value<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9b5ecda elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"9b5ecda\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-6e3e178\" data-id=\"6e3e178\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-9c2204d elementor-widget elementor-widget-code-highlight\" data-id=\"9c2204d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-javascript \">\n\t\t\t\t<code readonly=\"true\" class=\"language-javascript\">\n\t\t\t\t\t<xmp>\/\/Producer\nmp.messaging.outgoing.generated-price.connector=smallrye-kafka\nmp.messaging.outgoing.generated-price.topic=prices\nmp.messaging.outgoing.generated-price.value.serializer=org.apache.kafka.common.serialization.IntegerSerializer\n\n\/\/Consumer\nmp.messaging.incoming.prices.connector=smallrye-kafka\nmp.messaging.incoming.prices.value.deserializer=org.apache.kafka.common.serialization.IntegerDeserializer<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-a975586 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"a975586\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-9d7bfce\" data-id=\"9d7bfce\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b315a10 elementor-widget elementor-widget-text-editor\" data-id=\"b315a10\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>We can think outgoing as producer and incoming as a consumer.\u00a0 So in the above example, the channel name would be generated-price for the topic prices, and incoming message configuration can be made based on the source prices.<\/p><p>The code piece below will publish a random integer every 5 seconds to the channel generated-price.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-6f79778 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"6f79778\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-9b8ca64\" data-id=\"9b8ca64\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4543c56 elementor-widget elementor-widget-code-highlight\" data-id=\"4543c56\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-java \">\n\t\t\t\t<code readonly=\"true\" class=\"language-java\">\n\t\t\t\t\t<xmp>@Outgoing(\"generated-price\")\npublic Flowable<Integer> generate() {\n   return Flowable.interval(5, TimeUnit.SECONDS)\n           .map(tick -> random.nextInt(100));\n}<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-3894afa elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3894afa\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-f76cfdd\" data-id=\"f76cfdd\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b7cc2cf elementor-widget elementor-widget-text-editor\" data-id=\"b7cc2cf\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>From the opposite side, a consumer will listen to prices topic and update the LATEST_PRICE variable<\/p><p>that has been exposed via an API whenever the \/price endpoint is called.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-2dab82d elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"2dab82d\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-075a3d3\" data-id=\"075a3d3\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4a2aa6c elementor-widget elementor-widget-code-highlight\" data-id=\"4a2aa6c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-java \">\n\t\t\t\t<code readonly=\"true\" class=\"language-java\">\n\t\t\t\t\t<xmp>private static final double CONVERSION_RATE = 0.98;\nprivate static double LATEST_PRICE = 0.00;\n\n@Incoming(\"prices\")\npublic void process(int priceInUsd) {\n   LATEST_PRICE = priceInUsd * CONVERSION_RATE;\n}\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-3bd20a5 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3bd20a5\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-2ed8ba6\" data-id=\"2ed8ba6\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-3aa35e5 elementor-widget elementor-widget-text-editor\" data-id=\"3aa35e5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Expose the most recent message with a REST API.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-b1c756c elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"b1c756c\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5844003\" data-id=\"5844003\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-bf17aea elementor-widget elementor-widget-code-highlight\" data-id=\"bf17aea\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-java \">\n\t\t\t\t<code readonly=\"true\" class=\"language-java\">\n\t\t\t\t\t<xmp>@GET\n@Produces(MediaType.TEXT_PLAIN)\npublic double price() {\n   return priceConverter.price();\n}<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-a613934 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"a613934\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7dbac49\" data-id=\"7dbac49\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-30c2fbd elementor-widget elementor-widget-text-editor\" data-id=\"30c2fbd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2>Running the Application in Dev Mode<\/h2><p>Navigate to the docker folder and start the Kafka cluster as a first step. Once the Kafka container is up and running, run the application in dev mode by following commands.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-2203d6d elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"2203d6d\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3841885\" data-id=\"3841885\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-5d7a688 elementor-widget elementor-widget-code-highlight\" data-id=\"5d7a688\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash \">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>$ cd src\/main\/docker\n$ docker-compose up\n$ .\/mvnw compile quarkus:dev\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-6a0d88c elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"6a0d88c\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-c007c92\" data-id=\"c007c92\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-25611d1 elementor-widget elementor-widget-text-editor\" data-id=\"25611d1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>The application is providing live coding by default, so any change that has been made will reflect right away.<\/p><p>Navigate to <a href=\"http:\/\/localhost:8080\/\">http:\/\/localhost:8080\/<\/a> from your browser to enjoy your very first Quarkus application.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-b3eb74a elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"b3eb74a\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-0208a12\" data-id=\"0208a12\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-5f4595d elementor-widget elementor-widget-image\" data-id=\"5f4595d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"800\" height=\"449\" src=\"https:\/\/exceptionly.com\/wp-content\/uploads\/2021\/12\/quarkus-ui-1024x575.png\" class=\"attachment-large size-large wp-image-11728\" alt=\"\" srcset=\"https:\/\/exceptionly.com\/wp-content\/uploads\/2021\/12\/quarkus-ui-1024x575.png 1024w, https:\/\/exceptionly.com\/wp-content\/uploads\/2021\/12\/quarkus-ui-300x169.png 300w, https:\/\/exceptionly.com\/wp-content\/uploads\/2021\/12\/quarkus-ui-768x432.png 768w, https:\/\/exceptionly.com\/wp-content\/uploads\/2021\/12\/quarkus-ui-1536x863.png 1536w, https:\/\/exceptionly.com\/wp-content\/uploads\/2021\/12\/quarkus-ui-2048x1151.png 2048w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-3e4192b elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3e4192b\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-fc1061d\" data-id=\"fc1061d\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d31cb42 elementor-widget elementor-widget-text-editor\" data-id=\"d31cb42\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>You will see the REST APIs under the title RESTEasy JAX-RS. Click the \/price endpoint to check the most recent consumed message multiplied with a conversion rate.<\/p><p>I took advantage of official <a href=\"https:\/\/quarkus.io\/guides\/kafka\">Quarkus<\/a> documents to write this tutorial.<\/p><p>Feel free to check out my previous posts from the followed links!<\/p><ul><li aria-level=\"1\"><a href=\"https:\/\/exceptionly.com\/2021\/07\/07\/how-to-start-coding-java-in-60-minutes\/\">Start Coding Java in 60 minutes<\/a><\/li><li aria-level=\"1\"><a href=\"https:\/\/exceptionly.com\/2021\/09\/14\/how-to-start-coding-vuejs-in-60-minutes\/\">Start Coding VueJS in 60 minutes<\/a><\/li><li aria-level=\"1\"><a href=\"https:\/\/exceptionly.com\/2021\/08\/07\/how-to-start-coding-react-in-60-minutes\/\">Start Coding React in 60 minutes<\/a><\/li><li aria-level=\"1\"><a href=\"https:\/\/exceptionly.com\/2021\/08\/23\/how-to-start-coding-javascript-in-60-minutes\/\">Start Coding JavaScript in 60 minutes<\/a><\/li><li aria-level=\"1\"><a href=\"https:\/\/exceptionly.com\/2021\/10\/17\/how-to-start-coding-angularjs-in-60-minutes\/\">Start Coding AngularJS in 60 minutes<\/a><\/li><li aria-level=\"1\"><a href=\"https:\/\/exceptionly.com\/2021\/07\/21\/how-to-start-coding-python-in-60-minutes\/\">Start Coding Python in 60 minutes<\/a><\/li><li aria-level=\"1\"><a href=\"https:\/\/exceptionly.com\/2021\/11\/02\/how-to-start-coding-node-js-in-60-minutes\/\">Start Coding NodeJS in 60 minutes<\/a><\/li><li aria-level=\"1\"><a href=\"https:\/\/exceptionly.com\/2021\/11\/11\/how-to-start-coding-flutter-in-60-minutes\/\">Start Coding Flutter in 60 minutes<\/a><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>What is Quarkus? Quarkus is an open-source Java framework that has been designed to run on Kubernetes platforms for developing and delivering applications on platforms such as serverless and cloud-native environments. Applications developed with Quarkus can be natively compiled on top of the GraalVM and HotSpot, as well as running on traditional Java Virtual Machines [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":11840,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[82],"tags":[206,212,143,156,221,153,155,154],"class_list":["post-11686","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials","tag-backend","tag-devops","tag-java","tag-kafka","tag-kubernetes","tag-quarkus","tag-reactive-messaging","tag-spring-boot"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v18.5 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Welcome to Quarkus: Supersonic, Kubernetes-Native Java Framework - Exceptionly<\/title>\n<meta name=\"description\" content=\"Quarkus is an open-source Java framework that has been designed to run on Kubernetes platforms for developing and delivering applications on platforms such as serverless and cloud-native environments.Applications that have been developed with Quarkus can be natively compiled on top of the GraalVM and HotSpot, as well as running on traditional Java Virtual Machines (JVMs).\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/exceptionly.com\/ar\/2021\/12\/12\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework\/\" \/>\n<meta property=\"og:locale\" content=\"ar_AR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Welcome to Quarkus: Supersonic, Kubernetes-Native Java Framework\" \/>\n<meta property=\"og:description\" content=\"What is Quarkus? Quarkus is an open-source Java framework that has been designed to run on Kubernetes platforms for developing and delivering applications\" \/>\n<meta property=\"og:url\" content=\"https:\/\/exceptionly.com\/ar\/2021\/12\/12\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework\/\" \/>\n<meta property=\"og:site_name\" content=\"Exceptionly\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/exceptionly\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-12-12T21:23:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-06-29T16:37:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/exceptionly.com\/wp-content\/uploads\/2021\/12\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1930\" \/>\n\t<meta property=\"og:image:height\" content=\"766\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Fatma Elverir\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@exceptionly\" \/>\n<meta name=\"twitter:site\" content=\"@exceptionly\" \/>\n<meta name=\"twitter:label1\" content=\"\u0643\u064f\u062a\u0628 \u0628\u0648\u0627\u0633\u0637\u0629\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatma Elverir\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u0648\u0642\u062a \u0627\u0644\u0642\u0631\u0627\u0621\u0629 \u0627\u0644\u0645\u064f\u0642\u062f\u0651\u0631\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 \u062f\u0642\u0627\u0626\u0642\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/exceptionly.com\\\/2021\\\/12\\\/12\\\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/exceptionly.com\\\/2021\\\/12\\\/12\\\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework\\\/\"},\"author\":{\"name\":\"Fatma Elverir\",\"@id\":\"https:\\\/\\\/exceptionly.com\\\/#\\\/schema\\\/person\\\/a2600170dfb4513350affede916c0ccf\"},\"headline\":\"Welcome to Quarkus: Supersonic, Kubernetes-Native Java Framework\",\"datePublished\":\"2021-12-12T21:23:15+00:00\",\"dateModified\":\"2022-06-29T16:37:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/exceptionly.com\\\/2021\\\/12\\\/12\\\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework\\\/\"},\"wordCount\":651,\"commentCount\":4,\"publisher\":{\"@id\":\"https:\\\/\\\/exceptionly.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/exceptionly.com\\\/2021\\\/12\\\/12\\\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/exceptionly.com\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework.jpg\",\"keywords\":[\"Backend\",\"DevOps\",\"Java\",\"Kafka\",\"Kubernetes\",\"Quarkus\",\"Reactive Messaging\",\"Spring Boot\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"ar\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/exceptionly.com\\\/2021\\\/12\\\/12\\\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/exceptionly.com\\\/2021\\\/12\\\/12\\\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework\\\/\",\"url\":\"https:\\\/\\\/exceptionly.com\\\/2021\\\/12\\\/12\\\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework\\\/\",\"name\":\"Welcome to Quarkus: Supersonic, Kubernetes-Native Java Framework - Exceptionly\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/exceptionly.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/exceptionly.com\\\/2021\\\/12\\\/12\\\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/exceptionly.com\\\/2021\\\/12\\\/12\\\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/exceptionly.com\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework.jpg\",\"datePublished\":\"2021-12-12T21:23:15+00:00\",\"dateModified\":\"2022-06-29T16:37:56+00:00\",\"description\":\"Quarkus is an open-source Java framework that has been designed to run on Kubernetes platforms for developing and delivering applications on platforms such as serverless and cloud-native environments.Applications that have been developed with Quarkus can be natively compiled on top of the GraalVM and HotSpot, as well as running on traditional Java Virtual Machines (JVMs).\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/exceptionly.com\\\/2021\\\/12\\\/12\\\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework\\\/#breadcrumb\"},\"inLanguage\":\"ar\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/exceptionly.com\\\/2021\\\/12\\\/12\\\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ar\",\"@id\":\"https:\\\/\\\/exceptionly.com\\\/2021\\\/12\\\/12\\\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework\\\/#primaryimage\",\"url\":\"https:\\\/\\\/exceptionly.com\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework.jpg\",\"contentUrl\":\"https:\\\/\\\/exceptionly.com\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework.jpg\",\"width\":1930,\"height\":766,\"caption\":\"Welcome to Quarkus: Supersonic, Kubernetes-native Java Framework\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/exceptionly.com\\\/2021\\\/12\\\/12\\\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/exceptionly.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Welcome to Quarkus: Supersonic, Kubernetes-Native Java Framework\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/exceptionly.com\\\/#website\",\"url\":\"https:\\\/\\\/exceptionly.com\\\/\",\"name\":\"Exceptionly\",\"description\":\"Remote software talent acquisition at scale\",\"publisher\":{\"@id\":\"https:\\\/\\\/exceptionly.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/exceptionly.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ar\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/exceptionly.com\\\/#organization\",\"name\":\"Exceptionly\",\"url\":\"https:\\\/\\\/exceptionly.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ar\",\"@id\":\"https:\\\/\\\/exceptionly.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/exceptionly.com\\\/wp-content\\\/uploads\\\/2021\\\/05\\\/exceptionly-search-logo.png\",\"contentUrl\":\"https:\\\/\\\/exceptionly.com\\\/wp-content\\\/uploads\\\/2021\\\/05\\\/exceptionly-search-logo.png\",\"width\":400,\"height\":400,\"caption\":\"Exceptionly\"},\"image\":{\"@id\":\"https:\\\/\\\/exceptionly.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/exceptionly\\\/\",\"https:\\\/\\\/x.com\\\/exceptionly\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/exceptionly\\\/\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCet5wATTyif6knI0h4vUkNA\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/exceptionly.com\\\/#\\\/schema\\\/person\\\/a2600170dfb4513350affede916c0ccf\",\"name\":\"Fatma Elverir\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ar\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/93179e5b3e943c5bcda6ea20d6b37723c01dedb150ab7724bb4fb9af22eb3de6?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/93179e5b3e943c5bcda6ea20d6b37723c01dedb150ab7724bb4fb9af22eb3de6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/93179e5b3e943c5bcda6ea20d6b37723c01dedb150ab7724bb4fb9af22eb3de6?s=96&d=mm&r=g\",\"caption\":\"Fatma Elverir\"},\"sameAs\":[\"https:\\\/\\\/exceptionly.com\"],\"url\":\"https:\\\/\\\/exceptionly.com\\\/ar\\\/author\\\/fatmaelverir\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Welcome to Quarkus: Supersonic, Kubernetes-Native Java Framework - Exceptionly","description":"Quarkus is an open-source Java framework that has been designed to run on Kubernetes platforms for developing and delivering applications on platforms such as serverless and cloud-native environments.Applications that have been developed with Quarkus can be natively compiled on top of the GraalVM and HotSpot, as well as running on traditional Java Virtual Machines (JVMs).","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:\/\/exceptionly.com\/ar\/2021\/12\/12\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework\/","og_locale":"ar_AR","og_type":"article","og_title":"Welcome to Quarkus: Supersonic, Kubernetes-Native Java Framework","og_description":"What is Quarkus? Quarkus is an open-source Java framework that has been designed to run on Kubernetes platforms for developing and delivering applications","og_url":"https:\/\/exceptionly.com\/ar\/2021\/12\/12\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework\/","og_site_name":"Exceptionly","article_publisher":"https:\/\/www.facebook.com\/exceptionly\/","article_published_time":"2021-12-12T21:23:15+00:00","article_modified_time":"2022-06-29T16:37:56+00:00","og_image":[{"width":1930,"height":766,"url":"https:\/\/exceptionly.com\/wp-content\/uploads\/2021\/12\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework.jpg","type":"image\/jpeg"}],"author":"Fatma Elverir","twitter_card":"summary_large_image","twitter_creator":"@exceptionly","twitter_site":"@exceptionly","twitter_misc":{"\u0643\u064f\u062a\u0628 \u0628\u0648\u0627\u0633\u0637\u0629":"Fatma Elverir","\u0648\u0642\u062a \u0627\u0644\u0642\u0631\u0627\u0621\u0629 \u0627\u0644\u0645\u064f\u0642\u062f\u0651\u0631":"4 \u062f\u0642\u0627\u0626\u0642"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/exceptionly.com\/2021\/12\/12\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework\/#article","isPartOf":{"@id":"https:\/\/exceptionly.com\/2021\/12\/12\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework\/"},"author":{"name":"Fatma Elverir","@id":"https:\/\/exceptionly.com\/#\/schema\/person\/a2600170dfb4513350affede916c0ccf"},"headline":"Welcome to Quarkus: Supersonic, Kubernetes-Native Java Framework","datePublished":"2021-12-12T21:23:15+00:00","dateModified":"2022-06-29T16:37:56+00:00","mainEntityOfPage":{"@id":"https:\/\/exceptionly.com\/2021\/12\/12\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework\/"},"wordCount":651,"commentCount":4,"publisher":{"@id":"https:\/\/exceptionly.com\/#organization"},"image":{"@id":"https:\/\/exceptionly.com\/2021\/12\/12\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework\/#primaryimage"},"thumbnailUrl":"https:\/\/exceptionly.com\/wp-content\/uploads\/2021\/12\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework.jpg","keywords":["Backend","DevOps","Java","Kafka","Kubernetes","Quarkus","Reactive Messaging","Spring Boot"],"articleSection":["Tutorials"],"inLanguage":"ar","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/exceptionly.com\/2021\/12\/12\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/exceptionly.com\/2021\/12\/12\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework\/","url":"https:\/\/exceptionly.com\/2021\/12\/12\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework\/","name":"Welcome to Quarkus: Supersonic, Kubernetes-Native Java Framework - Exceptionly","isPartOf":{"@id":"https:\/\/exceptionly.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/exceptionly.com\/2021\/12\/12\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework\/#primaryimage"},"image":{"@id":"https:\/\/exceptionly.com\/2021\/12\/12\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework\/#primaryimage"},"thumbnailUrl":"https:\/\/exceptionly.com\/wp-content\/uploads\/2021\/12\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework.jpg","datePublished":"2021-12-12T21:23:15+00:00","dateModified":"2022-06-29T16:37:56+00:00","description":"Quarkus is an open-source Java framework that has been designed to run on Kubernetes platforms for developing and delivering applications on platforms such as serverless and cloud-native environments.Applications that have been developed with Quarkus can be natively compiled on top of the GraalVM and HotSpot, as well as running on traditional Java Virtual Machines (JVMs).","breadcrumb":{"@id":"https:\/\/exceptionly.com\/2021\/12\/12\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework\/#breadcrumb"},"inLanguage":"ar","potentialAction":[{"@type":"ReadAction","target":["https:\/\/exceptionly.com\/2021\/12\/12\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework\/"]}]},{"@type":"ImageObject","inLanguage":"ar","@id":"https:\/\/exceptionly.com\/2021\/12\/12\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework\/#primaryimage","url":"https:\/\/exceptionly.com\/wp-content\/uploads\/2021\/12\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework.jpg","contentUrl":"https:\/\/exceptionly.com\/wp-content\/uploads\/2021\/12\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework.jpg","width":1930,"height":766,"caption":"Welcome to Quarkus: Supersonic, Kubernetes-native Java Framework"},{"@type":"BreadcrumbList","@id":"https:\/\/exceptionly.com\/2021\/12\/12\/welcome-to-quarkus-supersonic-kubernetes-native-java-framework\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/exceptionly.com\/"},{"@type":"ListItem","position":2,"name":"Welcome to Quarkus: Supersonic, Kubernetes-Native Java Framework"}]},{"@type":"WebSite","@id":"https:\/\/exceptionly.com\/#website","url":"https:\/\/exceptionly.com\/","name":"Exceptionly","description":"Remote software talent acquisition at scale","publisher":{"@id":"https:\/\/exceptionly.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/exceptionly.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ar"},{"@type":"Organization","@id":"https:\/\/exceptionly.com\/#organization","name":"Exceptionly","url":"https:\/\/exceptionly.com\/","logo":{"@type":"ImageObject","inLanguage":"ar","@id":"https:\/\/exceptionly.com\/#\/schema\/logo\/image\/","url":"https:\/\/exceptionly.com\/wp-content\/uploads\/2021\/05\/exceptionly-search-logo.png","contentUrl":"https:\/\/exceptionly.com\/wp-content\/uploads\/2021\/05\/exceptionly-search-logo.png","width":400,"height":400,"caption":"Exceptionly"},"image":{"@id":"https:\/\/exceptionly.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/exceptionly\/","https:\/\/x.com\/exceptionly","https:\/\/www.linkedin.com\/company\/exceptionly\/","https:\/\/www.youtube.com\/channel\/UCet5wATTyif6knI0h4vUkNA"]},{"@type":"Person","@id":"https:\/\/exceptionly.com\/#\/schema\/person\/a2600170dfb4513350affede916c0ccf","name":"Fatma Elverir","image":{"@type":"ImageObject","inLanguage":"ar","@id":"https:\/\/secure.gravatar.com\/avatar\/93179e5b3e943c5bcda6ea20d6b37723c01dedb150ab7724bb4fb9af22eb3de6?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/93179e5b3e943c5bcda6ea20d6b37723c01dedb150ab7724bb4fb9af22eb3de6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/93179e5b3e943c5bcda6ea20d6b37723c01dedb150ab7724bb4fb9af22eb3de6?s=96&d=mm&r=g","caption":"Fatma Elverir"},"sameAs":["https:\/\/exceptionly.com"],"url":"https:\/\/exceptionly.com\/ar\/author\/fatmaelverir\/"}]}},"_links":{"self":[{"href":"https:\/\/exceptionly.com\/ar\/wp-json\/wp\/v2\/posts\/11686","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/exceptionly.com\/ar\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/exceptionly.com\/ar\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/exceptionly.com\/ar\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/exceptionly.com\/ar\/wp-json\/wp\/v2\/comments?post=11686"}],"version-history":[{"count":0,"href":"https:\/\/exceptionly.com\/ar\/wp-json\/wp\/v2\/posts\/11686\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/exceptionly.com\/ar\/wp-json\/wp\/v2\/media\/11840"}],"wp:attachment":[{"href":"https:\/\/exceptionly.com\/ar\/wp-json\/wp\/v2\/media?parent=11686"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/exceptionly.com\/ar\/wp-json\/wp\/v2\/categories?post=11686"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/exceptionly.com\/ar\/wp-json\/wp\/v2\/tags?post=11686"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}