<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~files/feed-premium.xsl"?>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:feedpress="https://feed.press/xmlns" xmlns:podcast="https://podcastindex.org/namespace/1.0" version="2.0">
  <channel>
    <feedpress:locale>en</feedpress:locale>
    <atom:link rel="self" href="https://feeds.dzone.com/java"/>
    <atom:link rel="hub" href="https://feedpress.superfeedr.com/"/>
    <title>DZone Java Zone</title>
    <link>https://dzone.com/java</link>
    <description>Recent posts in Java on DZone.com</description>
    <item>
      <title>Java 27 Makes G1 the Default Everywhere: How to Test Your Small Containers Before You Upgrade</title>
      <link>https://dzone.com/articles/jdk-g1-garbage-collector</link>
      <description><![CDATA[<p dir="ltr">When JDK 27 was released on 15 September 2026, most of the attention went to compact object headers and post-quantum TLS. JEP 523 received less coverage, partly because its description sounds like housekeeping: G1 becomes the default garbage collector in all environments.</p>
<p dir="ltr">For most applications, that changes nothing. For a specific class of container, it changes the collector silently, with no warning in the logs and no failure at startup.</p>]]></description>
      <pubDate>Tue, 03 Nov 2026 13:00:11 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3689544</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19283453&amp;w=600"/>
      <dc:creator>Garima Agarwal</dc:creator>
    </item>
    <item>
      <title>Build a GitHub Contribution City With Java and Quarkus</title>
      <link>https://dzone.com/articles/build-a-github-contribution-city-with-java-and-qua</link>
      <description><![CDATA[<p>GitHub's contribution calendar gives you an already iconic overview of your activity over the year. Each day has a square, and its color changes with the contribution level. And of course, those days and contributions can also be arranged into buildings, with a week becoming a small part of a city and busier weeks adding height to the skyline.</p>
<p>I had some spare minutes and built <a href="https://github.com/myfear/quarkus-contribution-city" rel="noopener noreferrer" target="_blank">Quarkus Contribution City</a> around this idea, using Java and Quarkus to generate an SVG from GitHub's contribution data. The visual inspiration came from <a href="https://github.com/pinkpixel-dev/skyline" rel="noopener noreferrer" target="_blank">Pink Pixel's skyline</a>, and you can see a version with my real data on <a href="https://github.com/myfear" rel="noopener noreferrer" target="_blank">my GitHub profile</a>. A scheduled GitHub Action updates the image at night.</p>]]></description>
      <pubDate>Mon, 02 Nov 2026 14:00:01 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3696676</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19282009&amp;w=600"/>
      <dc:creator>Markus Eisele</dc:creator>
    </item>
    <item>
      <title>Stop Writing Database Migration Scripts: Declarative Schema Sync for Java</title>
      <link>https://dzone.com/articles/declarative-database-schema-management</link>
      <description><![CDATA[<p>If you have worked on a mature Java backend application, your <code data-index-in-node="62" data-path-to-node="3">src/main/resources/db/migration</code> folder probably looks like a chaotic history ledger:</p>
<div class="codeMirror-wrapper" contenteditable="false">
 <div contenteditable="false">
  <div class="codeHeader">
   <div class="nameLanguage">
    Plain Text
   </div><i class="icon-cancel-circled-1 cm-remove">&nbsp;</i>
  </div>
  <div class="codeMirror-code--wrapper" data-code="V1__init_schema.sql
V2__add_users_table.sql
...
V142__add_status_column.sql
V143__fix_status_typo.sql
V144__drop_old_status.sql
V145__add_missing_index.sql" data-lang="text/plain">
   <pre><code lang="text/plain">V1__init_schema.sql
V2__add_users_table.sql
...
V142__add_status_column.sql
V143__fix_status_typo.sql
V144__drop_old_status.sql
V145__add_missing_index.sql</code></pre>
  </div>
 </div>
</div>
<p data-path-to-node="5"><br></p>]]></description>
      <pubDate>Thu, 29 Oct 2026 12:00:00 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3697916</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19269378&amp;w=600"/>
      <dc:creator>Eugene Naoumov</dc:creator>
    </item>
    <item>
      <title>Searching Kafka Without an Index: Lessons From Building Message Search for Kafdrop</title>
      <link>https://dzone.com/articles/kafka-message-search-kafdrop</link>
      <description><![CDATA[<p dir="ltr">The message left the first service at 2:14 PM and never reached the last one. Between those facts: four pipeline stages, six topics, a pub/sub API moving every record. The engineer on call had Kafdrop open, the offsets looked fine, and nobody could say which stage had eaten the record.</p>
<p dir="ltr">That gap is why we built message search for Kafdrop at a hackathon. The setup was familiar from my day job: a platform moving data between pipeline stages over a pub/sub API, with no way to ask where a message went when something breaks. Kafdrop showed partitions and offsets. It couldn't search inside the messages.</p>]]></description>
      <pubDate>Wed, 28 Oct 2026 13:00:00 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3697861</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19262844&amp;w=600"/>
      <dc:creator>Shreyamsh Kamate</dc:creator>
    </item>
    <item>
      <title>Part 4: Multi-Agent Orchestration — Pairing Goose With Quarkus Flow State Machines</title>
      <link>https://dzone.com/articles/quarkus-a2a-agent-governance</link>
      <description><![CDATA[<h2>The Core Problem</h2>
<p>In <a href="https://dzone.com/articles/governed-mcp-tools" rel="noopener noreferrer" target="_blank">Part 1</a>, we built a Quarkus MCP tool server. In <a href="https://dzone.com/articles/goose-agentgateway-security" rel="noopener noreferrer" target="_blank">Part 2</a>, we secured it with agentgateway. In <a href="https://dzone.com/articles/end-to-end-tracing-observability" rel="noopener noreferrer" target="_blank">Part 3</a>, we added distributed tracing. The architecture handles single-request tool calls well — but enterprise processes are rarely single-step.</p>
<p>Consider what happens when a developer tells Goose: <em>"Migrate the users table to add an email column, then deploy the updated service to production."</em> This triggers a chain of operations:</p>]]></description>
      <pubDate>Tue, 27 Oct 2026 18:00:00 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3700001</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19267647&amp;w=600"/>
      <dc:creator>Daniel Oh</dc:creator>
    </item>
    <item>
      <title>Introduction to Error Prone: How to Catch Bugs at Compile Time</title>
      <link>https://dzone.com/articles/java-error-prone-static-analysis</link>
      <description><![CDATA[<p name="f71a">The Java compiler’s job is to check whether code follows the rules of the language. Trying to remove an element from a collection that can never contain it, or using the wrong letter in a date pattern, does not break those rules, so nothing stops the code from compiling. In short, any code that follows the rules compiles, even when it does not do what its author intended.</p>
<h2 name="6198">What Is Error Prone?</h2>
<p name="6c48"><a data-href="https://errorprone.info/" href="https://errorprone.info/" rel="noopener" target="_blank">Error Prone</a> is an open-source static analysis tool that Google built to fill this gap. Unlike most static analysis tools, it does not run as a separate step; it plugs into <code>javac</code> as a plugin. Using the information the compiler produces while analyzing the code, it looks for patterns that follow the rules of the language but are most likely wrong, and reports them as compiler warnings or errors.</p>]]></description>
      <pubDate>Tue, 27 Oct 2026 15:00:00 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3697816</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19263574&amp;w=600"/>
      <dc:creator>Hüseyin Akdoğan</dc:creator>
    </item>
    <item>
      <title>ScyllaDB in Enterprise Java: High-Performance NoSQL With Eclipse JNoSQL</title>
      <link>https://dzone.com/articles/scylladb-java-nosql</link>
      <description><![CDATA[<p>Modern enterprise applications must process increasing data volumes while guaranteeing low latency, high availability, and predictable performance. While relational databases are essential for transactional workloads and complex queries, some applications do not fit the relational model. Systems that manage millions of user engagements, financial events, or IoT data often need a persistence solution built for distributed environments and horizontal scalability. In these cases, ScyllaDB affords a compelling option for enterprise architects.</p>
<p><a href="https://dzone.com/articles/setting-up-a-scylladb-cluster-on-aws-using-terraform">ScyllaDB</a> is a high-performance, distributed NoSQL database based on the wide-column data model. Inspired by Apache Cassandra and compatible with its query language (CQL), ScyllaDB uses a shard-per-core architecture to maximize hardware efficiency and preserve consistent performance under intensive workloads. When should ScyllaDB be chosen over traditional relational databases or other NoSQL options? This article examines its column-family model, compares it with Cassandra, and shows how to integrate ScyllaDB into a Java enterprise application.</p>]]></description>
      <pubDate>Fri, 23 Oct 2026 17:00:01 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3697901</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19262270&amp;w=600"/>
      <dc:creator>Otavio Santana</dc:creator>
    </item>
    <item>
      <title>Member Spotlight: Shai Almong</title>
      <link>https://dzone.com/articles/member-spotlight-shai-almong</link>
      <description><![CDATA[<p>What does it take to build and sustain an open-source project for more than a decade? For Shai Almog, creator of Codename One, it takes a willingness to challenge conventional approaches to software development and a continued commitment to the developers who rely on the work.</p>
<p>I recently caught up with Shai to discuss the inspiration behind Codename One, the realities of maintaining an open-source project, and his perspective on how the Java ecosystem has evolved over the years. Check it out below!</p>]]></description>
      <pubDate>Fri, 23 Oct 2026 13:30:00 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3682461</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19263781&amp;w=600"/>
      <dc:creator>Dominique Pugh</dc:creator>
    </item>
    <item>
      <title>Two Engines, One Query: DuckDB Inside Neo4j</title>
      <link>https://dzone.com/articles/duckdb-inside-neo4j</link>
      <description><![CDATA[<p>If you've been following the database world lately, you'll have noticed DuckDB turning up in some unexpected places. One of the more interesting examples is <code>pg_duckdb</code>, a Postgres extension that embeds DuckDB directly into the Postgres process, letting analytical queries run through DuckDB's engine without leaving the database. It's a clever idea: keep your data where it is, but bring a faster analytical engine.</p>
<p>That got us wondering: could we do something similar with <a href="https://dzone.com/articles/leveraging-neo4j-for-identity-access-management">Neo4j</a>?</p>]]></description>
      <pubDate>Tue, 20 Oct 2026 17:00:00 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3694391</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19246220&amp;w=600"/>
      <dc:creator>Akmal Chaudhri</dc:creator>
    </item>
    <item>
      <title>Testing Java and Spring Applications With Kotlin: Low-Risk to Adoption</title>
      <link>https://dzone.com/articles/kotlin-java-spring-testing</link>
      <description><![CDATA[<p>Teams considering or committed to adopting Kotlin often plan a migration as a series of rewrites, swapping Java services for Kotlin counterparts one microservice at a time. In practice, that kind of plan tends to stall before it produces any shipped code.</p>
<p dir="ltr"><a href="https://dzone.com/articles/kotlin-code-style-best-practices-for-former-java-d">Kotlin's</a> role in the <a href="https://dzone.com/articles/jvm-performance-tuning-for-high-throughput-and-low-latency">JVM</a> ecosystem is expanding because it doesn't require that kind of commitment. Companies such as Netflix, Adobe, and DoorDash have adopted it incrementally, alongside existing JVM systems, rather than through a full rewrite. The lowest-risk starting point is tests. They give you Kotlin's language benefits, including null-safety, data classes, and expressive lambdas, without touching anything that runs in production.</p>]]></description>
      <pubDate>Tue, 20 Oct 2026 14:09:28 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3698123</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19268844&amp;w=600"/>
      <dc:creator>Aniket Bhattacharyea</dc:creator>
    </item>
    <item>
      <title>Java Virtual Threads Under Load: Three Production Limits</title>
      <link>https://dzone.com/articles/java-virtual-threads-limits</link>
      <description><![CDATA[<p>Virtual threads let us keep ordinary blocking code while many more requests wait concurrently. Under load, however, that brings three critical questions into focus:</p>
<ul>
 <li><strong>How much work do we admit?</strong> Cheap threads can still build an expensive queue.</li>
 <li><strong>What belongs inside a lock?</strong> A sleeping lock holder still makes everyone else wait.</li>
 <li><strong>Who stops abandoned work?</strong> A caller's timeout does not cancel its task.</li>
</ul>
<p>The examples below isolate these questions with separate before-and-after programs. Each program is complete: save its code block under the filename shown and run the accompanying command, without arguments. All you need is JDK 25. They use its compact source-file syntax, so no class declaration, build tool, external library, or preview flag is required.</p>]]></description>
      <pubDate>Tue, 20 Oct 2026 13:00:00 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3693039</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19243304&amp;w=600"/>
      <dc:creator>A N M Bazlur Rahman</dc:creator>
    </item>
    <item>
      <title>Where Should a Transaction End? Designing Consistency Boundaries in Distributed Java Systems</title>
      <link>https://dzone.com/articles/where-should-a-transaction-end-designing-consisten</link>
      <description><![CDATA[<p data-pm-slice="1 1 []">Microservices do not eliminate transactions. They force architects to decide where a transaction should end.</p>
<p>That decision is harder than it sounds. A business operation that was once handled inside a single database transaction may cross several services after decomposition. An order can involve inventory, payment, pricing, customer limits, audit history, and notification. The architecture may divide these responsibilities cleanly, but the business still sees one operation: place the order.</p>]]></description>
      <pubDate>Tue, 20 Oct 2026 12:00:00 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3681128</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19243283&amp;w=600"/>
      <dc:creator>Krishna Kandi</dc:creator>
    </item>
    <item>
      <title>Why Kotlin or Java Is the Wrong Question For Enterprises</title>
      <link>https://dzone.com/articles/kotlin-java-enterprise-choice</link>
      <description><![CDATA[<p>If you've sat through more than one architecture review, you've probably sat through a protracted Kotlin-versus-Java debate that goes nowhere. The team spends weeks comparing Kotlin's concise syntax to Java's maturity, runs a poll on developer preference, and produces a decision matrix nobody fully trusts. Then the meeting ends, and nothing changes, because nobody agreed on what problem they were actually trying to solve.</p>
<p>Choosing between infrastructure instruments, such as <a href="https://dzone.com/refcardz/getting-started-with-kotlin">Kotlin</a> and <a href="https://dzone.com/articles/java-a-time-tested-programming-language-still-goin">Java</a>, is an investment decision, and like any investment decision, it needs a thesis. Four business pressures should drive the discussion: time-to-market, operational risk, talent economics, and cross-platform consistency.</p>]]></description>
      <pubDate>Fri, 16 Oct 2026 19:56:18 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3698122</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19268836&amp;w=600"/>
      <dc:creator>Aniket Bhattacharyea</dc:creator>
    </item>
    <item>
      <title>Complex Event Processing (CEP) With Apache Flink: What It Is and When (Not) to Use It</title>
      <link>https://dzone.com/articles/complex-event-processing</link>
      <description><![CDATA[<p><a href="https://dzone.com/articles/apache-flink-1">https://dzone.com/articles/apache-flink-1</a>Most teams working with Apache Flink think about stream processing: filter events, aggregate values, enrich records, join streams. This covers the majority of real-time data problems. But there is a specific class of problems that stream processing handles poorly: detecting meaningful sequences of events across time. Did this specific chain of things happen, in this order, within this time window? Complex event processing (CEP) is the tool designed for exactly this, and it works fundamentally differently from stream processing.</p>
<p>CEP is a built-in capability of Apache Flink, available as open source and deployable at scales the old proprietary platforms could never reach. Yet it remains underused and misunderstood. This article is a practical guide to what CEP is, when to use it, how Flink implements it, and where it fits in modern data architectures, including <a href="https://dzone.com/refcardz/getting-started-with-agentic-ai">agentic AI</a>, which is covered in depth in the companion article.</p>]]></description>
      <pubDate>Fri, 16 Oct 2026 17:00:00 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3673255</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19236107&amp;w=600"/>
      <dc:creator>Kai Wähner</dc:creator>
    </item>
    <item>
      <title>Going All In On the JVM 25 Virtual Threads</title>
      <link>https://dzone.com/articles/jvm-25-virtual-threads</link>
      <description><![CDATA[<p><span style="margin: 0px; padding: 0px;">The project <a href="https://github.com/Angular2Guy/AngularAndSpring" target="_blank">AngularAndSpring</a> has been refactored from Spring Reactor to Spring blocking APIs using JDK 25 and virtual threads.</span></p>
<h2>The Old Architecture</h2>
<p>The reason <a href="https://github.com/Angular2Guy/AngularAndSpring" rel="noopener noreferrer" target="_blank">AngularAndSpring</a> was built using Spring Reactor was primarily the efficient use of operating system threads and memory under high load. Spring Reactor had a limited thread pool (usually the number of available CPU cores) and used OS threads only when the CPU had work to do. It did not let the operating system threads sleep. This used CPU resources much better and required far fewer OS threads, each of which needs around a megabyte of memory.</p>]]></description>
      <pubDate>Wed, 14 Oct 2026 18:00:01 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3686105</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19213124&amp;w=600"/>
      <dc:creator>Sven Loesekann</dc:creator>
    </item>
    <item>
      <title>"Works on My Machine" Is an Architecture Problem</title>
      <link>https://dzone.com/articles/works-on-my-machine-architecture</link>
      <description><![CDATA[<p>The familiar claim that software behaves correctly on a developer workstation but fails elsewhere is often treated as a debugging cliché. In practice, it describes an architectural failure where part of the system’s behavior exists outside version control. Source code may be identical while the effective execution environment differs in runtime version, CPU architecture, filesystem semantics, locale, time zone, native libraries, certificates, environment variables, dependency resolution, or build tooling. When those inputs remain implicit, the developer workstation becomes an undocumented dependency. The resulting failure is not merely environmental inconvenience, but it is evidence that the system lacks a complete, reproducible definition of the conditions under which it is expected to build and run. Reproducible-build practices are based on the same principle: a declared source and build inputs should create an independently verifiable path to the resulting artifact rather than depending on hidden machine state.&nbsp;</p>
<h2>The Machine Is an Input, Even When the Repository Pretends Otherwise</h2>
<p>A repository normally captures application source, configuration templates, and dependency manifests, but operating assumptions often remain outside it. A service compiled with one JDK can behave differently under another.&nbsp;<span style="margin: 0px; padding: 0px;">Code that relies on the host time zone inherits machine configuration, and Java’s default time zone is derived from the environment in which the&nbsp;<a href="https://dzone.com/articles/mastering-the-jvm-elevating-java-development" target="_blank">JVM</a>&nbsp;runs; APIs that obtain the system default can therefore return different values across hosts.</span>&nbsp;Locale has a similar characteristic because a JVM maintains a default locale that can influence locale-sensitive operations.&nbsp;</p>]]></description>
      <pubDate>Tue, 13 Oct 2026 19:00:00 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3689488</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19230700&amp;w=600"/>
      <dc:creator>Uthej Mopathi</dc:creator>
    </item>
    <item>
      <title>Running TypeSafe AI's Jev Inside Neo4j for Confidence-Aware Sentiment Decisions</title>
      <link>https://dzone.com/articles/typesafe-ai-jev-sentiment</link>
      <description><![CDATA[<p>This is Part 3 of a series on running sentiment analysis inside Neo4j.</p>
<ul>
 <li>Part 1, <a href="https://dzone.com/articles/neo4j-sentiment-analysis-java">Running Sentiment Analysis Inside Neo4j With a Java Plugin</a>, used the VADER lexicon via a pure Java UDF – rule-based, fully local, high throughput.</li>
 <li>Part 2, <a href="https://dzone.com/articles/wasm-inside-neo4j">Wasm Inside Neo4j: Building the Example That Didn't Exist</a>, embedded a Wasm runtime inside a Java UDF using <code>wasmtime-java</code> — sandboxed, still local, lower throughput.</li>
</ul>
<p>Part 3 takes a different approach. Instead of bundling a scoring model inside the plugin JAR, we call TypeSafe AI's Jev from inside a Java UDF. Jev is a System One model – it doesn't generate text. It takes a state (the text to evaluate) and a set of typed questions and returns structured decisions with explicit probability and confidence information. No prompt engineering, no JSON schema coercion, no parsing.</p>]]></description>
      <pubDate>Mon, 12 Oct 2026 15:00:00 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3686496</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19225187&amp;w=600"/>
      <dc:creator>Akmal Chaudhri</dc:creator>
    </item>
    <item>
      <title>Building High-Performance Time-Series Applications With Java and QuestDB</title>
      <link>https://dzone.com/articles/java-questdb-time-series</link>
      <description><![CDATA[<p>QuestDB is well-suited for applications necessitating high-performance ingestion and SQL access to time-oriented data. It is especially useful in financial markets, real-time analytics, observability, telemetry, and operational systems where data arrives continuously and must be queried with low latency. Unlike general-purpose databases, QuestDB is purpose-built with time as a core element of both storage and query processes.</p>
<p><a href="https://dzone.com/articles/using-questdb-to-collect-infrastructure-metrics">QuestDB</a> appeals to enterprise developers by combining a time-series architecture with a familiar SQL interface. This technique reduces the learning curve for teams experienced in relational querying while providing a database optimized for append-heavy, chronological workloads. For systems needing recent-state queries, historical analysis, trend detection, and rapid ingestion, QuestDB delivers a practical solution.</p>]]></description>
      <pubDate>Wed, 07 Oct 2026 12:00:00 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3688328</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19220623&amp;w=600"/>
      <dc:creator>Otavio Santana</dc:creator>
    </item>
    <item>
      <title>Building IoT Time-Series Applications With Java and Apache IoTDB</title>
      <link>https://dzone.com/articles/java-iotdb-time-series</link>
      <description><![CDATA[<p>Apache IoTDB is well-suited for environments where time-series data from connected devices and industrial systems is generated continuously and requires efficient querying. Typical use cases include monitoring temperature, pressure, vibration, energy usage, machine status, and device telemetry. This approach also applies to manufacturing, smart infrastructure, fleet monitoring, utilities, and edge computing.</p>
<p>IoTDB stands out for its focus on large-scale <a href="https://dzone.com/articles/understanding-time-series-databases">time-series</a> workloads from devices and industrial systems. It is purpose-built for high-frequency data ingestion, historical analysis, and time-based queries. This makes it ideal for applications that require insight into both the current state and historical trends of devices or processes.</p>]]></description>
      <pubDate>Tue, 06 Oct 2026 16:00:12 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3688327</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19218064&amp;w=600"/>
      <dc:creator>Otavio Santana</dc:creator>
    </item>
    <item>
      <title>OpenSearch Heap Sizing: Swap, Page Cache, and the 50% Rule</title>
      <link>https://dzone.com/articles/opensearch-heap-sizing</link>
      <description><![CDATA[<p>OpenSearch is an open-source, distributed search and analytics suite derived as a fork of Elasticsearch and maintained under the Apache 2.0 license. When it comes to memory configuration, the guidance is often reduced to a few rules of thumb: <code>swapoff -a</code>, <code>vm.swappiness=1</code>, or <code>bootstrap.memory_lock</code>, and allocating 50% of available memory to the JVM heap while leaving the rest for Lucene and the filesystem page cache, <a href="https://dzone.com/articles/opensearch-introduction-and-data-management-patter">OpenSearch</a> off-heap caches, network buffers, and other system needs.</p>
<p>These recommendations are repeated throughout documentation, blog posts, and operational guides, yet their origins and the mechanisms that justify these specific values are rarely examined. Undoubtedly, they provide a reasonable and safe starting point or a safe upper bound in most of the cases, but a safe default is not necessarily an optimal configuration.</p>]]></description>
      <pubDate>Tue, 06 Oct 2026 14:00:06 GMT</pubDate>
      <guid isPermaLink="false">https://dzone.com/articles/3678735</guid>
      <media:thumbnail url="https://dz2cdn1.dzone.com/thumbnail?fid=19169643&amp;w=600"/>
      <dc:creator>Maxim Muzafarov</dc:creator>
    </item>
  </channel>
</rss>
