Foojay, the Friends Of OpenJDK

Foojay, the Friends Of OpenJDK

@foojay.io

Foojay.io is the central resource for the Java community’s daily ​information needs, a place for friends of OpenJDK, ​and a community platform for the Java ecosystem​ — bringing together and helping Java professionals everywhere.​

999 followers129 following479 posts

New on Foojay: Mikhail Polivakha explains how Axelix uses Java 25's ScopedValue to pass a security context from an HTTP filter down to the transport layer, and why ThreadLocal falls short. He also covers a sealed interface used for domain design. foojay.io/today/java-n... #Java #OpenJDK

foojay.ioNew Java Features Are Not Just for Interviews. Two Real-World Use Cases from AxelixSee how Axelix uses Java ScopedValue to propagate security context and sealed interfaces to protect domain invariants in real-world production code.

Using virtual threads and jstack shows idle carriers but not the thousands of requests waiting on your database. Felipe Maschio explains how Thread.dump_to_file captures them, and what to compare across dumps. foojay.io/today/what-j... #Java #VirtualThreads

foojay.ioWhat jstack Misses When Your Java Service Uses Virtual ThreadsA 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.

On Foojay: Stéphane Bury explains Arcana, an open-source Java library and CLI that lists, extracts and identifies 40+ archive and disk image formats. No native code, no dependencies, Java 8+, 1.2 MB JAR. foojay.io/today/arcana... #Java #OpenSource

foojay.ioArcana: One Pure-Java Library for (Almost) Every Archive FormatArcana 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.

Pi4J Drivers v1.2.0 is out. It adds ePaper displays with partial updates, new DAC/ADC drivers, motor drivers like the LN298 and ULN2003, and a LoRa driver for the Semtech LR11xx. @frankdelporte.be explains the highlights on Foojay: foojay.io/today/pi4j-d... #Java #RaspberryPi #Pi4J

foojay.ioPi4J Drivers V1.2.0: ePaper, DAC/ADC, Motors, and LoRaPi4J 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.

On Foojay: @frankdelporte.be explains how Sheetmusic4J 0.0.5 adds LilyPond import and export. Load a .ly file and render it natively in JavaFX, or save any score as LilyPond for a PDF. It also brings engraving improvements like nested tuplets. foojay.io/today/sheetm... #Java #JavaFX

foojay.ioSheetmusic4J 0.0.5: LilyPond Import and ExportSheetmusic4J 0.0.5 can read and write LilyPond files through the ScoreFile facade, and brings engraving improvements like tuplet placement and octave clefs.

New on Foojay: Oumaima Zerouali shares the JCast Summer 2026 roundup. Six Dutch-language episodes on AI agents, clean code, cloud, Quarkus and developer workdays, with guests from the Belgian tech scene and a Red Hat special. foojay.io/today/jcast-... #Java #Podcast #Quarkus

foojay.ioJCast Roundup: AI Agents, Clean Code, Cloud and Quarkus (Summer 2026)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.

On Foojay, @frankdelporte.be explains Azul's October 2026 Zulu update: 53 CVEs patched, then an out-of-cycle release on October 21 for compromised eMudhra CA keys. It also covers why security-only CPU builds are the faster, safer way to patch. foojay.io/today/azul-z... #Java #OpenJDK

foojay.ioAzul Zulu October 2026 Quarterly Update: 53 CVEs, Then a Zero-Day One Day LaterA 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.

New on Foojay: Jérôme LELEU, maintainer of pac4j, explains how to add OpenID Connect sign-in to a Spring Boot app. The tutorial starts with the public pac4j test server, then shows what changes for Keycloak or Google. foojay.io/today/how-to... #Java #SpringBoot #OpenIDConnect

foojay.ioHow to Secure a Spring Boot Application with OpenID Connect and pac4jAdd OpenID Connect login to Spring Boot with pac4j: Maven setup, provider configuration, user profiles and logout.

On Foojay, Shai Almog ( @codename-one.bsky.social ) explains how Codename One compiles classic Android apps into native code for iOS, web and desktop. No Dalvik or ART runtime is bundled. The imported gallery makes an 8.73 MB compressed iOS bundle. foojay.io/today/androi... #Java #Kotlin

foojay.ioAndroid on iOS, Web & Desktop Efficiently and for FreeCompile 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...

New on Foojay: Christian Lauridsen explains how to keep every digit of a price in Java. Why double fails, why decimalValue() on a string node returns 0, and five BigDecimal traps, from equals vs compareTo to E-notation. foojay.io/today/exact-... #Java #BigDecimal #Jackson

foojay.ioExact Prices in Java: Decimal Strings and BigDecimal TrapsWhy double breaks prices, why APIs send them as strings, and the BigDecimal and Jackson traps to avoid when you read, compute and display them.

BoxLang 1.18.0 is out. It adds an Azure Functions runtime alongside AWS Lambda and Google Cloud Functions, plus server fixation so scheduled tasks run on just one node in a cluster. Luis Majano @lmajano.bsky.social explains what's new: foojay.io/today/boxlan... #BoxLang #Serverless

foojay.ioBoxLang 1.18.0 Released: Every Cloud, Every Node, Every AgentBoxLang 1.18.0 adds Azure Functions, cluster-safe scheduled tasks, a more automation-friendly CLI, and refreshed docs for developers and AI agents.

On Foojay: @lmajano.bsky.social explains bx-playwright 1.0, browser automation and testing for BoxLang powered by Playwright. Drive Chromium, Firefox and WebKit, write fluent tests, and give AI agents a real browser to check the apps they build. foojay.io/today/bxplay... #BoxLang #Playwright

foojay.ioBxPlaywright 1.0: Real Browsers, Fluent BoxLang, Built for AI AgentsBxPlaywright 1.0 brings fluent browser automation, real-browser testing, Playwright MCP, accessibility checks, rendering, and AI-agent tooling to BoxLang.

New on Foojay: Mahendra Rao B explains Java Stream Gatherers, finalized in JDK 24. See how built-in gatherers like windowFixed, windowSliding, scan and fold handle batching and running totals, then how to write your own. foojay.io/today/java-s... #Java #Streams

foojay.ioJava Stream Gatherers: From Built-in Patterns to Custom Pipeline MechanicsExplore Java Stream Gatherers (JEP 485) from practical built-in patterns like windowing and concurrent mapping to authoring your own custom stateful pipeline components.

New on Foojay: Gerard Marimon Caparrós looks at what stops working when you move from Java 21 to 25. Annotation processors that silently don't run, the Security Manager flag that halts the JVM, removed Thread methods, and the ignored COMPAT locale provider. foojay.io/today/upgrad... #Java #Java25

foojay.ioUpgrading from Java 21 to 25: What Actually BreaksSeven 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.

Lottie4J 1.2.7 is a performance-only release. @frankdelporte.be explains how caching decoded images and reusing matte buffers cut GC pauses from 531 to 177 in a 22-second run. Note: use 1.2.8, which fixes a matte regression. foojay.io/today/lottie... #Java #JavaFX

foojay.ioLottie4J 1.2.7: A Performance ReleaseLottie4J 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.

Foojay, the Friends Of OpenJDK reposted

In @foojay.io #Podcast 103, I talked with Shai Almog and Dmitry Moskalyuk about reflection in #Java. It's a quiet tax on the JVM, and easy to stop noticing until you go looking for where your CPU is going. Available in your favorite podcast app and on YouTube: www.youtube.com/watch?v=smHz...

youtube.comKilling Reflection at Build Time: Avro, Codename One and Java Code Generation (Foojay Podcast #103)YouTube video by Frank Delporte

On Foojay, @frankdelporte.be explains what's coming in Pi4J V5.0.0: a much leaner core, one clear way to create IO instances, mock fallback, a new ParallelPort IO type, and RISC-V support. No release date yet, but snapshots are available to try. foojay.io/today/pi4j-v... #Java #Pi4J

foojay.ioPi4J V5.0.0: Work in ProgressWhat 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.

Apple's new iOS look shouldn't force your redesign schedule. Shai Almog ( @codename-one.bsky.social ) explains how Codename One lets you pick Xcode 27 and the iOS 27 theme separately, so you decide when to adopt them. foojay.io/today/who-de... #Java #iOS

foojay.ioApple Shouldn't Dictate Your App's Redesign ScheduleAdopt Xcode 27 without moving your redesign schedule. This week: Liquid Glass, JPA inspired ORM, OpenTelemetry, WebSockets, push callbacks, and native...

Ted Kupolov explains how to monitor a few Spring Boot apps on a small VPS without Prometheus and Grafana. StatLite reads Actuator data and shows health, errors, latency and restarts. One Go binary with SQLite. foojay.io/today/lightw... #SpringBoot #Java

foojay.ioLightweight Spring Boot Monitoring Without Prometheus and GrafanaMonitor Spring Boot applications on a small VPS using Actuator and StatLite, without operating a full Prometheus and Grafana stack.

Error Prone catches bugs at compile time, not in code review or production. @hakdogan.bsky.social explains how this Google-built tool runs inside javac to spot patterns that compile but are likely wrong - like YYYY vs yyyy in date formats. foojay.io/today/introd... #Java #ErrorProne

foojay.ioIntroduction to Error Prone: How to Catch Bugs at Compile TimeError Prone plugs into javac to catch code that compiles but is most likely wrong. A tour of its built-in checks, Refaster rules and custom BugCheckers.

Testing #JakartaEE apps means balancing speed vs reality. Dominika Tasarz @payaracommunity.bsky.social shows how WeldInitiator, Arquillian, and Testcontainers each solve different testing problems. From fast CDI unit tests to full container deployments. foojay.io/today/testin... #Testing #Java

foojay.ioTesting Jakarta EE: Three Layers, Three ToolsA guide to Simon Laden's three-part series on testing Jakarta EE with WeldInitiator, Arquillian and Testcontainers, and the question each tool answers.

New article by Ricardo Mello: Learn how to build a real-time fraud detection system using Java, Kafka Streams, and vector similarity search. Practical examples are included. foojay.io/today/real-t... #Java #Kafka #FraudDetection

foojay.ioReal-Time Fraud Detection in Java with Kafka Streams and Vector SimilarityHow Java, Kafka Streams, and MongoDB vector search combine to catch fraud in real time, from rule-based guardrails to behavioral similarity scoring.

AI coding agents can pass all tests but still miss the point. New article by Viktoria Evdokimova on Foojay about establishing team agreements when working with AI tools in Java projects. What passes the build isn't always what you actually need. foojay.io/today/green-... #Java #AI #DevTeams

foojay.ioGreen Build, Wrong Task: A Working Agreement for Java Teams Using AI Coding AgentsThree ways AI coding agents waste a Java team's afternoon, and the spec, locked tests and capped review loop that stop it. Webinar notes, agent-agnostic.

New on Foojay by Luqman Saeed: Learn how to add RAG (Retrieval-Augmented Generation) to your Jakarta EE 11 application using just the JDK and Jakarta specifications. No extra dependencies needed. foojay.io/today/adding... #JakartaEE #Java #RAG

foojay.ioAdding RAG to a Jakarta EE 11 App With Only the JDK and Jakarta SpecsBuild a RAG pipeline in a Jakarta EE 11 app with only the JDK HTTP client, Jakarta specs and MicroProfile Config: no vector database, no Python.

New tutorial by Libán Bande González on building a custom code editor control in JavaFX. Covers syntax highlighting, line numbers, and text manipulation. Perfect if you're working on developer tools or IDEs. foojay.io/today/buildi... #JavaFX #Java

foojay.ioBuilding a Code Editor Control in JavaFXA look inside a custom JavaFX Control/Skin implementation of a code-editor component: virtualized line numbers, keyword highlighting, bracket matching, multi-cursor editing, undo/redo, and…

JVMs warming up in isolation costs you performance and resources. What if they could share their optimization knowledge across your fleet? New article by Jiří Holuša on warming up JVMs more efficiently. foojay.io/today/why-ev... #Java #JVM #Performance

foojay.ioWhy Every JVM In Your Fleet Warms Up AloneWhy you can't just copy a JIT-compiled method from one JVM to another: compiled code is a bet on one specific JVM's state. Identity, validity, and profitability all have to be checked before it's safe...

New article on Foojay: Lathe is a Java language server that integrates directly with your Maven build. No extra configuration needed - it reads your POM and gets to work. By Alexey Gavrilov. foojay.io/today/lathe-... #Java #Maven #DevTools

foojay.ioLathe: A Java Language Server That Works Straight From Your Maven BuildNo project import, no classpath setup — Lathe takes its whole model from your Maven build, so the editor never drifts from what actually compiles.