Warning: file_get_contents(https://dzone.com/articles/memory-optimization-and-utilization-in-java-25-lts): 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/data-driven-api-testing-java-rest-assured-part-5): 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/migrating-legacy-microservices-java-typescript): 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/deploying-java-applications-on-arm64): 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/scaling-ai-workloads-java-apis): 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/taming-the-jvm-latency-monster): 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/automating-maven-dependency-upgrades-using-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/data-driven-api-testing-java-rest-assured-part-4): 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/data-driven-api-testing-java-rest-assured-part-3): 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-api-testing-rest-assured-testng-part-2): 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/cloud-native-java-microservices-serverless): 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-microservicesscs-vs-spring-modulith): 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/zero-cost-ai-with-java-1): 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/stranger-things-in-java-enum-types): 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/extending-java-libraries-with-service-loader): 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-25-whats-new-changes-from-java-21): 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/solr5-to-solr8-migration-ads-system): 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/square-sumup-shopify-data-streaming-for-real-time): 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/java17-tld-generator-legacy-jsp): 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/top-3-java-reporting-options): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden in /usr/home/freebsd/rss-extender/RssExtender.php on line 274
en DZone Java Zone https://dzone.com/java Recent posts in Java on DZone.com Memory Optimization and Utilization in Java 25 LTS: Practical Best Practices https://dzone.com/articles/memory-optimization-and-utilization-in-java-25-lts <p>Memory tuning in <a href="https://dzone.com/articles/java-evolution-changed-developer-workflow">Java</a> has evolved over years and whenever each version was released, we anticipate some magic. If you worked with Java 6 or 7, you probably remember spending hours tweaking PermGen, experimenting with CMS flags, and nervously watching GC logs in production. But with Java 25, Memory Optimization and Utilization are more mature.<br><br> Modern Java gives us better garbage collectors, improved container awareness, stronger tooling, and smarter runtime ergonomics. But despite all that progress, memory optimization is something that you can't ignore. In a cloud-native environment where every gigabyte costs money, memory efficiency directly affects both performance and money spent on infrastructure as well.<br><br> In this article I am trying to summarize some of the best practices for memory utilization, so developers can use it as a reference guide.<br><br><strong><span style="font-size:30px;line-height:115%;font-family:"Helvetica Neue";color:#222635;">1. Start with Measurement, Not Assumptions</span></strong></p> <p data-end="1660" data-start="1503">The most common mistake that we could usually see is increasing heap size without understanding allocation patterns. A bigger heap often delays a problem rather than solving it.</p> <br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/memory-optimization-and-utilization-in-java-25-lts</span> Tue, 31 Mar 2026 15:00:00 GMT https://dzone.com/articles/3639593 Muhammed Harris Kodavath Data-Driven API Testing in Java With REST Assured and TestNG: Part 5 https://dzone.com/articles/data-driven-api-testing-java-rest-assured-part-5 <p name="1251">In the previous articles, we discussed how to perform data-driven API automation testing with different approaches, including <a data-href="https://medium.com/javarevisited/data-driven-api-testing-in-java-with-rest-assured-and-testng-part-1-275795ca2c62" href="https://dzone.com/articles/data-driven-api-testing-in-java-with-rest-assured" rel="noopener noreferrer" target="_blank">object arrays</a>, <a data-href="https://medium.com/javarevisited/data-driven-api-testing-in-java-with-rest-assured-and-testng-part-2-06029e688efe" href="https://dzone.com/articles/java-api-testing-rest-assured-testng-part-2" rel="noopener noreferrer" target="_blank">iterators</a>, <a data-href="https://medium.com/javarevisited/data-driven-api-testing-in-java-with-rest-assured-and-testng-part-3-3eed3cc1e39f" href="https://dzone.com/articles/data-driven-api-testing-java-rest-assured-part-3" rel="noopener noreferrer" target="_blank">CSV files</a>, and <a data-href="https://medium.com/@iamfaisalkhatri/data-driven-api-testing-in-java-with-rest-assured-and-testng-part-4-3e90355085d5" href="https://dzone.com/articles/data-driven-api-testing-java-rest-assured-part-4" rel="noopener noreferrer" target="_blank">JSON files</a>.</p> <p name="11a8">An Excel file can also be used to perform data-driven API testing. It allows testers to store multiple test data in one place, where we can easily add, update, or remove test cases without changing the automation code. It allows non-technical members, such as Business Analysts and Product owners, to understand and edit the test data to perform robust testing.</p> <br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/data-driven-api-testing-java-rest-assured-part-5</span> Mon, 30 Mar 2026 16:30:00 GMT https://dzone.com/articles/3641502 Faisal Khatri Migrating Legacy Microservices to Modern Java and TypeScript https://dzone.com/articles/migrating-legacy-microservices-java-typescript <p>"Modernize the legacy stack" is a phrase that strikes dread into every senior engineer's heart — and for good reason. Migration projects fail at a notoriously high rate. They balloon in scope, break running systems, and produce tech debt that rivals what they replaced. I led successful migrations of critical <a href="https://dzone.com/articles/how-to-get-started-with-microservices">microservices</a> to modern runtimes, containerized deployments, and event-driven architectures — on time, without downtime, and with measurable gains in performance and reliability.</p> <p>This article distills the frameworks, patterns, and hard lessons from those engagements into a practical guide for teams facing similar challenges.</p> <br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/migrating-legacy-microservices-java-typescript</span> Mon, 30 Mar 2026 15:00:00 GMT https://dzone.com/articles/3639263 Venkata Sandeep Dhullipalla Deploying Java applications on Arm64 with Kubernetes https://dzone.com/articles/deploying-java-applications-on-arm64 <p dir="ltr">In the first part of this two-part series on <a href="https://amperecomputing.com/tutorials/optimizing-java-applications-for-arm64-in-the-cloud">tuning Java applications for Ampere®- powered cloud instances</a>, we concentrated on tuning your Java environment for cloud applications, including picking the right Java version, tuning your default heap and garbage collector, and some options that enable your application to take advantage of underlying Arm64 features. In this article, we will look more closely at the operating system and Kubernetes configuration. In particular, we take a deep dive into container awareness in recent versions of Java, how to restrict the system resources made available to Java containers, and some common Linux configuration options to optimize your system for specific workloads. Much of the advice related to operating system tuning and workload placement applies to all workloads, not just JVM workloads, but since our focus is on the deployment of Java applications on Arm64 to Kubernetes, we will focus on that use-case here.</p> <h3 dir="ltr">Resource Allocation in Kubernetes</h3> <p dir="ltr">In this section, we’ll step outside the JVM and look at the infrastructure layer. Understanding how Kubernetes allocates resources, and how your Java application perceives those allocations, is fundamental to ensuring that you allocate the right amount of resources to your JVM.</p> <br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/deploying-java-applications-on-arm64</span> Mon, 30 Mar 2026 13:30:00 GMT https://dzone.com/articles/3643642 Dave Neary Scaling AI Workloads in Java Without Breaking Your APIs https://dzone.com/articles/scaling-ai-workloads-java-apis <p>As AI inference moves from prototype to production, Java services must handle high-concurrency workloads without disrupting existing APIs. This article examines patterns for scaling AI model serving in Java while preserving API contracts. Here, we compare synchronous and asynchronous approaches, including modern virtual threads and reactive streams, and discuss when to use in-process JNI/FFM calls versus network calls, gRPC/REST. We also present concrete guidelines for API versioning, timeouts, circuit breakers, bulkheads, rate limiting, graceful degradation, and observability using tools like Resilience4j, Micrometer, and OpenTelemetry. </p> <p>Detailed Java code examples illustrate each pattern from a blocking wrapper with a thread pool and queue to a non-blocking implementation using <code>CompletableFuture</code> and virtual threads to a Reactor-based example. We also show a gRPC client/server stub, a batching implementation, Resilience4j integration, and Micrometer/OpenTelemetry instrumentation, as well as performance considerations and deployment best practices. Finally, we offer a benchmarking strategy and a migration checklist with anti-patterns to avoid.</p> <br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/scaling-ai-workloads-java-apis</span> Fri, 27 Mar 2026 20:00:00 GMT https://dzone.com/articles/3640496 Ramya vani Rayala Taming the JVM Latency Monster https://dzone.com/articles/taming-the-jvm-latency-monster <h2>An Architect's Guide to 100GB+ Heaps in the Era of Agency</h2> <div dir="ltr"> <p data-path-to-node="1"><span data-path-to-node="1,0">In the "Chat Phase" of AI, we could afford a few seconds of lag while a model hallucinated a response. But as we transition into the <b data-index-in-node="133" data-path-to-node="1,0">Integration Renaissance </b>— an era defined by autonomous agents that must <b data-index-in-node="203" data-path-to-node="1,0">Plan -> Execute -> Reflect </b>— latency is no longer just a performance metric; it is a governance failure.</span>   </p> <p data-path-to-node="2"><span data-path-to-node="2,0">When your autonomous agent mesh is responsible for settling a €5M intercompany invoice or triggering a supply chain move, a multi-second "Stop-the-World" (STW) garbage collection (GC) pause doesn't just slow down the application; it breaks the deterministic orchestration required for enterprise trust.</span><span data-path-to-node="2,2"> For an integrator operating on modern </span><a href="https://dzone.com/articles/jvm-architecture-explained"><span data-path-to-node="2,2">Java virtual machines</span></a><span data-path-to-node="2,2"> (JVMs), the challenge is clear: how do we manage mountains of data without the latency spikes that torpedo agentic workflows? The answer lies in the current triumvirate of advanced OpenJDK garbage collectors: <b data-index-in-node="270" data-path-to-node="2,2">G1</b>, <b data-index-in-node="274" data-path-to-node="2,2">Shenandoah</b>, and <b data-index-in-node="290" data-path-to-node="2,2">ZGC</b>.</span>   </p> <br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/taming-the-jvm-latency-monster</span> Thu, 26 Mar 2026 20:00:00 GMT https://dzone.com/articles/3639529 Theo Ezell Automating Maven Dependency Upgrades Using AI https://dzone.com/articles/automating-maven-dependency-upgrades-using-ai <p>Enterprise Java applications do not often break due to business logic. The reason they break is that dependency ecosystems evolve all the time. Manual maintenance in most large systems consists of hundreds of third-party libraries, and small upgrades occur regularly as a result of security patches, code corrections, or vendor advice. The problem is not recognizing outdated libraries. Tools such as OWASP Dependency-Check, Snyk, and Black Duck already do it well.</p> <p>The problem is a wastage of the developer's time in repetitive actions: checking Maven Central for the latest versions, validating whether the upgrade is safe, reading release notes, guessing what test cases should be executed, and raising a pull request with meaningful documentation.</p> <br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/automating-maven-dependency-upgrades-using-ai</span> Thu, 26 Mar 2026 19:00:00 GMT https://dzone.com/articles/3640454 Sravan Reddy Kathi Data-Driven API Testing in Java With REST Assured and TestNG: Part 4 https://dzone.com/articles/data-driven-api-testing-java-rest-assured-part-4 <p name="af20">APIs are at the heart of almost every application, and even small issues can have a big impact. Data-driven API testing with JSON files using REST Assured and TestNG makes it easier to validate multiple scenarios without rewriting the same tests again and again. By separating test logic from test data, we can build cleaner, flexible, and more scalable automation suites.</p> <p name="0f6c">In this article, we’ll walk through a practical, beginner-friendly approach to writing API automation tests with REST Assured and TestNG using JSON files as the data provider.</p> <br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/data-driven-api-testing-java-rest-assured-part-4</span> Thu, 26 Mar 2026 12:00:00 GMT https://dzone.com/articles/3641501 Faisal Khatri Data-Driven API Testing in Java With REST Assured and TestNG: Part 3 https://dzone.com/articles/data-driven-api-testing-java-rest-assured-part-3 <p name="7401">Data-driven testing enables testers to execute the same test logic with multiple sets of input data, improving coverage and reliability with minimal effort. By combining CSV files with TestNG’s <code>@DataProvider</code><em> </em>annotation, test data can be easily separated from the test logic. This approach enables maintainability and makes test automation more scalable and flexible.</p> <p name="0cca">This article explains how to implement data-driven testing with CSV files and TestNG in a clear, practical, and easy-to-follow manner.</p> <br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/data-driven-api-testing-java-rest-assured-part-3</span> Wed, 25 Mar 2026 14:30:00 GMT https://dzone.com/articles/3641500 Faisal Khatri Data-Driven API Testing in Java With REST Assured and TestNG: Part 2 https://dzone.com/articles/java-api-testing-rest-assured-testng-part-2 <p name="be61">In the <a data-href="https://medium.com/@iamfaisalkhatri/data-driven-api-testing-in-java-with-rest-assured-and-testng-part-1-275795ca2c62" href="https://dzone.com/articles/data-driven-api-testing-in-java-with-rest-assured" rel="noopener noreferrer" target="_blank">previous article</a>, we explored how to implement data-driven testing using <em>Object</em> arrays and TestNG’s <code>@DataProvider</code> annotation. While this approach works well for small to medium-sized datasets, it is not ideal for handling large volumes of data. To address this limitation, TestNG also supports the use of <em>Iterators</em>, which provide a more efficient way to manage large and dynamic datasets.</p> <p name="0e9c">This article focuses on how to perform data-driven API automation testing using an <em>Iterator</em> with a <em>DataProvider</em> annotation of TestNG.</p> <br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/java-api-testing-rest-assured-testng-part-2</span> Tue, 24 Mar 2026 17:00:00 GMT https://dzone.com/articles/3641498 Faisal Khatri Scalable Cloud-Native Java Architecture With Microservices and Serverless https://dzone.com/articles/cloud-native-java-microservices-serverless <p><span data-contrast="auto" lang="EN-US">Building enterprise Java systems used to mean choosing an app server, deploying a monolith, and scaling vertically until the budget or the database complained. In 2026, modern Java teams are expected to deliver faster releases, better resilience, and elastic cost-performance across unpredictable workloads. That’s exactly what </span><span data-contrast="auto" lang="EN-US">cloud-native Java architecture</span><span data-contrast="auto" lang="EN-US"> is designed to achieve: systems built for change, not just for uptime.</span><span data-ccp-props="{"134233117":false,"134233118":false,"335551550":6,"335551620":6,"335559738":240,"335559739":240}"> </span></p> <p><span data-contrast="auto" lang="EN-US">But “cloud-native” is not a buzzword synonym for “running on Kubernetes.” A truly scalable approach combines</span><span data-contrast="auto" lang="EN-US"> </span><a href="https://dzone.com/articles/java-microservices-code-examples-tutorials-and-more"><span data-contrast="auto" lang="EN-US">Java microservices</span></a><span data-contrast="auto" lang="EN-US"> (for domain isolation and independent delivery) with Serverless Java (for bursty or event-driven workloads), backed by Kubernetes for Java as the operational substrate for consistent deployment, resilience, and observability.</span><span data-ccp-props="{"134233117":false,"134233118":false,"335551550":6,"335551620":6,"335559738":240,"335559739":240}"> </span></p> <br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/cloud-native-java-microservices-serverless</span> Fri, 20 Mar 2026 14:00:00 GMT https://dzone.com/articles/3639338 Harris Anderson Java Microservices (SCS) vs. Spring Modulith https://dzone.com/articles/java-microservicesscs-vs-spring-modulith <p data-end="396" data-start="172">This article discusses the differences between a Java microservice architecture (SCS style) using Clean Architecture and a <a href="https://dzone.com/articles/creating-a-spring-modulith-project-practical-guide">Spring Modulith architecture</a>. It explores their strengths, trade-offs, and when to use each approach.</p> <p data-end="452" data-start="398">The architectures are demonstrated using two projects:</p> <br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/java-microservicesscs-vs-spring-modulith</span> Wed, 18 Mar 2026 20:00:00 GMT https://dzone.com/articles/3629470 Sven Loesekann Zero-Cost AI with Java https://dzone.com/articles/zero-cost-ai-with-java-1 <p data-end="216" data-start="143">So you have a new AI-based idea and need to create an MVP app to test it?</p> <p data-end="312" data-start="218">If your AI knowledge is limited to OpenAI, I have bad news for you… it’s not going to be free.</p> <br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/zero-cost-ai-with-java-1</span> Wed, 18 Mar 2026 19:00:00 GMT https://dzone.com/articles/3639155 Fernando Boaglio Stranger Things in Java: Enum Types https://dzone.com/articles/stranger-things-in-java-enum-types <p><em>This article is part of the series “<a href="https://www.claudiodesio.com/category/stranger-things-in-java/" rel="noopener" target="_blank">Stranger things in Java</a>,” dedicated to language deep dives that will help us master even the strangest scenarios that can arise when we program. All articles are inspired by content from the book “<a href="https://www.javaforaliens.com" rel="noopener" target="_blank">Java for Aliens</a>” (in English), the book “<a href="https://www.nuovojava.it" rel="noopener" target="_blank">Il nuovo Java</a>”, and the book “<a href="https://amzn.to/4s3PSrk" rel="noopener" target="_blank">Programmazione Java</a>.”</em></p> <p>This article is a short tutorial on <strong>enumeration types</strong>, also called <a href="https://dzone.com/articles/enums-in-python">enumerations</a> or <strong>enums</strong>. They are one of the fundamental constructs of the Java language, alongside classes, interfaces, annotations, and records. They are particularly useful to represent sets of known and unchangeable values, such as the days of the week or the cardinal directions.</p> <br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/stranger-things-in-java-enum-types</span> Mon, 16 Mar 2026 13:00:09 GMT https://dzone.com/articles/3621156 Claudio De Sio Cesari Extending Java Libraries with Service Loader https://dzone.com/articles/extending-java-libraries-with-service-loader <p data-end="631" data-start="229">When designing a <a href="https://dzone.com/articles/7-awesome-libraries-for-java-unit-amp-integration">Java library</a>, extensibility is often a key requirement, especially in the later phases of a project. Library authors want to allow users to add custom behavior or provide their own implementations without modifying the core codebase. Java addresses this need with the Service Loader API, a built-in mechanism for discovering and loading implementations of a given interface at runtime.</p> <p data-end="999" data-start="633">Service Loader enables a clean separation between the Application Programming Interface (API) and its implementation, making it a solid choice for plugin-like architectures and Service Provider Interfaces (SPI). In this post, we’ll look at how Service Loader can be used in practice, along with its advantages and limitations when building extensible Java libraries.</p> <br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/extending-java-libraries-with-service-loader</span> Fri, 13 Mar 2026 17:00:07 GMT https://dzone.com/articles/3636470 Dominik Przybysz What's New in Java 25: Key Changes From Java 21 https://dzone.com/articles/java-25-whats-new-changes-from-java-21 <div> <p>On the 16th of September 2025, Java 25 was released. Time to take a closer look at the changes since the last LTS release, which is Java 21. In this blog, some of the changes between Java 21 and Java 25 are highlighted, mainly by means of examples. Enjoy!</p> <h2>Introduction</h2> <p>What has changed between Java 21 and Java 25? A complete list of the JEPs (Java Enhancement Proposals) can be found at the <a href="https://openjdk.org/projects/jdk/25/jeps-since-jdk-21" rel="noopener noreferrer" target="_blank">OpenJDK</a> website. Here you can read the nitty-gritty details of each JEP. For a complete list of what has changed per release since Java 21, the <a href="https://www.oracle.com/java/technologies/javase/jdk-relnotes-index.html" rel="noopener noreferrer" target="_blank">Oracle release notes</a> give a good overview.</p> <br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/java-25-whats-new-changes-from-java-21</span> Thu, 12 Mar 2026 17:00:00 GMT https://dzone.com/articles/3640379 Gunter Rotsaert Unblocking a Failed Solr 5 to Solr 8 Migration in a Large-Scale Ads Retrieval System https://dzone.com/articles/solr5-to-solr8-migration-ads-system <p dir="ltr">Major version upgrades of search infrastructure are often treated as dependency and configuration exercises. In practice, when search sits upstream of machine-learning pipelines and directly impacts revenue, such upgrades can fail in far more subtle — and harder to diagnose — ways.</p> <p dir="ltr">This article describes how a long-stalled migration of a production ads retrieval system from Apache Solr/Apache Lucene 5 to 8 was unblocked after multiple prior attempts had failed. The failures were not caused by missing dependencies or misconfiguration, but by cumulative semantic drift and execution-path changes that only manifested under real production conditions.</p> <br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/solr5-to-solr8-migration-ads-system</span> Tue, 10 Mar 2026 18:00:00 GMT https://dzone.com/articles/3638347 Parveen Saini Square, SumUp, Shopify: Data Streaming for Real-Time Point-of-Sale (POS) https://dzone.com/articles/square-sumup-shopify-data-streaming-for-real-time <p data-end="634" data-start="188">Point-of-Sale (POS) systems are no longer just cash registers. They are becoming real-time, connected platforms that handle payments, manage inventory, personalize customer experiences, and feed business intelligence. Small and medium-sized merchants can now access capabilities once reserved for enterprise retailers. Mobile payment platforms like Square, SumUp, and Shopify make it easy to sell anywhere and integrate sales channels seamlessly.</p> <p data-end="861" data-start="636">At the same time, data streaming technologies such as Apache Kafka and Apache Flink are transforming retail operations. They enable instant insights and automated actions across every store, website, and supply chain partner.</p> <br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/square-sumup-shopify-data-streaming-for-real-time</span> Mon, 09 Mar 2026 14:00:00 GMT https://dzone.com/articles/3636548 Kai Wähner Building a Java 17-Compatible TLD Generator for Legacy JSP Tag Libraries https://dzone.com/articles/java17-tld-generator-legacy-jsp <h2><strong><span>When TLD Generation Tooling Falls Behind Java 17</span></strong></h2> <p><span>The vulnerabilities introduced by upgrades to the Java platform tend not to lie in the application code itself, but rather in the ecosystem of build-time tools that enterprise systems rely on. This was made clear by a migration to Java 17, in which a long-standing dependency on TldDoclet to generate Tag Library Descriptor (TLD) was compromised. </span></p> <p><span>TldDoclet, a widely used tool for generating TLD metadata from Java tag handler classes, is no longer supplied or compatible with current Java versions. The effect of this gap was not so obvious. The application itself compiled and executed well with </span><a href="https://dzone.com/articles/features-of-java-17"><span>Java 17</span></a><span>, and the underlying JSP tag handlers remained functional. But TLD generation did not come up with a congenial mechanism, consequently placing a hard blocker late in the build. What once was a constant and unseen component of the toolchain turned into a migration issue with a high risk.</span></p> <br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/java17-tld-generator-legacy-jsp</span> Wed, 04 Mar 2026 17:00:00 GMT https://dzone.com/articles/3636263 Sravan Reddy Kathi Comparing Top 3 Java Reporting Tools https://dzone.com/articles/top-3-java-reporting-options <p><span data-contrast="auto" lang="EN-US">There’s no shortage of reporting tools, but a good number of them are either part of heavyweight BI systems or cloud services. Many line‑of‑business applications, however, just want a discreet, built‑in reporting option that can be customized.</span><span data-ccp-props="{}"> </span></p> <p><span data-contrast="auto" lang="EN-US">Having recently tested several Java‑based document generation tools and libraries, I thought a short, plain-spoken, and up-to-date review could be worth sharing.</span><span data-ccp-props="{}"> </span></p> <br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/top-3-java-reporting-options</span> Tue, 03 Mar 2026 18:00:00 GMT https://dzone.com/articles/3635934 Sergei Iudaev