Warning: file_get_contents(https://dzone.com/articles/next-level-persistence-jakarta-ee): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274
Warning: file_get_contents(https://dzone.com/articles/best-java-gui-frameworks-for-modern-applications): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274
Warning: file_get_contents(https://dzone.com/articles/adaptive-rate-limiting-spring-cloud-gateway): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274
Warning: file_get_contents(https://dzone.com/articles/how-global-payment-processors-use-apache): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274
Warning: file_get_contents(https://dzone.com/articles/future-of-data-streaming-apache-flink-for-agentic-ai): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274
Warning: file_get_contents(https://dzone.com/articles/java-high-availability-failures): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274
Warning: file_get_contents(https://dzone.com/articles/how-to-secure-a-spring-ai-mcp-server-with-an-api-k): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274
Warning: file_get_contents(https://dzone.com/articles/kotlin-code-style-best-practices-for-former-java-d): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274
Warning: file_get_contents(https://dzone.com/articles/building-a-containerized-quarkus-api-and-a-cicd-pi): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274
Warning: file_get_contents(https://dzone.com/articles/automated-deployment-ci-cd-pipe-line-tool-mule4): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274
Warning: file_get_contents(https://dzone.com/articles/securing-verifiable-credentials-with-dpop-spring-boot): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274
Warning: file_get_contents(https://dzone.com/articles/how-to-perform-response-verification-in-java-api-test): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274
Warning: file_get_contents(https://dzone.com/articles/java-8-date-conversion-best-practices): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274
Warning: file_get_contents(https://dzone.com/articles/optimizing-java-arm64-cloud-applications): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274
Warning: file_get_contents(https://dzone.com/articles/virtual-threads-in-jdk-21-revolutionize-java-multithreading): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274
Warning: file_get_contents(https://dzone.com/articles/rest-assured-java-test-post-requests-part-ii): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274
Warning: file_get_contents(https://dzone.com/articles/design-java-web-services-that-recover-from-failure): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274
Warning: file_get_contents(https://dzone.com/articles/stop-writing-excel-specs-markdown-first-approach): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274
Warning: file_get_contents(https://dzone.com/articles/running-load-test-web-app-using-maven-plugins): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274
Warning: file_get_contents(https://dzone.com/articles/jdk-memory-bloat-containers): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274 enDZone Java Zone
https://dzone.com/java
Recent posts in Java on DZone.comNext-Level Persistence in Jakarta EE: How We Got Here and Why It Matters
https://dzone.com/articles/next-level-persistence-jakarta-ee
<p>Enterprise Java persistence has never really been about APIs. It has always been about assumptions. Long before frameworks, annotations, or repositories entered the picture, the enterprise Java ecosystem was shaped by a single, dominant belief: persistence meant relational databases. That assumption influenced how applications were designed, how teams reasoned about data, and how the Java platform itself evolved.</p>
<p>This article is inspired by a presentation given by <a href="https://www.linkedin.com/in/arjantijms/?originalSubdomain=nl" rel="noopener noreferrer" target="_blank">Arjan Tijms</a>, director of <a href="https://omnifish.ee/">OmniFish</a>, titled <em>“Next-level persistence in Jakarta EE: Jakarta Data and Jakarta NoSQL.”</em> Delivered in 2024, the talk offers a clear and pragmatic view of why Jakarta EE persistence needed to evolve, how Jakarta Data fits into the platform, and how it relates to Jakarta Persistence and Jakarta NoSQL. While the presentation provides the technical backbone, this article expands on the historical context and architectural motivations behind that evolution.</p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/next-level-persistence-jakarta-ee</span>Mon, 09 Feb 2026 14:00:00 GMThttps://dzone.com/articles/3637968Otavio SantanaBest Java GUI Frameworks for Modern Applications
https://dzone.com/articles/best-java-gui-frameworks-for-modern-applications
<p data-end="504" data-start="194">Java has become one of the world’s most versatile programming languages, chosen for its adaptability, stability, and platform independence. Its extensive ecosystem encompasses virtually every application type, from web development to enterprise solutions, game design, the <a href="https://dzone.com/articles/the-internet-of-things-revolution">Internet of Things (IoT)</a>, and beyond.</p>
<p data-end="679" data-start="506">With an estimated <a href="https://stratoflow.com/why-is-java-so-popular/">51 billion active</a> Java Virtual Machines (JVMs) globally, it goes without question that Java powers a substantial portion of modern software infrastructure.</p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/best-java-gui-frameworks-for-modern-applications</span>Fri, 06 Feb 2026 14:00:00 GMThttps://dzone.com/articles/3603723Rodolfo OrtegaRate Limiting Beyond “N Requests/sec”: Adaptive Throttling for Spiky Workloads (Spring Cloud Gateway)
https://dzone.com/articles/adaptive-rate-limiting-spring-cloud-gateway
<p data-end="390" data-start="105">Most teams add <a href="https://dzone.com/articles/what-you-must-know-about-rate-limiting">rate limiting</a> after an outage, not before one. I’ve done it both ways, and the “after” version usually looks like this: someone picks a number (say 500 rps), wires up a filter, and feels safer. Then the next incident happens anyway — because the problem wasn’t the number.</p>
<p data-end="421" data-start="392">The real problems tend to be:</p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/adaptive-rate-limiting-spring-cloud-gateway</span>Wed, 04 Feb 2026 18:00:00 GMThttps://dzone.com/articles/3632523Varun PandeyHow Global Payment Processors like Stripe and PayPal Use Apache Kafka and Flink to Scale
https://dzone.com/articles/how-global-payment-processors-use-apache
<p data-end="601" data-start="228">The recent announcement that Global Payments will acquire Worldpay for $22.7 billion has once again put the spotlight on the payment processing space. This move consolidates two giants and signals the growing importance of real-time, global payment infrastructure. But behind this shift is something deeper: data streaming has become the backbone of modern payment systems.</p>
<p data-end="1021" data-start="603">From Stripe’s 99.9999% Kafka availability to PayPal streaming over a trillion events per day, and Payoneer replacing its existing message broker with data streaming, the world’s leading payment processors are redesigning their core systems around streaming technologies. Even companies like Worldline, which developed its own Apache Kafka management platform, have made Kafka central to their financial infrastructure.</p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/how-global-payment-processors-use-apache</span>Tue, 03 Feb 2026 12:00:00 GMThttps://dzone.com/articles/3629534Kai WähnerThe Future of Data Streaming with Apache Flink for Agentic AI
https://dzone.com/articles/future-of-data-streaming-apache-flink-for-agentic-ai
<p data-end="604" data-start="230"><a href="https://dzone.com/articles/how-autonomous-ai-agents-are-redefining-enterprise-analytics">Agentic AI is changing how enterprises think about automation and intelligence</a>. Agents are no longer reactive systems. They are goal-driven, context-aware, and capable of autonomous decision-making. But to operate effectively, agents must be connected to the real-time pulse of the business. This is where data streaming with Apache Kafka and Apache Flink becomes essential.</p>
<p data-end="876" data-start="606">Apache Flink is entering a new phase with the proposal of Flink Agents, a sub-project designed to power system-triggered, event-driven AI agents natively within Flink’s streaming runtime. Let’s explore what this means for the future of agentic systems in the enterprise.</p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/future-of-data-streaming-apache-flink-for-agentic-ai</span>Wed, 21 Jan 2026 20:00:09 GMThttps://dzone.com/articles/3626198Kai WähnerWhy High-Availability Java Systems Fail Quietly Before They Fail Loudly
https://dzone.com/articles/java-high-availability-failures
<p data-end="679" data-start="432">Most engineers imagine failures as sudden events. A service crashes. A node goes down. An alert fires, and everyone jumps into action. In real high-availability Java systems, failures rarely behave that way. They almost always arrive quietly first.</p>
<p data-end="1014" data-start="681">Systems that have been running reliably for months or years begin to show small changes. Latency creeps up. Garbage collection pauses last a little longer. Thread pools spend more time near saturation. Nothing looks broken, and dashboards stay mostly green. Then one day, the system tips over, and the failure suddenly looks dramatic.</p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/java-high-availability-failures</span>Wed, 21 Jan 2026 14:00:00 GMThttps://dzone.com/articles/3617931Krishna KandiHow to Secure a Spring AI MCP Server with an API Key via Spring Security
https://dzone.com/articles/how-to-secure-a-spring-ai-mcp-server-with-an-api-k
<p>Instead of building custom integrations for a variety of AI assistants or <a href="https://dzone.com/articles/decoding-large-language-models-and-how-they-work" rel="noopener noreferrer" target="_blank">Large language models (LLMs)</a> you interact with — e.g., ChatGPT, Claude, or any custom LLM — you can now, thanks to the Model Context Protocol (MCP), develop a server once and use it everywhere. </p>
<p>This is exactly as we used to say about Java applications; that thanks to the Java Virtual Machine (JVM), they're WORA (Write Once Run Anywhere). They're built on one system and expected to run on any other Java-enabled system without further adjustments.</p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/how-to-secure-a-spring-ai-mcp-server-with-an-api-k</span>Wed, 14 Jan 2026 13:00:14 GMThttps://dzone.com/articles/3619133Horatiu DanKotlin Code Style: Best Practices for Former Java Developers
https://dzone.com/articles/kotlin-code-style-best-practices-for-former-java-d
<p>Many Kotlin codebases are written by developers with a Java background. The syntax is Kotlin, but the mindset is often still Java, resulting in what can be called "Java with a Kotlin accent." This style compiles and runs, but it misses the core advantages of Kotlin: conciseness, expressiveness, and safety.</p>
<p>Common symptoms include:</p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/kotlin-code-style-best-practices-for-former-java-d</span>Mon, 12 Jan 2026 19:00:00 GMThttps://dzone.com/articles/3607268Konstantin GlumovBuilding a Containerized Quarkus API and a CI/CD Pipeline on AWS EKS/Fargate with CDK
https://dzone.com/articles/building-a-containerized-quarkus-api-and-a-cicd-pi
<p>In a recent <a href="https://dzone.com/articles/quarkus-api-aws-ecs-fargate-cdk" rel="noopener noreferrer" target="_blank">post</a>, I have demonstrated the benefits of using AWS ECS (<em>Elastic Container Service</em>), with Quarkus and the CDK (<em>Cloud Development Kit</em>), in order to implement an API for the customer management.</p>
<p>In the continuity of this previous post, the current one will try to go a bit further and replace ECS by EKS (<em>Elastic Kubernetes Service</em>) as the environment for running containerized workloads. Additionally, an <a href="https://dzone.com/articles/ci-cd-autonomous-pipelines-automation">automated CI/CD pipeline</a>, using AWS CodePipeline and AWS CodeBuild, is provided.</p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/building-a-containerized-quarkus-api-and-a-cicd-pi</span>Thu, 08 Jan 2026 14:00:00 GMThttps://dzone.com/articles/3618916Nicolas DuminilAutomated Deployment Using a CI/CD Pipeline (Mule 4 | CloudHub 2.0)
https://dzone.com/articles/automated-deployment-ci-cd-pipe-line-tool-mule4
<p data-end="366" data-start="202">The purpose of this article is to <strong data-end="311" data-start="236">depict and demonstrate how to automate the build and deployment process</strong> using a <a href="https://dzone.com/articles/how-to-build-an-effective-cicd-pipeline" rel="noopener noreferrer" target="_blank">CI/CD pipeline</a> with <strong data-end="365" data-start="340">CloudHub 2.0 (Mule 4)</strong>.</p>
<h2 data-end="385" data-start="368">Prerequisites</h2>
<ul>
<li data-end="430" data-start="388">Anypoint CloudHub account (CloudHub 2.0)</li>
<li data-end="456" data-start="433"><code data-end="446" data-start="433">app.runtime</code> – 4.9.0</li>
<li data-end="496" data-start="459"><code data-end="486" data-start="459">mule.maven.plugin.version</code> – 4.3.0</li>
<li data-end="533" data-start="499">Anypoint Studio – Version 7.21.0</li>
<li data-end="533" data-start="499">OpenJDK – 11.0</li>
</ul>
<p><img data-image="true" data-new="false" data-sizeformatted="73.3 kB" data-mimetype="image/jpeg" data-creationdate="1764959397681" data-creationdateformatted="12/05/2025 06:29 PM" data-type="temp" data-url="https://dz2cdn1.dzone.com/storage/temp/18790139-mulesoft-ci-cd-pipe-line.jpg" data-modificationdate="null" data-size="73274" data-name="mulesoft-ci-cd-pipe-line.jpg" data-id="18790139" data-src="https://dz2cdn1.dzone.com/storage/temp/18790139-mulesoft-ci-cd-pipe-line.jpg" class="fr-fic fr-dib lazyload" style="width: 760px;" alt="CICD Pipe Line Image"></p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/automated-deployment-ci-cd-pipe-line-tool-mule4</span>Wed, 07 Jan 2026 16:00:00 GMThttps://dzone.com/articles/3601068ARINDAM GOSWAMISecuring Verifiable Credentials With DPoP: A Spring Boot Implementation
https://dzone.com/articles/securing-verifiable-credentials-with-dpop-spring-boot
<p data-end="487" data-start="174">In my <a href="https://dzone.com/articles/verifiable-credentials-spring-boot-android">previous article</a>, I demonstrated how to implement <strong data-end="242" data-start="230">OIDC4VCI</strong> (credential issuance) and <strong data-end="280" data-start="269">OIDC4VP</strong> (credential presentation) using Spring Boot and an Android wallet. This follow-up focuses on a critical security enhancement now mandated by <strong data-end="430" data-start="422">EUDI</strong> standards: <strong data-end="487" data-start="442">DPoP (Demonstrating Proof-of-Possession).</strong></p>
<h2 data-end="527" data-start="494">The Problem With Bearer Tokens</h2>
<p data-end="762" data-start="529">Traditional <strong data-end="558" data-start="541">Bearer tokens</strong> have an inherent weakness: anyone who obtains the token can use it. If an attacker intercepts or steals a Bearer token, they can impersonate the legitimate client until the token expires (or is revoked).</p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/securing-verifiable-credentials-with-dpop-spring-boot</span>Mon, 05 Jan 2026 19:00:00 GMThttps://dzone.com/articles/3623332Kyriakos MandalasHow to Perform Response Verification in REST-Assured Java for API Testing
https://dzone.com/articles/how-to-perform-response-verification-in-java-api-test
<p data-selectable-paragraph="">One of the core factors in API test automation is verifying the response body for data integrity. It is a crucial step in the functional validation of the API to confirm that it is returning the correct data as desired.</p>
<p data-selectable-paragraph="">This verification of the response body can be of a POST, GET, PUT, or PATCH API request. The same logic can be applied to any API response for verifying the data returned by the API.</p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/how-to-perform-response-verification-in-java-api-test</span>Mon, 05 Jan 2026 15:00:10 GMThttps://dzone.com/articles/3619082Faisal KhatriBest Date Conversion Approaches in Java 8+
https://dzone.com/articles/java-8-date-conversion-best-practices
<p data-end="1036" data-start="415">Working with dates and time has always been one of the trickiest parts of Java development. For years, developers wrestled with <code data-end="559" data-start="543">java.util.Date</code>, <code data-end="571" data-start="561">Calendar</code>, and the never-ending confusion around mutability, time zones, thread safety, and formatting quirks. When Java 8 introduced the <code data-end="711" data-start="700">java.time</code> package, it finally brought a modern and much more intuitive date-time API inspired by Joda-Time. Yet even with this improved API, many developers still find themselves constantly converting between different date representations, especially when integrating legacy systems, REST interfaces, databases, or front-end clients.</p>
<p data-end="1403" data-start="1038">In this article, I want to walk through the best practical approaches for date conversion in <a href="https://dzone.com/articles/how-to-sort-a-map-by-value-in-java-8">Java 8+</a>, focusing on clarity and reliability. These are patterns I’ve seen consistently used in production systems, and they help avoid many silent bugs that come from incorrect time zone assumptions, accidental loss of precision, and misuse of the older date classes.</p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/java-8-date-conversion-best-practices</span>Mon, 05 Jan 2026 14:00:01 GMThttps://dzone.com/articles/3618656Muhammed Harris KodavathOptimizing Java Applications for Arm64 in the Cloud
https://dzone.com/articles/optimizing-java-arm64-cloud-applications
<p dir="ltr">Java remains one of the most popular languages for enterprise applications running on the cloud. While languages like Go, Rust, JavaScript, and Python have a high profile for cloud application developers, the <a href="https://redmonk.com/rstephens/2024/09/12/top20-jun2024/" rel="noopener noreferrer" target="_blank">RedMonk language rankings</a> have ranked Java in the top three most popular languages throughout the history of the ranking.</p>
<p dir="ltr">When deploying applications to the cloud, there are a few key differences between deployment environments and development environments. Whether you’re spinning up a microservice application on Kubernetes or launching virtual machine instances, it is important to tune your <a href="https://amperecomputing.com/glossary/java-virtual-machine" rel="noopener noreferrer" target="_blank">Java Virtual Machine (JVM)</a> to ensure that you are getting your money’s worth from your cloud spend. It pays to know how the JVM allocates resources and to ensure you use them efficiently.</p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/optimizing-java-arm64-cloud-applications</span>Fri, 26 Dec 2025 21:00:00 GMThttps://dzone.com/articles/3619722Dave NearyVirtual Threads in JDK 21: Revolutionizing Java Multithreading
https://dzone.com/articles/virtual-threads-in-jdk-21-revolutionize-java-multithreading
<h2>What is Virtual Thread</h2>
<p>Multi-threading is a widely used feature across the industry for developing Java-based applications. It allows us to run operations in parallel, enabling faster task execution. The number of threads created by any Java application is limited by the number of parallel operations the OS can handle; in other words, the number of threads in a Java application is equal to the number of OS threads. Until now, this limitation has created a bottleneck on further scaling any application, considering the current fast-paced ecosystem. </p>
<p>To overcome this limitation, Java has introduced the concept of Virtual Thread in JDK21. A Java application creates a Virtual Thread and is not associated with any OS thread. It means every Virtual Thread does not need to be dependent on a Platform Thread (aka OS thread). Virtual Thread will work on any task independently and will acquire a Platform Thread only when it needs to perform any I/O operation. </p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/virtual-threads-in-jdk-21-revolutionize-java-multithreading</span>Mon, 15 Dec 2025 12:00:00 GMThttps://dzone.com/articles/3607183Jiwan GuptaHow to Test POST Requests With REST Assured Java for API Testing: Part II
https://dzone.com/articles/rest-assured-java-test-post-requests-part-ii
<p name="2106">In the <a href="https://dzone.com/articles/test-post-requests-rest-assured-java">previous article</a>, we learnt the basics, setup, and configuration of the REST Assured framework for API test automation. We also learnt to test a POST request with REST Assured by sending the request body as:</p>
<ol>
<li name="71be">String</li>
<li name="2312">JSON Array/ JSON Object</li>
<li name="ac2f">Using Java Collections</li>
<li name="9cb0">Using POJO</li>
</ol>
<p name="cc9b">In this tutorial article, we will learn the following:</p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/rest-assured-java-test-post-requests-part-ii</span>Fri, 12 Dec 2025 14:00:00 GMThttps://dzone.com/articles/3617658Faisal KhatriDesigning Java Web Services That Recover From Failure Instead of Breaking Under Load
https://dzone.com/articles/design-java-web-services-that-recover-from-failure
<p dir="ltr">Web applications depend on <a href="https://dzone.com/articles/supercharge-your-java-apps-with-ai">Java-based services</a> more than ever. Every request that comes from a browser, a mobile app, or an API client eventually reaches a backend service that must respond quickly and consistently. When traffic increases or a dependency slows down, many Java services fail in ways that are subtle at first and catastrophic later. A delay becomes a backlog. A backlog becomes a timeout. A timeout becomes a full service outage.</p>
<p dir="ltr">The goal of a reliable web service is not to avoid every failure. The real goal is to recover from failure fast enough that users never notice. What matters is graceful recovery.</p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/design-java-web-services-that-recover-from-failure</span>Tue, 09 Dec 2025 19:00:00 GMThttps://dzone.com/articles/3617464Krishna KandiStop Writing Excel Specs: A Markdown-First Approach to Enterprise Java
https://dzone.com/articles/stop-writing-excel-specs-markdown-first-approach
<p>Design documents in Enterprise Java often end up trapped in binary silos like Excel or Word, causing them to drift away from the actual code. This pattern shows how to treat Design Docs as source code by using structured <a href="https://dzone.com/articles/writing-in-markdown-an-introduction">Markdown</a> and <a href="https://dzone.com/articles/demystifying-generative-text-ai">generative AI</a>.</p>
<p>We've all been there: the architecture team delivers a <strong>Detailed Design Document (DDD)</strong> to the development team. It’s a 50-page Word file, even worse, a massive Excel spreadsheet with multiple tabs defining Java classes, fields, and validation rules.</p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/stop-writing-excel-specs-markdown-first-approach</span>Wed, 03 Dec 2025 20:00:04 GMThttps://dzone.com/articles/3618175Dippu Kumar SinghWeb App Load Testing Using Maven Plugins for Apache JMeter, and Analyzing the Results
https://dzone.com/articles/running-load-test-web-app-using-maven-plugins
<p>In this article, we will walk you through how to conduct a <strong>load test</strong> and <strong>analyze </strong>the results using <a href="https://dzone.com/articles/how-to-create-a-java-library-from-scratch-to-maven">Java Maven</a><strong> </strong>technology. We'll covering everything from launching the test to generating informative graphs and tables.</p>
<p>For this demonstration, we'll utilize various files, including Project Object Model (POM) files, JMeters scripts, and CSV data, from the <strong>jpetstore_loadtesting_dzone</strong> project available on GitHub. This will help illustrate the steps involved and the functionality of the necessary plugins and tools. You can find the project here: <a href="https://github.com/vdaburon/jpetstore_loadtesting_dzone">https://github.com/vdaburon/jpetstore_loadtesting_dzone</a>.</p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/running-load-test-web-app-using-maven-plugins</span>Tue, 02 Dec 2025 21:00:00 GMThttps://dzone.com/articles/3611002Vincent DABURONJDK 17 Memory Bloat in Containers: A Post-Mortem
https://dzone.com/articles/jdk-memory-bloat-containers
<p data-end="1401" data-start="1126">When engineering teams modernize Java applications, the shift from JDK 8 to newer Long-Term Support (LTS) versions, such as JDK 11, 17, and soon 21, might seem straightforward at first. Since Java maintains backward compatibility, it's easy to assume that the runtime behavior will remain largely unchanged. However, that's far from reality.</p>
<p data-end="1641" data-start="1414">In 2025, our team completed a major modernization initiative to migrate all of our Java microservices from JDK 8 to <a href="https://dzone.com/articles/jdk-17-switch-case-performance">JDK 17</a>. The development and QA phases went smoothly, with no major issues arising. But within hours of deploying to production, we faced a complete system breakdown.</p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/jdk-memory-bloat-containers</span>Tue, 02 Dec 2025 18:00:00 GMThttps://dzone.com/articles/3613742Saumya Tyagi