<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Microservices on foojay.io - Friends Of OpenJDK</title><link>https://foojay.io/today/category/microservices/</link><description>Recent content in Microservices on foojay.io - Friends Of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 08 Sep 2026 11:25:22 +0000</lastBuildDate><atom:link href="https://foojay.io/today/category/microservices/index.xml" rel="self" type="application/rss+xml"/><item><title>Community Spotlight: BoxLang Express Brings Node-Style HTTP to the JVM</title><link>https://foojay.io/today/community-spotlight-boxlang-express-brings-node-style-http-to-the-jvm/</link><pubDate>Tue, 08 Sep 2026 11:25:18 +0000</pubDate><guid>https://foojay.io/today/community-spotlight-boxlang-express-brings-node-style-http-to-the-jvm/</guid><description>&lt;p&gt;&lt;img src="https://foojay.io/today/community-spotlight-boxlang-express-brings-node-style-http-to-the-jvm/boxlang-express-700x373.jpg" alt="" width="700" height="373" loading="lazy" decoding="async"&gt;&lt;/p&gt;&#10;&lt;p&gt;If you&amp;rsquo;ve spent years in Spring Boot, Micronaut, or Jakarta EE, &amp;ldquo;web framework&amp;rdquo; usually means a servlet container, an embedded Tomcat or Netty, a build step, and a fat jar before anything answers a request. What if you could skip all of that and still be on the JVM?&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;BoxLang Express&lt;/strong&gt; , a new community module built entirely by developer &lt;a href="https://kisdigital.com/posts/2026/08/introducing-boxexpress--express-js-ergonomics-for-boxlang" title="Robert Zehnder of KISDigital" target="_blank" rel="noopener noreferrer"&gt;Robert Zehnder of KISDigital&lt;/a&gt;, does exactly that. It&amp;rsquo;s built directly on &lt;code&gt;com.sun.net.httpserver.HttpServer&lt;/code&gt;, a class that&amp;rsquo;s been sitting in the JDK since Java 6, so there&amp;rsquo;s no embedded server to configure and nothing extra on the classpath for the HTTP layer itself. &lt;code&gt;boxlang server.bxs&lt;/code&gt; is the whole deployment story.&lt;/p&gt;</description></item><item><title>Idempotent Spring Boot: Safe REST with One Annotation</title><link>https://foojay.io/today/idempotent-spring-boot-starter/</link><pubDate>Tue, 04 Aug 2026 22:11:22 +0000</pubDate><guid>https://foojay.io/today/idempotent-spring-boot-starter/</guid><description>&lt;h2 id="idempotent-rest-endpoints-without-the-boilerplate"&gt;Idempotent REST Endpoints Without the Boilerplate&lt;/h2&gt;&#10;&lt;h2 id="stop-charging-your-users-twice-idempotent-rest-endpoints-with-one-annotation"&gt;Stop Charging Your Users Twice: Idempotent REST Endpoints with One Annotation&lt;/h2&gt;&#10;&lt;h2 id="the-problem-nobody-talks-about-until-production"&gt;The problem nobody talks about until production&lt;/h2&gt;&#10;&lt;p&gt;A user taps &amp;ldquo;Pay.&amp;rdquo; The request times out. Their app retries. Your server charges them twice.&lt;/p&gt;&#10;&lt;p&gt;You didn&amp;rsquo;t write a bug. The network did. But your users don&amp;rsquo;t care about that distinction.&lt;/p&gt;&#10;&lt;p&gt;The idempotency problem shows up in more places than payments. A load balancer replays a timed-out request. A mobile client double-taps a submit button. A Kubernetes pod retries after a restart. From the server&amp;rsquo;s perspective, all of these look identical: a second POST that arrives after the first one already executed.&lt;/p&gt;</description></item><item><title>What's New In The June 2026 Azul Payara Release?</title><link>https://foojay.io/today/whats-new-in-the-june-2026-azul-payara-release/</link><pubDate>Wed, 24 Jun 2026 11:28:52 +0000</pubDate><guid>https://foojay.io/today/whats-new-in-the-june-2026-azul-payara-release/</guid><description>&lt;p&gt;The June 2026 cycle ships the first regular monthly release of the Payara 7 line, plus a critical security fix that lands across every supported branch. Azul Payara 7.1.0 continues the Jakarta EE 11 line that went generally available in May, and is joined by Azul Payara Community 7.2026.6, Azul Payara 6.39.0, Azul Payara 5.88.0, and Azul Payara 4.1.2.191.56.&lt;/p&gt;&#10;&lt;p&gt;A single security fix, backported from Payara 7 down to Payara 4, runs through every release in this cycle. Two supported lines, 5.88.0 and 6.39.0, also carry a behaviour change to the server &amp;ldquo;ready&amp;rdquo; signal that a minority of deployments will want to read before upgrading.&lt;/p&gt;</description></item><item><title>Quarkus Unpacked: Insights from the Foojay Podcast</title><link>https://foojay.io/today/quarkus-unpacked-insights-from-the-foojay-podcast/</link><pubDate>Tue, 23 Jun 2026 12:36:54 +0000</pubDate><guid>https://foojay.io/today/quarkus-unpacked-insights-from-the-foojay-podcast/</guid><description>&lt;figure class="alignleft is-resized"&gt;&#10; &lt;img src="https://foojay.io/today/quarkus-unpacked-insights-from-the-foojay-podcast/3-Quarkus-Unpacked-2-2.jpeg" alt="Quarkus: A Runtime and Framework for Cloud-Native Java" style="width:300px" loading="lazy" class="is-zoomable"&gt;&lt;/figure&gt;&#10;&#10;&lt;p&gt;I recently had the pleasure of joining the &lt;a href="https://www.youtube.com/watch?v=_nJCTTrnZkE" target="_blank" rel="noopener noreferrer"&gt;Foojay podcast&lt;/a&gt; to talk about Quarkus in depth. The conversation covered a lot of ground, from what makes Quarkus different to the practical trade-offs between JVM and native mode. This post captures the key questions and answers from that discussion, lightly edited for readability.&lt;/p&gt;&#10;&lt;p&gt;If you have been following this blog series, note that the third installment on building your own stack with Quarkus is coming next. Consider this a bonus entry that distills the podcast conversation into a format you can read, reference, and share.&lt;/p&gt;</description></item><item><title>Jakarta EE is Ready for AI – Five Talks from OCX26 That Prove It</title><link>https://foojay.io/today/jakarta-ee-is-ready-for-ai-but-dont-just-take-my-word-for-it/</link><pubDate>Tue, 02 Jun 2026 11:41:01 +0000</pubDate><guid>https://foojay.io/today/jakarta-ee-is-ready-for-ai-but-dont-just-take-my-word-for-it/</guid><description>&lt;p&gt;Back in April I had the pleasure of attending Open Community Experience 2026 in Brussels - the Eclipse Foundation&amp;rsquo;s flagship open source conference. It&amp;rsquo;s always good to be in a room (or a few rooms 😉 ) with people who really care about the technology they work with. Several of my colleagues and friends were speaking - watching them present work they&amp;rsquo;ve spent serious time on is one of the better parts of this community.&lt;/p&gt;</description></item><item><title>AWS Nitro and CPU Graviton Meets Unikernels</title><link>https://foojay.io/today/aws-nitro-and-cpu-graviton-meets-unikernels/</link><pubDate>Fri, 10 Apr 2026 16:26:25 +0000</pubDate><guid>https://foojay.io/today/aws-nitro-and-cpu-graviton-meets-unikernels/</guid><description>&lt;h2 id="aws-nitro-and-cpu-graviton-meets-unikernels-java-and-quarkus-on-arm64-aws-graviton-with-nanos-unikernel"&gt;AWS Nitro and CPU Graviton Meets Unikernels: Java and Quarkus on ARM64 AWS Graviton with Nanos Unikernel&lt;/h2&gt;&#10;&lt;p&gt;&lt;img src="https://foojay.io/today/aws-nitro-and-cpu-graviton-meets-unikernels/2c957ea8-2c6b-4caa-86f8-5adeb9e8bedc-619d4e1c.jpg" alt="image" width="1536" height="1024" loading="lazy" decoding="async"&gt;&lt;/p&gt;&#10;&lt;h2 id="java-and-jakarta-ee-truly-meet-unikernels"&gt;Java and Jakarta EE Truly Meet Unikernels&lt;/h2&gt;&#10;&lt;p&gt;The key message of this article is simple and strong:&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;any Java or Jakarta EE application is already ready&lt;/strong&gt; to benefit from the advantages of unikernels.&lt;/p&gt;&#10;&lt;p&gt;Java and Jakarta EE, including modern frameworks such as Quarkus, can immediately take advantage of the unikernel model &lt;strong&gt;without waiting for new languages, new runtimes, or radical rewrites&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Spring Boot Actuator Health for MicroProfile Developers</title><link>https://foojay.io/today/spring-boot-actuator-health-for-microprofile-developers/</link><pubDate>Thu, 26 Mar 2026 09:30:00 +0000</pubDate><guid>https://foojay.io/today/spring-boot-actuator-health-for-microprofile-developers/</guid><description>&lt;p&gt;If you worked with MicroProfile Health, you already understand the value of exposing application health information through standardized endpoints. You know about liveness, readiness and startup probes. You implemented the HealthCheck interface and annotated your procedures with @Liveness, @Readiness and @Startup. Spring Boot Actuator follows a similar philosophy but takes a different architectural approach. This post will help you map your MicroProfile Health knowledge to Spring&amp;rsquo;s world.&lt;/p&gt;&#10;&lt;h2 id="the-conceptual-bridgethe-conceptual-bridge"&gt;The Conceptual BridgeThe Conceptual Bridge&lt;/h2&gt;&#10;&lt;p&gt;At its core, Spring Boot Actuator serves the same purpose as MicroProfile Health: it provides a mechanism for validating the availability and status of your application in containerized environments. Both specifications recognize that modern cloud platforms like Kubernetes need machine-readable health information to make decisions about pod lifecycle management.&lt;/p&gt;</description></item><item><title>Introducing the BoxLang Spring Boot Starter: Dynamic JVM Templating for Spring</title><link>https://foojay.io/today/introducing-the-boxlang-spring-boot-starter-dynamic-jvm-templating-for-spring/</link><pubDate>Thu, 19 Mar 2026 14:20:02 +0000</pubDate><guid>https://foojay.io/today/introducing-the-boxlang-spring-boot-starter-dynamic-jvm-templating-for-spring/</guid><description>&lt;p&gt;&lt;img src="https://foojay.io/today/introducing-the-boxlang-spring-boot-starter-dynamic-jvm-templating-for-spring/boxlang-spring-boot-release-700x467.jpg" alt="" width="700" height="467" loading="lazy" decoding="async"&gt;&lt;/p&gt;&#10;&lt;p&gt;Spring Boot developers know the pain of evaluating view technologies. Thymeleaf is great — until you need more expressiveness. FreeMarker is powerful — until the syntax fights you. What if you could write templates in a dynamic JVM language that gives you the full power of the platform, feels natural, and requires zero setup to integrate?&lt;/p&gt;&#10;&lt;p&gt;Meet the &lt;strong&gt;BoxLang Spring Boot Starter.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; Drop one dependency into your Spring Boot 3 app and start writing dynamic &lt;code&gt;.bxm&lt;/code&gt; templates powered by BoxLang — a modern, expressive JVM language. Zero configuration. Full web scopes. 100% Java interoperable. Not only that, you get full access to BoxLang&amp;rsquo;s framework capabilities so you can integrate tons of features into your Spring Boot applications:&lt;/p&gt;</description></item><item><title>JC-AI Newsletter #13</title><link>https://foojay.io/today/jc-ai-newsletter-13/</link><pubDate>Thu, 05 Feb 2026 21:12:12 +0000</pubDate><guid>https://foojay.io/today/jc-ai-newsletter-13/</guid><description>&lt;p&gt;Two weeks have passed, and it is time to present a new collection of readings that may shape developments, utilization or ideas in the field of artificial intelligence in 2026.&lt;/p&gt;&#10;&lt;p&gt;While significant activity characterizes the AI field, many unresolved research, design, and implementation challenges continue to impact progress. Future advancement depends heavily on understanding the nature of these challenges to approach probabilistic problems from the appropriate directions. This JC-AI newsletter features insightful interviews with key figures in the field, enabling readers to ask the right questions and compare visions of an &amp;lsquo;uncertain future&amp;rsquo; against current capabilities to maintain a grounded perspective.&lt;/p&gt;</description></item><item><title>BoxLang 1.10.0: Functional Arrays, Elegant Loops &amp; Distributed Locking</title><link>https://foojay.io/today/boxlang-1-10-0-functional-arrays-elegant-loops-distributed-locking/</link><pubDate>Wed, 04 Feb 2026 10:46:22 +0000</pubDate><guid>https://foojay.io/today/boxlang-1-10-0-functional-arrays-elegant-loops-distributed-locking/</guid><description>&lt;p&gt;&lt;img src="https://foojay.io/today/boxlang-1-10-0-functional-arrays-elegant-loops-distributed-locking/boxlang-v1.10.0-700x467.jpg" alt="" width="700" height="467" loading="lazy" decoding="async"&gt;&lt;/p&gt;&#10;&lt;p&gt;We&amp;rsquo;re excited to announce &lt;strong&gt;BoxLang 1.10.0&lt;/strong&gt;, a feature-packed release that brings powerful functional programming capabilities, elegant loop syntax, and enterprise-grade distributed locking to the BoxLang runtime. This release represents a significant leap forward in developer productivity and application scalability.&lt;/p&gt;&#10;&lt;h2 id="-whats-new"&gt;🎯 What&amp;rsquo;s New&lt;/h2&gt;&#10;&lt;h3 id="nine-new-array-methods-for-functional-programming"&gt;Nine New Array Methods for Functional Programming&lt;/h3&gt;&#10;&lt;p&gt;BoxLang 1.10.0 introduces nine powerful array methods that bring modern functional programming patterns to your collections. These methods enable cleaner, more expressive code while reducing the need for verbose iteration patterns.&lt;/p&gt;</description></item><item><title>Enterprise Java in Practice</title><link>https://foojay.io/today/enterprise-java-in-practice-fragmentation-platforms-and-real-world-trade-offs/</link><pubDate>Thu, 29 Jan 2026 10:11:40 +0000</pubDate><guid>https://foojay.io/today/enterprise-java-in-practice-fragmentation-platforms-and-real-world-trade-offs/</guid><description>&lt;p&gt;Enterprise Java has matured into one of the most stable and widely adopted ecosystems in software development. Yet for many teams, the biggest challenges no longer come from the language itself, but from the complexity of the environments built around it.&lt;/p&gt;&#10;&lt;p&gt;Modern enterprise Java teams are dealing with a mix of legacy Java EE applications, Jakarta EE runtimes, microservices, container platforms, cloud-native deployments, and increasingly sophisticated DevOps pipelines. The result is an ecosystem that is powerful, but often fragmented across frameworks, runtimes, tooling, and operational models.&lt;/p&gt;</description></item><item><title>Not a Lucid Web3 Dream Anymore: x402, ERC-8004, A2A, and The Next Wave of AI Commerce</title><link>https://foojay.io/today/not-a-lucid-web3-dream-anymore-x402-erc-8004-a2a-and-the-next-wave-of-ai-commerce/</link><pubDate>Fri, 09 Jan 2026 16:05:58 +0000</pubDate><guid>https://foojay.io/today/not-a-lucid-web3-dream-anymore-x402-erc-8004-a2a-and-the-next-wave-of-ai-commerce/</guid><description>&lt;p&gt;&lt;img src="https://foojay.io/today/not-a-lucid-web3-dream-anymore-x402-erc-8004-a2a-and-the-next-wave-of-ai-commerce/daydreams-scaled.jpg" alt="DayDreams" width="1600" height="686" loading="lazy" decoding="async"&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;em&gt;This article is for technically savvy readers, especially developers, protocol designers, and product teams working with AI agents, APIs, or crypto rails, who want a clear view of how these areas connect.&lt;/em&gt;&lt;br&gt;&#10;&lt;em&gt;It explains how x402, ERC-8004, and agent discovery layers turn APIs and agents into small usage-based businesses, and what that means for real systems over the next 1–3 years.&lt;/em&gt;&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;h3 id="vocabulary-for-this-article"&gt;Vocabulary for this article&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;In this article, I use the term &lt;em&gt;micro business&lt;/em&gt; for a very small overall business, and &lt;em&gt;nano business&lt;/em&gt; for a single x402-priced endpoint or agent that earns on its own from per-call payments in stablecoins.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;AP2 (Agent Payment Protocol):&lt;/strong&gt; AP2 defines how agents pay each other. It standardizes how a service quotes a price, how payment is confirmed, and how both sides record what was bought, so payments fit directly into automated agent workflows. In practice, it is a protocol that lets one machine pay another machine for work, without a human in the loop.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;A2A (Agent-to-Agent communication):&lt;/strong&gt; A2A covers how agents talk, pass context, and coordinate work. It lets agents call each other, exchange structured messages, and chain tasks instead of acting as isolated scripts.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;x402:&lt;/strong&gt; x402 is an HTTP-based payment protocol for APIs. A server responds with status &lt;code&gt;402 Payment Required&lt;/code&gt;, the price, and a payment route, and the client pays by using stablecoins on-chain and then retries the request to get the result.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;ERC-8004 (8004):&lt;/strong&gt; ERC-8004 standard is an on-chain registry for agents. It gives each agent an identity and a place to store reputation data, so other agents and tools can decide whom to trust and which services to call.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="foreword"&gt;Foreword&lt;/h2&gt;&#10;&lt;p&gt;&lt;strong&gt;x402&lt;/strong&gt; and &lt;strong&gt;ERC-8004&lt;/strong&gt; .&lt;/p&gt;</description></item><item><title>Optimizing Java for the Cloud-Native Era with Quarkus</title><link>https://foojay.io/today/optimizing-java-for-the-cloud-native-era-with-quarkus/</link><pubDate>Tue, 06 Jan 2026 21:09:00 +0000</pubDate><guid>https://foojay.io/today/optimizing-java-for-the-cloud-native-era-with-quarkus/</guid><description>&lt;p&gt;This article explores how Quarkus can help organizations reduce costs, streamline development, and modernize their Java applications for today&amp;rsquo;s cloud-native environments. It outlines the real-world benefits of adopting Quarkus and highlights how its core features address the performance and scalability challenges commonly associated with traditional Java frameworks.&lt;/p&gt;&#10;&lt;p&gt;Quarkus is already being adopted across industries. One example is Orange, a global telecom provider that selected Quarkus to support its 5G API initiative, and benefited from fast startup times, a lightweight footprint, and seamless integration with Kubernetes.&lt;/p&gt;</description></item><item><title>Java and Jakarta EE and the Evolution of the Cloud with Nanos Unikernel</title><link>https://foojay.io/today/java-jakarta-ee-and-the-evolution-of-the-cloud-with-nanos-unikernel/</link><pubDate>Tue, 06 Jan 2026 20:51:09 +0000</pubDate><guid>https://foojay.io/today/java-jakarta-ee-and-the-evolution-of-the-cloud-with-nanos-unikernel/</guid><description>&lt;p&gt;The evolution of the Java and Jakarta Enterprise ecosystem is converging toward an increasingly simple, efficient, and scalable architecture that improves security, delivers higher performance, and reduces hardware and infrastructure costs.&lt;/p&gt;&#10;&lt;p&gt;For years, Kubernetes has been considered the de‑facto standard for modernizing Java applications in a cloud‑native direction. However, Kubernetes is not the only way to achieve scalability, continuous upgrades, and isolation. An alternative approach — often underestimated — is to leverage the &lt;strong&gt;hypervisors already included and fully managed by major cloud providers&lt;/strong&gt; , using &lt;strong&gt;Unikernel&lt;/strong&gt; images based on &lt;a href="https://nanovms.com" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;Nanos&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Scalable Enterprise Java for the Cloud</title><link>https://foojay.io/today/scalable-enterprise-java-for-the-cloud/</link><pubDate>Thu, 18 Dec 2025 11:41:51 +0000</pubDate><guid>https://foojay.io/today/scalable-enterprise-java-for-the-cloud/</guid><description>&lt;p&gt;We&amp;rsquo;re excited to introduce &lt;a href="https://payara.fish/resource/scalable-enterprise-java-for-the-cloud/" title="*Scalable Enterprise Java for the Cloud*," target="_blank" rel="noopener noreferrer"&gt;&lt;em&gt;Scalable Enterprise Java for the Cloud&lt;/em&gt;,&lt;/a&gt; a new free eBook created through a close collaboration between &lt;a href="https://payara.fish/" title="Payara" target="_blank" rel="noopener noreferrer"&gt;Payara&lt;/a&gt;, Java Champion &lt;a href="https://otaviojava.com/" title="Otavio Santana" target="_blank" rel="noopener noreferrer"&gt;Otavio Santana&lt;/a&gt;, and the Oracle NoSQL team Dario Vega &amp;amp; Michael Brey. This project brings together different parts of the Java ecosystem with a shared goal, helping developers build modern, cloud-native enterprise applications using open standards.&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://payara.fish/resource/scalable-enterprise-java-for-the-cloud/" title="**Download the free eBook here**" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;Download the free eBook here&lt;/strong&gt;&lt;/a&gt; (no form fill necessary).&lt;/p&gt;</description></item><item><title>Spring Boot 4 - OpenTelemetry Guide</title><link>https://foojay.io/today/spring-boot-4-opentelemetry-explained/</link><pubDate>Wed, 10 Dec 2025 09:09:58 +0000</pubDate><guid>https://foojay.io/today/spring-boot-4-opentelemetry-explained/</guid><description>&lt;p&gt;In my previous &lt;a href="https://foojay.io/today/preparing-for-spring-framework-7-and-spring-boot-4/"&gt;article&lt;/a&gt;, I outlined a comprehensive list of features introduced in Spring Framework 7 and Spring Boot 4.&lt;/p&gt;&#10;&lt;p&gt;In this series of articles, we will explore these features in detail using a pragmatic approach. In this second article, I will dive deep into integration of Observability framework i.e., &lt;em&gt;&lt;strong&gt;OpenTelemetry with SpringBoot&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;&#10;&lt;p&gt;As an architect and developer, when I engage in system design—whether it involves monolithic architecture, microservices, or contemporary cloud-native applications—I have made the integration of &lt;strong&gt;observability&lt;/strong&gt; patterns utilizing &lt;strong&gt;open-telemetry&lt;/strong&gt; tools a standard practice. Through observability, we can monitor application behavior via &lt;strong&gt;metrics, logs, and traces&lt;/strong&gt; that we trigger&lt;/p&gt;</description></item><item><title>Micrometer &amp; Prometheus in Spring Boot: Kafka Burger Orders</title><link>https://foojay.io/today/micrometer-prometheus-in-spring-boot-kafka-burger-orders/</link><pubDate>Fri, 14 Nov 2025 10:13:03 +0000</pubDate><guid>https://foojay.io/today/micrometer-prometheus-in-spring-boot-kafka-burger-orders/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/eSreg0xPGqo?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;👨‍💻 GitHub: &lt;a href="https://github.com/vinny59200/dukeburger" target="_blank" rel="noopener noreferrer"&gt;https://github.com/vinny59200/dukeburger&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;🔵⚪⚪⚪⚪⚪⚪⚪⚪⚪⚪⚪&lt;/p&gt;&#10;&lt;h2 id="tldr"&gt;TL;DR&lt;/h2&gt;&#10;&lt;p&gt;This guide shows how to use &lt;strong&gt;Micrometer and Prometheus in Spring Boot&lt;/strong&gt; to track a custom metric for a Kafka-driven Burger Orders app. You&amp;rsquo;ll post a burger order to a REST endpoint, publish it to Kafka, consume the topic, and increment a counter for all &amp;ldquo;DukeBurger&amp;rdquo; orders. Copy the snippets, run, and you&amp;rsquo;ll see your metric on &lt;code&gt;/actuator/prometheus&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Monolith vs Microservices in 2025</title><link>https://foojay.io/today/monolith-vs-microservices-2025/</link><pubDate>Mon, 04 Aug 2025 13:45:09 +0000</pubDate><guid>https://foojay.io/today/monolith-vs-microservices-2025/</guid><description>&lt;p&gt;In recent years, the tech world has been buzzing with debates about architecture choices. However, 2025 offers a more balanced perspective.&lt;/p&gt;&#10;&lt;p&gt;Simplicity, developer experience, and maintainability are reshaping how teams design software.&lt;/p&gt;&#10;&lt;p&gt;From Infrastructure as Code (IaC) to &amp;ldquo;vibecoding&amp;rdquo; culture, and from startups to enterprises, many rethink their position on the monolith vs microservices 2025 spectrum.&lt;/p&gt;&#10;&lt;p&gt;So, what has actually changed?&lt;/p&gt;&#10;&lt;p&gt;🔵⚪⚪⚪⚪⚪&lt;/p&gt;&#10;&lt;h2 id="-terraform-and-iac-changing-architecture-with-confidence"&gt;🔁 Terraform and IaC: Changing Architecture with Confidence&lt;/h2&gt;&#10;&lt;h3 id="how-infrastructure-as-code-helps-teams-adapt-architecture-efficiently"&gt;How Infrastructure as Code helps teams adapt architecture efficiently&lt;/h3&gt;&#10;&lt;p&gt;Infrastructure as Code tools like Terraform make architecture changes easier. Nevertheless, the process is not effortless.&lt;/p&gt;</description></item><item><title>Spring Cloud Stream for Real-Time Event-Driven Systems</title><link>https://foojay.io/today/spring-cloud-stream-event-driven-architecture-part-1/</link><pubDate>Mon, 21 Jul 2025 13:33:34 +0000</pubDate><guid>https://foojay.io/today/spring-cloud-stream-event-driven-architecture-part-1/</guid><description>&lt;h2 id="spring-cloud-stream-event-driven-architecture--part-1"&gt;Spring Cloud Stream: Event-Driven Architecture – Part 1&lt;/h2&gt;&#10;&lt;p&gt;&lt;strong&gt;Envision operating a successful e-commerce platform where every moment is crucial. Customers make purchases, adjust inventory levels, process payments, and dispatch shipping alerts—all in real time. In the background, microservices diligently function to guarantee seamless operations. However, how do these services interact effectively, particularly during peak traffic occurrences such as flash sales or holiday shopping events?&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;An efficient method to execute this use case involves utilizing Spring Cloud Stream (SCS) as the messaging infrastructure. SCS facilitates seamless interaction among microservices, enhancing the system&amp;rsquo;s responsiveness and scalability. A significant benefit of SCS is that it provides an abstraction layer, allowing developers to transition between messaging technologies such as Kafka or RabbitMQ or Pulsar or Amazon Kinesis without altering their fundamental business logic.&lt;/p&gt;</description></item><item><title>Spring Cloud Stream: Demystifying Event-Driven Architecture</title><link>https://foojay.io/today/spring-cloud-stream-demystifying-event-driven-architecture/</link><pubDate>Fri, 28 Feb 2025 08:34:32 +0000</pubDate><guid>https://foojay.io/today/spring-cloud-stream-demystifying-event-driven-architecture/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;&#10;&lt;p&gt;&lt;em&gt;Consider a bustling restaurant environment. The kitchen receives a flood of orders, waitstaff dart between tables, and patrons anxiously glance at their watches. Each time a waiter takes an order, he or she must verify it with the kitchen and wait for the kitchen to prepare the meal before attending to another table. This cumbersome method hampers efficiency, leaving the restaurant unable to meet customer demand.&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;em&gt;Now envision an alternative situation. Instead of enduring delays, waitstaff enter orders into a centralized system, prompting the kitchen to begin meal preparation immediately upon receipt. As soon as the kitchen prepares the food, waiters receive instant notifications, enabling them to serve customers promptly without any delays. This exemplifies event-driven architecture: a fluid, real-time system where they exchange information asynchronously, promoting scalability and quick responsiveness.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Event-Driven Architecture and Change Data Capture Made Easy</title><link>https://foojay.io/today/event-driven-architecture-and-change-data-capture-made-easy/</link><pubDate>Tue, 18 Feb 2025 16:44:14 +0000</pubDate><guid>https://foojay.io/today/event-driven-architecture-and-change-data-capture-made-easy/</guid><description>&lt;p&gt;Hello again! In this article (Part 1), we will discuss two common ways to build modern &lt;a href="https://mezocode.com/microservice-journey-part-2-design-principles-for-well-crafted-architecture/" target="_blank" rel="noopener noreferrer"&gt;software systems&lt;/a&gt;: &lt;strong&gt;Event-Driven Architecture (EDA) and Change Data Capture (CDC)&lt;/strong&gt;. They serve different purposes but can work well together in some situations.&lt;/p&gt;&#10;&lt;p&gt;we&amp;rsquo;ll explain &lt;strong&gt;EDA&lt;/strong&gt; and &lt;strong&gt;CDC&lt;/strong&gt;, discuss their use cases, and explain when to use them and when not to. Using plain language and relatable examples, we&amp;rsquo;ll also explore how they work together.&lt;/p&gt;</description></item><item><title>Warp: the new CRaC engine</title><link>https://foojay.io/today/warp-the-new-crac-engine/</link><pubDate>Wed, 18 Dec 2024 16:04:48 +0000</pubDate><guid>https://foojay.io/today/warp-the-new-crac-engine/</guid><description>&lt;p&gt;&lt;strong&gt;Many regular Foojay readers are already familiar with project CRaC - a technology that can checkpoint (suspend) running Java application into a snapshot image and later restore it to the already warmed-up state. The most common motivation for this is significantly faster startup than if the application (and JVM) started normally. Traditionally this was supported by CRIU (Checkpoint and Restore in Userspace), coming with the burden of root privileges required for execution. Since Azul Zulu October 2024 release, this pain-point can be gone: meet Warp.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Run a Java Lambda Function From a Docker image</title><link>https://foojay.io/today/run-a-java-lambda-function-from-a-docker-image/</link><pubDate>Wed, 11 Dec 2024 16:16:36 +0000</pubDate><guid>https://foojay.io/today/run-a-java-lambda-function-from-a-docker-image/</guid><description>&lt;p&gt;&lt;strong&gt;Have you ever wanted to deploy a Java Serverless function, but package it with a Docker Image? That is possible now with AWS new Container support. This guide will show you how to try it yourself, step by step!&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;The Hello Lambda Function project contains an AWS Lambda maven application with &lt;a href="https://github.com/aws/aws-sdk-java-v2" target="_blank" rel="noopener noreferrer"&gt;AWS Java SDK 2.x&lt;/a&gt; dependencies.&lt;/p&gt;&#10;&lt;p&gt;Here follows instructions from AWS Document on building &lt;a href="https://docs.aws.amazon.com/lambda/latest/dg/java-image.html#java-image-instructions" target="_blank" rel="noopener noreferrer"&gt;Lambda for Java&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;The sample code seen below can be found in my GitHub repository: &lt;a href="https://github.com/charlfasching/hello-lambda" target="_blank" rel="noopener noreferrer"&gt;hello-lambda&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>GlassFish is rolling forward. What’s New?</title><link>https://foojay.io/today/glassfish-is-rolling-forward-whats-new/</link><pubDate>Tue, 26 Nov 2024 15:11:17 +0000</pubDate><guid>https://foojay.io/today/glassfish-is-rolling-forward-whats-new/</guid><description>&lt;p&gt;&lt;strong&gt;The Evolution Continues. GlassFish, which used to be a popular application server, free to use and reliable, is evolving again. If you&amp;rsquo;ve been holding onto your old GlassFish instances, there&amp;rsquo;s good news—things have gotten a lot more exciting recently.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Since we created the OmniFish company and started improving GlassFish in 2022 (read about that story in &lt;a href="https://omnifish.ee/2022/06/28/oh-what-did-you-do-to-glassfish/" target="_blank" rel="noopener noreferrer"&gt;Oh, What Did You Do to GlassFish?!&lt;/a&gt;), a lot has happened around GlassFish. We joined the Eclipse GlassFish project and &lt;a href="https://blogs.eclipse.org/post/tanja-obradovic/welcome-omnifish-jakarta-ee-working-group" target="_blank" rel="noopener noreferrer"&gt;joined the Jakarta EE Working Group&lt;/a&gt; as well.&lt;/p&gt;</description></item><item><title>Get recognized for your cloud-native Java development skills</title><link>https://foojay.io/today/get-recognized-for-your-cloud-native-java-development-skills-with-this-new-badge/</link><pubDate>Thu, 29 Aug 2024 16:08:34 +0000</pubDate><guid>https://foojay.io/today/get-recognized-for-your-cloud-native-java-development-skills-with-this-new-badge/</guid><description>&lt;p&gt;&lt;strong&gt;In a world where in-demand skills are critical for job success, security, and progression, it&amp;rsquo;s vital that we, as developers, ensure we are showcasing our skills to the wider world. This can include qualifications, courses, and badges, all of which help us to advertise our skills and highlight our professional experiences and expertise.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;So, to help make this easier (and free!) for Java developers, the Open Liberty team created the first-ever Liberty badge: &lt;a href="https://ibm.biz/FooJayLibertyDeveloperEssentialsBadge" title="Liberty Developer Essentials" target="_blank" rel="noopener noreferrer"&gt;Liberty Developer Essentials&lt;/a&gt;!&lt;/p&gt;</description></item><item><title>Creating 12-factor cloud-native Java apps with open source</title><link>https://foojay.io/today/creating-cloud-native-java-applications-with-the-12-factor-app-methodology/</link><pubDate>Fri, 23 Aug 2024 05:30:51 +0000</pubDate><guid>https://foojay.io/today/creating-cloud-native-java-applications-with-the-12-factor-app-methodology/</guid><description>&lt;p&gt;&lt;strong&gt;Learn how you could create cloud-native Java apps that are portable, scalable, and reliable with the 12 factor app methodology and open source Java frameworks.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Created in 2012, the 12-factor app methodology was designed to provide a set of guidelines for helping developers and organizations to design and build cloud-native applications. We&amp;rsquo;ll explore how you can take advantage of each of these 12 factors to create applications, utilizing open source technologies, that thrive in the cloud.&lt;/p&gt;</description></item><item><title>Run AI-enabled JakartaEE/MicroProfile apps with LangChain4j</title><link>https://foojay.io/today/run-ai-enabled-jakarta-ee-and-microprofile-applications-with-langchain4j-and-open-liberty/</link><pubDate>Mon, 12 Aug 2024 22:14:36 +0000</pubDate><guid>https://foojay.io/today/run-ai-enabled-jakarta-ee-and-microprofile-applications-with-langchain4j-and-open-liberty/</guid><description>&lt;p&gt;&lt;strong&gt;Artificial Intelligence (AI) is an exciting and disruptive field that is already transforming businesses, and even entire industries, by enabling automation, improving decision-making and unlocking new insights from data.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;With the rise in large language models (LLMs) such as ChatGPT, there is a significant shift in the performance of AI and its potential to drive enterprise value. So, how will this impact on software development and the creation of cloud-native Java applications for enterprises?&lt;/p&gt;</description></item><item><title>Identify Dependencies in Codebases During Microservice Migration</title><link>https://foojay.io/today/how-to-identify-dependencies-in-your-codebase-during-microservices-migration/</link><pubDate>Fri, 07 Jun 2024 07:17:58 +0000</pubDate><guid>https://foojay.io/today/how-to-identify-dependencies-in-your-codebase-during-microservices-migration/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;Migration from a monolithic architecture to microservices presents challenges, particularly in identifying and managing dependencies within the codebase. By analyzing the application&amp;rsquo;s training data, we can uncover the seams and threads that bind the application together, discovering a safer, more iterative path to refactor our code.&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;Table of Contents&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Collecting tracing data to understand code dependencies&lt;/li&gt;&#10;&lt;li&gt;Using Digma Analytic Insights to identify dependencies in your codebase:&lt;/li&gt;&#10;&lt;li&gt;Code Nexus Point Insight&lt;/li&gt;&#10;&lt;li&gt;Top Usage Insight&lt;/li&gt;&#10;&lt;li&gt;Discovering Dead Code&lt;/li&gt;&#10;&lt;li&gt;Duration Breakdown Insight&lt;/li&gt;&#10;&lt;li&gt;Conclusion: Identifying Dependencies in Your Codebase During Microservices Migration&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;Migration from a monolithic architecture to microservices can be crucial for scalability, flexibility, and development velocity. However, this transformation has challenges, particularly when trying to identify and manage dependencies within the codebase. Many teams optimistically embark on an application-wide modernization epic, thinking of making short work of refactoring their codebase to be more modular. Unfortunately, many of these initiatives quickly lose the initial momentum, as it becomes apparent that untangling the Gordian monolith knot is proving to be an uphill struggle.&lt;/p&gt;</description></item><item><title>Foojay Podcast #51: Persistence, Evolving your Career, Jakarta EE, GlassFish, Messaging via Telegram</title><link>https://foojay.io/today/foojay-podcast-51/</link><pubDate>Mon, 03 Jun 2024 08:03:53 +0000</pubDate><guid>https://foojay.io/today/foojay-podcast-51/</guid><description>&lt;p&gt;This is part 3 of the JCON interviews.&lt;/p&gt;&#10;&lt;p&gt;Frank meets Otavio Santana, who recently wrote the book &amp;ldquo;Mastering the Java Virtual Machine.&amp;rdquo; At JCON, he talked about the persistence layer and how you can evolve your career.&lt;/p&gt;&#10;&lt;p&gt;You&amp;rsquo;ll also learn more about Jakarta EE, GlassFish, and a PET project with messaging via Telegram.&lt;/p&gt;&#10;&lt;h2 id="video"&gt;Video&lt;/h2&gt;&#10;&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/7-lhQld4KVc?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;h2 id="podcast-apps"&gt;Podcast Apps&lt;/h2&gt;&#10;&lt;p&gt;You can listen and subscribe to the Foojay Podcast on:&lt;/p&gt;</description></item><item><title>Exploring Cost-Effective Solutions for Stateful Rest Services</title><link>https://foojay.io/today/exploring-cost-effective-solutions-for-stateful-rest-services/</link><pubDate>Mon, 27 May 2024 13:13:02 +0000</pubDate><guid>https://foojay.io/today/exploring-cost-effective-solutions-for-stateful-rest-services/</guid><description>&lt;h2 id="a-case-study-with-ibm-cloud-code-engine-eclipsestore-and-ibm-cloud-object-storage"&gt;A Case Study with IBM Cloud Code Engine, EclipseStore, and IBM Cloud Object Storage&lt;/h2&gt;&#10;&lt;p&gt;In the dynamic realm of cloud computing, finding cost-effective solutions for stateful rest services that don&amp;rsquo;t necessarily require scaling can be a nuanced challenge.&lt;/p&gt;&#10;&lt;p&gt;In this article, we&amp;rsquo;ll take a pragmatic look at a use case leveraging &lt;a href="https://www.ibm.com/products/code-engine" title="IBM Cloud Code Engine" target="_blank" rel="noopener noreferrer"&gt;IBM Cloud Code Engine&lt;/a&gt;, &lt;a href="https://eclipsestore.io/" title="EclipseStore" target="_blank" rel="noopener noreferrer"&gt;EclipseStore&lt;/a&gt;, and &lt;a href="https://www.ibm.com/products/cloud-object-storage" title="IBM Cloud Object Storage (COS)" target="_blank" rel="noopener noreferrer"&gt;IBM Cloud Object Storage (COS)&lt;/a&gt;. The goal is to shed light on how this can be a practical and economical alternative, particularly when scalability is not a primary concern.&lt;/p&gt;</description></item></channel></rss>