<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>foojay.io - Friends Of OpenJDK</title><link>https://foojay.io/</link><description>Foojay is a place for Friends Of OpenJDK, providing free, reference materials and blogs for daily Java usage.</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 30 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://foojay.io/index.xml" rel="self" type="application/rss+xml"/><item><title>Rewrite Everything in Java: Not Rust</title><link>https://foojay.io/today/rewrite-everything-in-java-not-rust/</link><pubDate>Fri, 30 Oct 2026 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Shai Almog</dc:creator><category>Java</category><guid>https://foojay.io/today/rewrite-everything-in-java-not-rust/</guid><description>A Java word processor built with Codename One beats its Rust twin on startup, typing latency, memory, binary size, code size and CI time, and also runs on iPhone, Android and the web.</description></item><item><title>OpenID Federation with pac4j and CAS</title><link>https://foojay.io/today/openid-federation-with-pac4j-and-cas/</link><pubDate>Fri, 30 Oct 2026 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jérôme LELEU</dc:creator><category>Java</category><category>Security</category><category>Tutorials</category><guid>https://foojay.io/today/openid-federation-with-pac4j-and-cas/</guid><description>Build an OpenID Federation with pac4j as the Java relying party and Apereo CAS as both OpenID Provider and trust anchor.</description></item><item><title>An IDE for Coding Agents: NetBeans Refactorings over MCP</title><link>https://foojay.io/today/ide-for-coding-agents-netbeans-mcp/</link><pubDate>Fri, 30 Oct 2026 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anton Epple</dc:creator><category>NetBeans</category><category>AI</category><category>Developer Tools</category><guid>https://foojay.io/today/ide-for-coding-agents-netbeans-mcp/</guid><description>Coding agents rename methods with grep and edit loops. A headless Apache NetBeans gives them real refactorings over MCP, with fewer turns and tokens.</description></item><item><title>The Maven Build Cache in Practice</title><link>https://foojay.io/today/maven-build-cache-in-practice/</link><pubDate>Thu, 29 Oct 2026 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Maarten Mulders</dc:creator><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Kasper van de Wetering</dc:creator><category>Maven</category><category>Use Cases</category><guid>https://foojay.io/today/maven-build-cache-in-practice/</guid><description>The Maven Build Cache significantly reduces build times in enterprise projects. Learn how we introduced it in Azure DevOps pipelines, the issues we encountered, and the valuable lessons we learned along the way.</description></item><item><title>How We Share Foojay Posts on Social Media</title><link>https://foojay.io/today/how-we-share-foojay-posts-on-social-media/</link><pubDate>Thu, 29 Oct 2026 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Frank Delporte</dc:creator><category>Foojay</category><category>Developer Tools</category><category>AI</category><category>JBang</category><guid>https://foojay.io/today/how-we-share-foojay-posts-on-social-media/</guid><description>Every new Foojay article is announced on Mastodon, Bluesky and LinkedIn by one small JBang script. How it works and which problems we had to solve.</description></item><item><title>JVM on Unikernel Nanos — GC trade-offs and heap uncommit</title><link>https://foojay.io/today/jvm-on-unikernel-nanos-gc-trade-offs-and-heap-uncommit/</link><pubDate>Wed, 28 Oct 2026 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Angelo Rubini</dc:creator><category>Java</category><category>OpenJDK</category><category>Performance</category><guid>https://foojay.io/today/jvm-on-unikernel-nanos-gc-trade-offs-and-heap-uncommit/</guid><description>Testing five HotSpot garbage collectors and heap uncommit on Nanos, revisiting the Akamas study with Eclipse Temurin 25 and Renaissance.</description></item><item><title>Free Java, Real Risk: Why Unsupported OpenJDK Is Now a Security Gamble</title><link>https://foojay.io/today/free-java-real-risk-why-unsupported-openjdk-is-now-a-security-gamble/</link><pubDate>Wed, 28 Oct 2026 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Simon Ritter</dc:creator><category>Java</category><category>Security</category><guid>https://foojay.io/today/free-java-real-risk-why-unsupported-openjdk-is-now-a-security-gamble/</guid><description>Learn why unsupported OpenJDK is a security risk in the age of AI.</description></item><item><title>Announcing Vitra – A Modern UI Library for JavaFX</title><link>https://foojay.io/today/announcing-vitra-modern-ui-library-for-javafx/</link><pubDate>Wed, 28 Oct 2026 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Libán Bande González</dc:creator><category>JavaFX</category><category>Library</category><category>Desktop</category><guid>https://foojay.io/today/announcing-vitra-modern-ui-library-for-javafx/</guid><description>Vitra is a carefully crafted UI library that brings modern controls, Fluent-inspired materials and professional surfaces to JavaFX applications.</description></item><item><title>What jstack Misses When Your Java Service Uses Virtual Threads</title><link>https://foojay.io/today/what-jstack-misses-when-your-java-service-uses-virtual-threads/</link><pubDate>Tue, 27 Oct 2026 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Felipe Maschio</dc:creator><category>Java</category><category>Java Core</category><category>Debugging</category><guid>https://foojay.io/today/what-jstack-misses-when-your-java-service-uses-virtual-threads/</guid><description>A service with virtual threads can have thousands of requests waiting while jstack shows idle carriers. How to read Thread.dump_to_file instead, JDK 21 to 25.</description></item><item><title>New Java Features Are Not Just for Interviews. Two Real-World Use Cases from Axelix</title><link>https://foojay.io/today/java-new-features-in-production/</link><pubDate>Tue, 27 Oct 2026 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mikhail Polivakha</dc:creator><category>Java</category><category>Sealed Classes</category><guid>https://foojay.io/today/java-new-features-in-production/</guid><description>See how Axelix uses Java ScopedValue to propagate security context and sealed interfaces to protect domain invariants in real-world production code.</description></item><item><title>DuckDB 2.0 Is Here</title><link>https://foojay.io/today/duckdb-2-0-is-here/</link><pubDate>Tue, 27 Oct 2026 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Geertjan Wielenga</dc:creator><category>Databases</category><category>Java</category><guid>https://foojay.io/today/duckdb-2-0-is-here/</guid><description>DuckDB 2.0.0 LTS - Cinnamon Teal - is the project's biggest release yet, with a server mode, async I/O, first-class VARIANT support and a new parser.</description></item><item><title>How three Java Champions put GitHub Copilot to work</title><link>https://foojay.io/today/java-champions-github-copilot/</link><pubDate>Mon, 26 Oct 2026 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Julien Dubois</dc:creator><category>Java</category><category>Developer Tools</category><guid>https://foojay.io/today/java-champions-github-copilot/</guid><description>Three Java Champions share practical GitHub Copilot workflows, from feature development to agentic verification and debugging Pi4J.</description></item><item><title>Arcana: One Pure-Java Library for (Almost) Every Archive Format</title><link>https://foojay.io/today/arcana-pure-java-archive-library/</link><pubDate>Mon, 26 Oct 2026 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Stéphane Bury</dc:creator><category>Java</category><category>Library</category><category>Tools</category><guid>https://foojay.io/today/arcana-pure-java-archive-library/</guid><description>Arcana extracts ZIP, 7z, RAR 5, zstd, MSI, ISO, DMG and 40+ formats in pure Java 8: no native code, no dependencies, one JAR on Maven Central.</description></item><item><title>Sheetmusic4J 0.0.5: LilyPond Import and Export</title><link>https://foojay.io/today/sheetmusic4j-0-0-5-lilypond-import-and-export/</link><pubDate>Sun, 25 Oct 2026 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Frank Delporte</dc:creator><category>JavaFX</category><category>Java</category><guid>https://foojay.io/today/sheetmusic4j-0-0-5-lilypond-import-and-export/</guid><description>Sheetmusic4J 0.0.5 can read and write LilyPond files through the ScoreFile facade, and brings engraving improvements like tuplet placement and octave clefs.</description></item><item><title>Pi4J Drivers V1.2.0: ePaper, DAC/ADC, Motors, and LoRa</title><link>https://foojay.io/today/pi4j-drivers-v1-2-0-epaper-dac-adc-motors-and-lora/</link><pubDate>Sun, 25 Oct 2026 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Frank Delporte</dc:creator><category>Pi4J</category><category>Raspberry Pi</category><category>Java</category><category>Embedded</category><guid>https://foojay.io/today/pi4j-drivers-v1-2-0-epaper-dac-adc-motors-and-lora/</guid><description>Pi4J Drivers V1.2.0 adds ePaper displays with partial updates, new DAC and ADC drivers, motor and servo controllers, and a LoRa transceiver driver for Java on the Raspberry Pi.</description></item><item><title>JCast Roundup: AI Agents, Clean Code, Cloud and Quarkus (Summer 2026)</title><link>https://foojay.io/today/jcast-roundup-summer-2026/</link><pubDate>Sat, 24 Oct 2026 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Oumaima Zerouali</dc:creator><category>Podcast</category><category>Java</category><category>AI</category><category>Cloud</category><category>Interviews</category><guid>https://foojay.io/today/jcast-roundup-summer-2026/</guid><description>Six new JCast episodes from June to October 2026: AI hype and agents, clean code, cloud costs, Quarkus with Kevin Dubois, and meeting-heavy days.</description></item><item><title>Create an Uber Clone in 1 Minute</title><link>https://foojay.io/today/create-an-uber-clone-in-1-minute/</link><pubDate>Sat, 24 Oct 2026 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Shai Almog</dc:creator><category>Java</category><category>Codename One</category><guid>https://foojay.io/today/create-an-uber-clone-in-1-minute/</guid><description>Own a full-stack Java ride-hailing application: rider, driver and admin apps, payments, live tracking and push.</description></item><item><title>OWASP Java Security Libraries: Please Update!</title><link>https://foojay.io/today/owasp-java-security-libraries-please-update/</link><pubDate>Fri, 23 Oct 2026 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jim Manico</dc:creator><category>Java</category><category>Security</category><guid>https://foojay.io/today/owasp-java-security-libraries-please-update/</guid><description>Fresh releases of OWASP Java Encoder and Java HTML Sanitizer: what changed, how to use them, and what to check when upgrading.</description></item><item><title>How to Secure a Spring Boot Application with OpenID Connect and pac4j</title><link>https://foojay.io/today/how-to-secure-a-spring-boot-application-with-openid-connect-and-pac4j/</link><pubDate>Fri, 23 Oct 2026 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jérôme LELEU</dc:creator><category>Java</category><category>Spring</category><category>Security</category><category>Tutorials</category><guid>https://foojay.io/today/how-to-secure-a-spring-boot-application-with-openid-connect-and-pac4j/</guid><description>Add OpenID Connect login to Spring Boot with pac4j: Maven setup, provider configuration, user profiles and logout.</description></item><item><title>Azul Zulu October 2026 Quarterly Update: 53 CVEs, Then a Zero-Day One Day Later</title><link>https://foojay.io/today/azul-zulu-october-2026-quarterly-update-and-out-of-cycle-release/</link><pubDate>Fri, 23 Oct 2026 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Frank Delporte</dc:creator><category>Java</category><category>Java Core</category><category>Release Notes</category><guid>https://foojay.io/today/azul-zulu-october-2026-quarterly-update-and-out-of-cycle-release/</guid><description>A record 53 CVEs fixed in the October 2026 quarterly update for Azul Zulu, overtaken within a day by a zero-day: compromised eMudhra CA keys and an out-of-cycle release.</description></item><item><title>Exact Prices in Java: Decimal Strings and BigDecimal Traps</title><link>https://foojay.io/today/exact-prices-in-java/</link><pubDate>Thu, 22 Oct 2026 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Christian Lauridsen</dc:creator><category>Java</category><category>Java Core</category><guid>https://foojay.io/today/exact-prices-in-java/</guid><description>Why double breaks prices, why APIs send them as strings, and the BigDecimal and Jackson traps to avoid when you read, compute and display them.</description></item><item><title>Android on iOS, Web &amp; Desktop Efficiently and for Free</title><link>https://foojay.io/today/android-apps-beyond-android/</link><pubDate>Thu, 22 Oct 2026 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Shai Almog</dc:creator><category>Java</category><category>Codename One</category><guid>https://foojay.io/today/android-apps-beyond-android/</guid><description>Compile Android apps for iOS, web and desktop with a free, open-source compatibility layer. Try the browser demo, see the iOS binary size and migrate one...</description></item><item><title>Java Stream Gatherers: From Built-in Patterns to Custom Pipeline Mechanics</title><link>https://foojay.io/today/java-stream-gatherers/</link><pubDate>Wed, 21 Oct 2026 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mahendra Rao B</dc:creator><category>Java</category><category>Tutorials</category><category>IntelliJ</category><guid>https://foojay.io/today/java-stream-gatherers/</guid><description>Explore Java Stream Gatherers (JEP 485) from practical built-in patterns like windowing and concurrent mapping to authoring your own custom stateful pipeline components.</description></item><item><title>BxPlaywright 1.0: Real Browsers, Fluent BoxLang, Built for AI Agents</title><link>https://foojay.io/today/bxplaywright-10-real-browsers-fluent-boxlang-built-for-ai-agents/</link><pubDate>Wed, 21 Oct 2026 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Luis Majano</dc:creator><category>BoxLang</category><category>Java</category><category>Testing</category><category>AI</category><category>Developer Tools</category><guid>https://foojay.io/today/bxplaywright-10-real-browsers-fluent-boxlang-built-for-ai-agents/</guid><description>BxPlaywright 1.0 brings fluent browser automation, real-browser testing, Playwright MCP, accessibility checks, rendering, and AI-agent tooling to BoxLang.</description></item><item><title>BoxLang 1.18.0 Released: Every Cloud, Every Node, Every Agent</title><link>https://foojay.io/today/boxlang-1-18-0-released-every-cloud-every-node-every-agent/</link><pubDate>Wed, 21 Oct 2026 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Luis Majano</dc:creator><category>BoxLang</category><category>Java</category><category>Cloud</category><category>AI</category><guid>https://foojay.io/today/boxlang-1-18-0-released-every-cloud-every-node-every-agent/</guid><description>BoxLang 1.18.0 adds Azure Functions, cluster-safe scheduled tasks, a more automation-friendly CLI, and refreshed docs for developers and AI agents.</description></item><item><title>Upgrading from Java 21 to 25: What Actually Breaks</title><link>https://foojay.io/today/upgrading-java-21-to-25-what-actually-breaks/</link><pubDate>Tue, 20 Oct 2026 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Gerard Marimon Caparrós</dc:creator><category>Java</category><category>OpenJDK Migration</category><category>JEPs</category><guid>https://foojay.io/today/upgrading-java-21-to-25-what-actually-breaks/</guid><description>Seven changes between Java 21 and 25 that break builds, startup or behaviour, each reproduced on both JDKs, and how to find them before you upgrade.</description></item><item><title>Foojay Podcast #103: Killing Reflection at Build Time with Dmitry Moskalyuk and Shai Almog</title><link>https://foojay.io/today/foojay-podcast-103/</link><pubDate>Mon, 19 Oct 2026 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Dmitry Moskalyuk</dc:creator><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Frank Delporte</dc:creator><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Shai Almog</dc:creator><category>Java</category><category>Kotlin</category><category>Performance</category><category>Podcast</category><category>Codename One</category><guid>https://foojay.io/today/foojay-podcast-103/</guid><description>A backend data layer and a cross-platform UI framework both moved reflection to build time. Dmitry Moskalyuk and Shai Almog explain why, and what it costs.</description></item><item><title>Lottie4J 1.2.7: A Performance Release</title><link>https://foojay.io/today/lottie4j-1-2-7-a-performance-release/</link><pubDate>Sun, 18 Oct 2026 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Frank Delporte</dc:creator><category>JavaFX</category><guid>https://foojay.io/today/lottie4j-1-2-7-a-performance-release/</guid><description>Lottie4J 1.2.7 focuses on performance: image assets are decoded once and cached, track mattes reuse their buffers between frames, and GC pauses drop by two thirds.</description></item><item><title>Pi4J V5.0.0: Work in Progress</title><link>https://foojay.io/today/pi4j-v5-work-in-progress/</link><pubDate>Sat, 17 Oct 2026 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Frank Delporte</dc:creator><category>Pi4J</category><category>Raspberry Pi</category><category>Embedded</category><guid>https://foojay.io/today/pi4j-v5-work-in-progress/</guid><description>What is changing towards Pi4J V5.0.0: a big API cleanup, a simpler Context, parallel ports, RISC-V support, better board detection, and a new release flow.</description></item><item><title>Build Your First SaaS with MongoDB Ephemeral Clusters</title><link>https://foojay.io/today/build-your-first-saas-with-mongodb-ephemeral-clusters/</link><pubDate>Fri, 16 Oct 2026 00:00:00 +0000</pubDate><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tim Kelly</dc:creator><category>Mongo</category><category>Java</category><category>Spring</category><category>Tutorials</category><guid>https://foojay.io/today/build-your-first-saas-with-mongodb-ephemeral-clusters/</guid><description>Provision a MongoDB Atlas Ephemeral Cluster with one API call, then have an AI coding agent build a full-stack Spring Boot and React job tracker on it.</description></item></channel></rss>