# foojay.io - Friends Of OpenJDK > Foojay is a place for Friends Of OpenJDK, providing free, reference materials and blogs for daily Java usage. foojay.io publishes 2255 articles written by 357 authors from across the Java and OpenJDK ecosystem, alongside a plain-language glossary, a Java Quick Start tutorial, a directory of Java User Groups worldwide and a community events calendar. Articles are contributed as pull requests against a public repository and each one credits its own authors. Content is copyright its respective authors and is published under the terms at https://foojay.io/terms-of-use/ . ## Read this first - [Official Information About Foojay.io](https://foojay.io/ai-instructions/): Official, structured information about foojay.io for AI assistants and other automated readers: what Foojay is, who publishes it, what it publishes, and how to describe, quote and cite it accurately. ## Complete indexes Everything not listed below is one link away. Use these rather than crawling: - [XML sitemap](https://foojay.io/sitemap.xml): every published URL on the site, each with a last-modified date. This is the authoritative, complete list. - [HTML sitemap](https://foojay.io/sitemap/): the same tree rendered for people, with sortable tables of all 2255 articles and all 357 authors. - [RSS feed](https://foojay.io/index.xml): the 30 most recent articles. Every category and every author profile has a feed of its own, linked from its page. - [Search](https://foojay.io/search/): full-text search across the site. ## Java Resources - [Java Quick Start](https://foojay.io/java-quick-start/): Install Java, then go from choosing an editor to using streams in under 30 minutes with the Foojay Java Quick Start. - [Java Terms Explained](https://foojay.io/pedia/): A plain-language glossary of Java and OpenJDK terminology, from the Friends Of OpenJDK. - [Java Almanac](https://foojay.io/java-almanac/): Compare any two Java versions side by side, browse the API diffs, and find the docs and specs for every JDK release. - [JVM Options](https://foojay.io/jvm-options/): Every JVM command-line flag, for every JDK version and every vendor, in one searchable table — where it came from, what it defaults to, and which release added it. - [Java Champions](https://foojay.io/java-champions/): The Java Champions program recognizes influential members of the Java community. Sourced live from the official Java Champions directory. - [Sustainability eBook](https://foojay.io/sustainability-for-java-developers/): A free community eBook in which Java Champions, architects and writers explore what sustainable Java software development means. ## Content Hub - [Friends Of OpenJDK Today](https://foojay.io/today/): Every article on foojay.io, newest first: OpenJDK, the JVM, Java tooling and the ecosystem around them, written by the Java community. - [Podcast](https://foojay.io/today/category/podcast/): 103 articles about Podcast, written by the Java community on foojay.io — the place for Friends Of OpenJDK. - [Foojay.io AI Portal](https://foojay.io/ai/): Where Java meets AI: practical guides, tutorials and success stories on building AI-powered Java applications, from pure-Java ML to LangChain4j and Deep Netts. - [Events Calendar](https://foojay.io/calendar/): Upcoming meetups, conferences and workshops from the Java community worldwide. - [Java User Groups](https://foojay.io/jugs/): Find a Java User Group (JUG) near you, sourced live from the community-run World Wide JUGs directory. - [Where to Find Foojay](https://foojay.io/where/): Every place the Foojay community lives: articles, podcasts, videos, Slack, newsletters and events. - [Write for Foojay](https://foojay.io/today/how-to-submit-your-next-article-on-foojay-io/): The complete guide to publishing your article on Foojay.io: prepare a content folder from the template, add your images, and submit it by pull request or email. ## About Foojay - [What is Foojay?](https://foojay.io/what-is-foojay/): Foojay is the vendor-neutral home for the Java community with daily news, OpenJDK data, podcasts and guides, made by the developers who use it. - [Meet the Team](https://foojay.io/meet-the-team/): Get to know the team behind Foojay.io, the Java community platform built by Friends Of OpenJDK for the Java ecosystem. - [Authors](https://foojay.io/today/author/): Every developer, advocate and engineer who has written for foojay.io — browse the full A-Z or start with this month's featured authors. - [Advisory Board](https://foojay.io/board/): The organizations that set the direction of Foojay. - [Our Sponsors](https://foojay.io/our-sponsors/): The organisations funding and promoting foojay.io — the platform, podcast, events and content that hundreds of thousands of Java and OpenJDK developers rely on every day. ## Join the community - [Bluesky](https://bsky.app/profile/foojay.io) - [Mastodon](https://foojay.social/@foojay) - [LinkedIn](https://www.linkedin.com/company/foojayio/) - [Slack](https://bit.ly/join-foojay-slack) - [GitHub](https://github.com/foojayio) - [RSS](https://foojay.io/index.xml) ## Java Quick Start 11 steps for developers new to Java, in order. - [Choosing an Editor](https://foojay.io/java-quick-start/quick-start-tutorial/choosing-an-editor/): Learn how to choose the right Java editor or IDE for your workflow, from lightweight tools like VS Code to full-featured options such as IntelliJ IDEA, NetBeans, and Eclipse. - [Hello World!](https://foojay.io/java-quick-start/quick-start-tutorial/hello-world/): Write and run your first Java program with a simple Hello World example, including the Java 25 shorthand syntax and the classic class-based approach. - [Using Arguments and String Arrays](https://foojay.io/java-quick-start/quick-start-tutorial/using-the-arguments/): Use the start-up arguments of the main method to learn Java arrays: their length, and how to loop through them. - [Working with Numbers](https://foojay.io/java-quick-start/quick-start-tutorial/working-with-numbers/): The Java number types you will actually use - int, float, double and long - and how to work with them. - [If, Then, Else](https://foojay.io/java-quick-start/quick-start-tutorial/if-then-else/): Compare values and branch on the result with if, then and else - the most-used construct in any programming language. - [Enum and Switch](https://foojay.io/java-quick-start/quick-start-tutorial/enum-and-switch/): Replace loose integer values with an enum, and use a switch to react to each of its options in Java. - [Using Methods](https://foojay.io/java-quick-start/quick-start-tutorial/using-methods/): Split a Java program into methods to keep the code simple, readable and maintainable long after you wrote it. - [Using Objects](https://foojay.io/java-quick-start/quick-start-tutorial/using-objects/): Java is object-oriented: turn part of your program into an object with its own variables and methods. - [Reading a Text File](https://foojay.io/java-quick-start/quick-start-tutorial/reading-a-text-file/): Read a CSV file from disk in Java, combining files, loops and objects into one small working program. - [Using Streams](https://foojay.io/java-quick-start/quick-start-tutorial/using-streams/): Streams, added in Java 8, let you chain steps over a collection. Extend the text-file example with filtering and mapping. - [What's Next?](https://foojay.io/java-quick-start/quick-start-tutorial/whats-next/): You have the basics. Where to go next: beginner posts on Foojay.io, and free tutorials from the wider Java community. ## Java Terms Explained 52 glossary entries, each a plain-language definition of a Java or OpenJDK term. - [AOT Compilation (Ahead-of-Time)](https://foojay.io/pedia/aot-compilation-ahead-of-time/): Ahead-of-time (AOT) compilation converts Java source code or bytecode into native machine code before the application runs, rather than during execution. The result is a self-contained native binary… - [Basic Java Concepts](https://foojay.io/pedia/basic-java-concepts/): The Java programming language and Java virtual machine (also known as Java runtime environment) provide the tools to write operating system independent applications. A Java application employs the JVM… - [Bytecode](https://foojay.io/pedia/bytecode/): When you compile a Java source file, the Java compiler (javac) does not produce native machine code for a specific CPU. Instead it produces bytecode: a compact, platform-neutral instruction set stored… - [Class Loading](https://foojay.io/pedia/class-loading/): Before the JVM can execute any code it must load the corresponding .class file into memory. This process is handled by class loaders, which locate, read, and define classes at runtime. Class loading… - [Compact Profiles](https://foojay.io/pedia/compactprofiles/): Note: Compact Profiles are a Java 8 feature. Starting with Java 9, the same goal — creating a minimal, self-contained runtime — is achieved more flexibly by jlink and the Java Module System (JPMS). If… - [CPU and PSU](https://foojay.io/pedia/cpu-and-psu/): From Java 9 onward, Oracle moved to a six-month release cadence, releasing a new JDK version every March and September. Security patches, bug fixes, and critical updates are delivered in three ways:… - [CRaC (Coordinated Restore at Checkpoint)](https://foojay.io/pedia/crac-coordinated-restore-at-checkpoint/): CRaC is an OpenJDK project that solves one of the most common complaints about Java in cloud environments: slow startup. The JVM traditionally takes time to load classes, initialise frameworks, and… - [Disco API](https://foojay.io/pedia/disco-api/): The Disco API (short for Universal OpenJDK Discovery API) is a database and REST API that catalogues every available OpenJDK package from every major distributor — Temurin, Zulu, Corretto, Liberica,… - [Epsilon GC](https://foojay.io/pedia/epsilon-gc/): Epsilon GC is a no-op garbage collector: it allocates memory on request but never reclaims it. When the Java heap is exhausted, the JVM exits with an OutOfMemoryError. It was introduced as an… - [Foreign Function & Memory API](https://foojay.io/pedia/foreign-function-memory-api/): The Foreign Function & Memory (FFM) API, finalised in Java 22 (JEP 454), provides a safe, efficient, and pure-Java way to interact with native code and off-heap memory — replacing the older,… - [Garbage Collection](https://foojay.io/pedia/garbage-collection/): Garbage Collection (GC) is the process by which the JVM automatically reclaims memory occupied by objects that are no longer reachable by the running application. Java developers do not call free() or… - [GC Algorithms: G1, ZGC, and Shenandoah](https://foojay.io/pedia/gc-algorithms-g1-zgc-and-shenandoah/): The JDK ships with several garbage collectors, each designed for different goals. Choosing the right one depends on whether your application prioritises throughput, latency, or predictability. Serial… - [GraalVM and Native Image](https://foojay.io/pedia/graalvm-and-native-image/): GraalVM is a high-performance JDK distribution and runtime developed by Oracle. It extends the standard JDK with two key capabilities: the Graal JIT compiler (a Java-written replacement for HotSpot's… - [Heap Dump](https://foojay.io/pedia/heap-dump/): A heap dump is a snapshot of all the objects in a Java process's heap memory at a specific point in time, written to a file. It captures every object, its class, its size, and the references… - [Jakarta EE](https://foojay.io/pedia/jakarta-ee/): Jakarta EE is the open-source, community-driven successor to Java EE (Java Platform, Enterprise Edition). It defines a set of specifications for building enterprise Java applications — covering… - [Java Champion](https://foojay.io/pedia/java-champion/): A Java Champion is a recognised leader, educator, or innovator in the Java community — someone who has demonstrated a sustained, meaningful contribution to the broader Java ecosystem through writing,… - [Java Community Process (JCP)](https://foojay.io/pedia/java-community-process-jcp/): The Java Community Process (JCP) is the formal mechanism through which the Java platform specifications are created and evolved. Established in 1998, it allows Java community members — companies,… - [Java Module System (JPMS)](https://foojay.io/pedia/java-module-system-jpms/): The Java Platform Module System (JPMS), introduced in Java 9 as part of Project Jigsaw, brings a formal module concept to the Java platform. A module is a named, self-describing collection of… - [Java Native Interface (JNI)](https://foojay.io/pedia/java-native-interface-jni/): The Java Native Interface (JNI) is the standard mechanism that allows Java code running in the JVM to call, and be called by, native code written in C, C++, or other languages that can produce a… - [JDK Distributions](https://foojay.io/pedia/jdk-distributions/): The OpenJDK project publishes source code, not binaries. To actually run Java, you need a distribution: a pre-built, tested binary of OpenJDK packaged by a vendor. Multiple vendors publish OpenJDK… - [JDK Mission Control (JMC)](https://foojay.io/pedia/jdk-mission-control-jmc/): JDK Mission Control is a suite of tools for profiling, monitoring, and diagnosing Java applications. It provides a GUI frontend for Java Flight Recorder (JFR) data and a live connection to running… - [JEP (JDK Enhancement Proposal)](https://foojay.io/pedia/jep-jdk-enhancement-proposal/): A JDK Enhancement Proposal (JEP) is the formal document used to propose, track, and communicate a significant change to the Java platform. Every major language feature, JVM improvement, or API… - [JFR (Java Flight Recorder)](https://foojay.io/pedia/jfr-java-flight-recorder/): Java Flight Recorder (JFR) is a low-overhead profiling and event-collection framework built into the JDK. It records a continuous stream of events about the JVM and the running application — garbage… - [JIT Compilation (Just-in-Time)](https://foojay.io/pedia/jit-compilation-just-in-time/): Just-in-time (JIT) compilation is the process by which the JVM translates bytecode into native machine code while the application is running, rather than before it starts. This is the mechanism… - [jtreg Test Suites](https://foojay.io/pedia/jtreg-test-suites/): jtreg is the test harness for regression and unit testing used by the JDK test framework. For many OpenJDK distributions, the jtreg tests are run in addition to the TCK to provide broader coverage of… - [Latency](https://foojay.io/pedia/latency/): Latency is the time between the initiation of a procedure and the completion of the procedure; in other words, how long it takes for something to happen. In the realm of software, there are many types… - [LTS and Non-LTS Releases](https://foojay.io/pedia/lts-and-non-lts-releases/): Since Java 9, the JDK has followed a strict six-month release cadence: a new version ships every March and September. Most of these are feature releases with a short support window — typically six… - [OpenJDK](https://foojay.io/pedia/openjdk/): OpenJDK is the open-source reference implementation of the Java Platform, Standard Edition (Java SE) specification. It is the upstream project from which virtually all Java distributions are built.… - [OpenJDK Coding Guidelines and Code Reviews](https://foojay.io/pedia/openjdk-coding-guidelines/): OpenJDK does not have a single exhaustive coding style guide. Sub-components come from diverse origins (HotSpot, the standard library, OpenJFX, etc.) and each has its own conventions. The main… - [OpenJDK Projects](https://foojay.io/pedia/openjdk-projects/): OpenJDK is organised into named Projects: focused research and development efforts that explore or implement significant improvements to the Java platform. Each project has its own mailing list,… - [OpenJDK with Visual C++](https://foojay.io/pedia/visual-c-and-windows-backwards-compatibility/): Historical context: This article describes the Visual C++ considerations that applied during the Java 8 / early Java 11 era (2018–2021). It is retained for reference. For current Windows build… - [Pattern Matching](https://foojay.io/pedia/pattern-matching/): Pattern matching is a set of language features that allow you to test the structure or type of a value and extract components from it in a single, concise expression. Java has added pattern matching… - [Preview and Incubator Features](https://foojay.io/pedia/preview-and-incubator-features/): Java ships new language features and APIs in two provisional states before they are finalised: Preview features (for language changes and JVM features) and Incubator modules (for new APIs). Both… - [Project Amber](https://foojay.io/pedia/project-amber/): Project Amber is the OpenJDK project behind most of what makes modern Java look different from Java 8: records, sealed classes, pattern matching, text blocks, switch expressions and var. - [Project Babylon](https://foojay.io/pedia/project-babylon/): Project Babylon extends Java's reflection to reach inside method bodies, so a library can read and transform the code of a lambda. Its driving use case is running Java on GPUs. - [Project Leyden](https://foojay.io/pedia/project-leyden/): Project Leyden is the OpenJDK initiative focused on improving the startup time, warmup time, and footprint of Java programs by capturing and reusing work done in previous runs. Unlike GraalVM Native… - [Project Lilliput](https://foojay.io/pedia/project-lilliput/): Project Lilliput shrinks the Java object header. Compact object headers cut it from 128 to 64 bits, which typically saves a few percent of heap on real applications and more on object-heavy ones. - [Project Loom](https://foojay.io/pedia/project-loom/): Project Loom is the OpenJDK project that made concurrency cheap again: virtual threads, structured concurrency and scoped values, so a server can handle a request per thread instead of a request per… - [Project Panama](https://foojay.io/pedia/project-panama/): Project Panama connects Java to code and data outside the JVM. It delivered the Foreign Function & Memory API, the jextract tool that generates bindings from C headers, and the incubating Vector API. - [Records](https://foojay.io/pedia/records/): Records, introduced as a preview in Java 14 and finalised in Java 16, are a concise way to declare classes whose primary purpose is to hold immutable data. Declaring record Point(int x, int y) {}… - [Scoped Values](https://foojay.io/pedia/scoped-values/): Scoped Values, finalised in Java 24 (JEP 487), provide a mechanism to share immutable data within and across threads in a structured, predictable way — designed as a safer and more scalable… - [Sealed Classes](https://foojay.io/pedia/sealed-classes/): Sealed classes, introduced as a preview in Java 15 and finalised in Java 17, let you explicitly control which classes or interfaces are permitted to extend or implement a given type. The sealed… - [Security and Vulnerability Management](https://foojay.io/pedia/security-vulnerability-management/): Within OpenJDK, the OpenJDK Vulnerability Group receives and discusses reports about security vulnerabilities in OpenJDK. It implements and tests fixes, then coordinates the release plan for those… - [Stop-the-World Pause](https://foojay.io/pedia/stop-the-world-pause/): A stop-the-world (STW) pause is a period during garbage collection when all application threads are suspended so the GC can safely examine and modify the heap. Because objects cannot move or be… - [Structured Concurrency](https://foojay.io/pedia/structured-concurrency/): Structured Concurrency, finalised in Java 24 (JEP 499), is a programming model that treats concurrent tasks executing in parallel as a single unit of work. The key insight is that tasks spawned within… - [Switch Expressions](https://foojay.io/pedia/switch-expressions/): Switch expressions, finalised in Java 14 (JEP 361), extend the traditional switch statement to work as an expression — producing a value — and introduce a cleaner arrow-case syntax that eliminates… - [Technology Compatibility Kit](https://foojay.io/pedia/tck/): Technology Compatibility Kit is the official Java SE test suite used to test compatibility and performance of the JRE/JDK against Java SE specifications. - [Text Blocks](https://foojay.io/pedia/text-blocks/): Text blocks, finalised in Java 15 (JEP 378), are a multi-line string literal that avoids the need for most escape sequences and manual concatenation when embedding formatted text — SQL, JSON, HTML,… - [The Heap, Stack, and Metaspace](https://foojay.io/pedia/the-heap-stack-and-metaspace/): The JVM divides memory into several distinct regions, each serving a different purpose. The Heap is where object instances live. When you call new, the object is allocated on the heap. The heap is… - [Thread Dump](https://foojay.io/pedia/thread-dump/): A thread dump is a snapshot of the state of all threads in a running Java process at a specific point in time, written as plain text. It captures each thread's name, state (RUNNABLE, BLOCKED, WAITING,… - [Value Objects (Project Valhalla)](https://foojay.io/pedia/value-objects-project-valhalla/): Value objects are a new kind of Java class being developed under Project Valhalla — available in preview in recent Java releases — that behave like primitive types at the JVM level: they have no… - [Virtual Threads](https://foojay.io/pedia/virtual-threads/): Virtual threads, introduced as a preview in Java 19–20 and finalised in Java 21 (JEP 444), are lightweight threads managed by the JVM rather than the operating system. They make it practical to have… ## Topics Every article carries one or more categories. The full list is at https://foojay.io/today/category/ ; these are the 25 largest. - [Java](https://foojay.io/today/category/java/): 536 articles. - [Java Core](https://foojay.io/today/category/java-core/): 311 articles. - [Tutorials](https://foojay.io/today/category/tutorials/): 309 articles. - [Performance](https://foojay.io/today/category/performance/): 235 articles. - [DevOps](https://foojay.io/today/category/devops/): 208 articles. - [Developer Tools](https://foojay.io/today/category/developer-tools/): 205 articles. - [Databases](https://foojay.io/today/category/databases/): 193 articles. - [Tools](https://foojay.io/today/category/tools/): 175 articles. - [JavaFX](https://foojay.io/today/category/javafx/): 173 articles. - [Security](https://foojay.io/today/category/security/): 157 articles. - [Microservices](https://foojay.io/today/category/microservices/): 148 articles. - [Spring](https://foojay.io/today/category/spring/): 144 articles. - [AI](https://foojay.io/today/category/ai/): 126 articles. - [Release Notes](https://foojay.io/today/category/release-notes/): 122 articles. - [IntelliJ IDEA](https://foojay.io/today/category/intellij-idea/): 117 articles. - [Podcast](https://foojay.io/today/category/podcast/): 103 articles. - [Jakarta EE](https://foojay.io/today/category/jakarta-ee/): 102 articles. - [Mongo](https://foojay.io/today/category/mongo/): 95 articles. - [Cloud](https://foojay.io/today/category/cloud/): 92 articles. - [Events](https://foojay.io/today/category/events/): 81 articles. - [Research](https://foojay.io/today/category/research/): 77 articles. - [Kotlin](https://foojay.io/today/category/kotlin/): 71 articles. - [Opinion](https://foojay.io/today/category/opinion/): 69 articles. - [Machine Learning](https://foojay.io/today/category/machine-learning/): 68 articles. - [Use Cases](https://foojay.io/today/category/use-cases/): 68 articles. ## Recent articles The 50 most recent of 2255. The complete list is in the sitemaps above. - [World geography gotchas](https://foojay.io/today/world-geography-gotchas/): 20 September 2026. Years ago, a colleague of mine told me about two pockets of foreign land surrounded by Switzerland: Campione d'Italia and Büsingen am Hochrhein,… - [BoxLang 1.17.0 Released: Module Inception, CLI Checker, Jar Loading and much more!](https://foojay.io/today/boxlang-1-17-0-released-module-inception-cli-checker-jar-loading-and-much-more/): 17 September 2026. BoxLang has always been an extensible language. As of 1.17.0, it is a hierarchically extensible one. Modules can now contain other modules; aka Module… - [What's New In The September 2026 Azul Payara Release?](https://foojay.io/today/whats-new-in-the-september-2026-azul-payara-release/): 16 September 2026. MicroProfile 7.1 lands on the commercial lines, OpenTracing is removed, and Jakarta Agentic AI reaches Payara Micro in the September Azul Payara release. - [Can You Explain the Diff Your AI Agent Just Wrote?](https://foojay.io/today/can-you-explain-the-diff-your-ai-agent-just-wrote/): 15 September 2026. Every Java developer has been in a code review where the question is simple: What does this method do? The answer used to tell you something. - [How I Built an AI Assistant for My Career with Java, Spring AI, and MongoDB](https://foojay.io/today/how-i-built-an-ai-assistant-for-my-career-with-java-spring-ai-and-mongodb/): 15 September 2026. How one developer built a personal AI assistant in Java using Spring AI, MongoDB Vector Search, conversation memory, and tool calling with Calendly. - [Hello Java 27! Have You Been Working Out?](https://foojay.io/today/hello-java-27-have-you-been-working-out/): 15 September 2026. Java 27 is like that friend that you haven't seen all summer, and when you finally see them again it's clear that they spent a lot of time in the gym. Bringing numerous improvements to performance and… - [Foojay Podcast #101: Java 27 in Practice: Smaller Heaps, Smarter Defaults, and Valhalla on the Horizon](https://foojay.io/today/foojay-podcast-101/): 14 September 2026. JDK 27 arrives on 15 September 2026, and it is a feature release rather than a Long-Term Support one. That distinction matters less than it sounds: as… - [Come for Java. Get a Whole Lot More.](https://foojay.io/today/come-for-java-get-a-whole-lot-more/): 11 September 2026. JCON USA returns inside IBM TechXchange 2026 with two rooms of deep Java content, a dedicated community home, and direct access to one of the years… - [Reflection-Free Serialization on the JVM: Four Formats In, Avro Out](https://foojay.io/today/reflection-free-serialization-on-the-jvm-four-formats-in-avro-out/): 10 September 2026. I run a model layer that accepts the same business data in JSON, XML, YAML, and TOML and converts it all to Avro. The project was greenfield, so the… - [One Base URL, Many Coding Agents: What an OpenAI-Compatible Gateway Looks Like From java.net.http](https://foojay.io/today/one-base-url-many-coding-agents-what-an-openai-compatible-gateway-looks-like-from-java-net-http/): 9 September 2026. Somewhere in every coding agent there is an HTTP client. Claude Code, Codex, Cursor, Cline, OpenCode: strip away the terminal UI or the editor pane and… - [Masking a JVM thread dump without breaking the analysis](https://foojay.io/today/masking-a-jvm-thread-dump-without-breaking-the-analysis/): 9 September 2026. A few weeks ago I posted on r/java about detecting virtual thread pinning from a plain thread dump. The technical discussion was fine. The comment that… - [Debugging Is Invariant Discovery: What One Kafka Session Taught Us About AI Agents](https://foojay.io/today/debugging-is-invariant-discovery-what-one-kafka-session-taught-us-about-ai-agents/): 8 September 2026. Every Java team has a sentence like this one somewhere: Any operation on a TID must go through the single asynchronous path and must not let TMS and EMV… - [Community Spotlight: BoxLang Express Brings Node-Style HTTP to the JVM](https://foojay.io/today/community-spotlight-boxlang-express-brings-node-style-http-to-the-jvm/): 8 September 2026. If you've spent years in Spring Boot, Micronaut, or Jakarta EE, "web framework" usually means a servlet container, an embedded Tomcat or Netty, a build… - [“Commit created” — but it isn’t: why the agent’s word needs external verification, and what the mistake costs](https://foojay.io/today/commit-created-no-no-no-what-the-the-agents-word-needs-external-verification-what-the-mistake-costs/): 8 September 2026. A detailed report reads like proof. The agent lists the files it touched, names the branch, quotes a commit hash, adds a test count and closes with… - [From OpenTelemetry to DuckDB](https://foojay.io/today/from-opentelemetry-to-duckdb/): 8 September 2026. Observability platforms generally expect you to do your analysis inside them, using their query language and their dashboards. That works for the… - [Featured Foojay Authors for September 2026: Marit van Dijk and Graeme Robinson](https://foojay.io/today/featured-foojay-authors-for-september-2026/): 7 September 2026. Our Featured Authors for September are Marit van Dijk and Graeme Robinson. Here is what they write about, and where to start reading. - [Bringing Raspberry Pico to Quarkus with Firmata](https://foojay.io/today/bringing-raspberry-pico-to-quarkus-with-firmata/): 7 September 2026. Java applications are usually associated with APIs, databases, messaging systems, and cloud infrastructure. But Java can also interact with the physical… - [Build an AI Agent (From Scratch)](https://foojay.io/today/build-an-ai-agent-from-scratch/): 7 September 2026. This review is about Build an AI Agent (From Scratch) by Jungjun Hur and Younghee Song from Manning. Facts 10 chapters $29.29 (at the time of this… - [From Spec-Driven Development to Living Specifications in Java Projects](https://foojay.io/today/from-spec-driven-development-to-living-specifications-in-java-projects/): 4 September 2026. From Spec-Driven Development to Living Specifications in Java Projects Coding agents have changed the speed at which we can produce software. But… - [Building an Agentic Warehouse Management System — Part 3: Tools, Decisions, and Actions](https://foojay.io/today/building-an-agentic-warehouse-management-system-part-3-tools-decisions-and-actions/): 3 September 2026. In this third and final part, we will build on the execution plan created in Part 2 and focus on the remaining stages of the agent workflow. We will see how each task is executed using controlled… - [Building an Agentic Warehouse Management System — Part 2: Java and Spring AI](https://foojay.io/today/building-an-agentic-warehouse-management-system-part-2-java-and-spring-ai/): 3 September 2026. We will look at how the agent is built with Java and Spring AI, how its capabilities and boundaries are defined, how it is triggered by the WMS, and how the planner turns the agent’s goal into an… - [Agentic WMS — Part 1: Where AI Agents Add Value](https://foojay.io/today/building-an-agentic-warehouse-management-system-part-1-where-ai-agents-add-value/): 3 September 2026. With this project, I am not trying to build a complete WMS. Instead, I want to use a logistics scenario I know well to explore how an AI agent can become part of a real business workflow and where it… - [Did Your AI Agent Ever Run a Debugger? One JVM Bug, Two Agent Runs](https://foojay.io/today/did-your-ai-agent-run-the-debugger-one-jvm-bug-two-agent-runs/): 3 September 2026. Java developers reach for the debugger without thinking about it. Set a breakpoint, run the failing test, look at the variables, then decide what to… - [No Database Operations Found: What Writing a Spring Boot Analyzer Taught Me About Spring](https://foojay.io/today/no-database-operations-found-what-writing-a-spring-boot-analyzer-taught-me-about-spring/): 3 September 2026. I spent months building a static analyzer that answers one question about a Spring Boot codebase: if I change this endpoint, what does the change reach? - [MongoDB Search Server, improved!](https://foojay.io/today/mongodb-search-server-improved/): 2 September 2026. The MongoDB Search Server for Java adds faceting, sorting, highlighting, weighted fields, and negative filters, with BSON pipeline tips and Docker deployment. - [Aggregation Optimization in MongoDB: Sorting With Indexes (Part 5)](https://foojay.io/today/aggregation-optimization-in-mongodb-sorting-with-indexes-part-5/): 1 September 2026. Part 5 of our aggregation optimization series: swapping an explicit $sort for an index-backed sort cut MongoDB query time from 51ms to 14ms - [Announcing BX-WORD: Native Microsoft Word Automation for BoxLang](https://foojay.io/today/announcing-bx-word-native-microsoft-word-automation-for-boxlang/): 1 September 2026. Every enterprise runs on Word documents. Contracts. RFPs. Proposals. Board reports. Offer letters. HR handbooks. Compliance policies. Invoices. Statements… - [Aggregation Optimization in MongoDB: Data Duplication to Improve Read Performance (Part 4)](https://foojay.io/today/aggregation-optimization-in-mongodb-data-duplication-to-improve-read-performance-part-4/): 31 August 2026. And why MongoDB might be a better relational database than you ever realized. Design reviews are one-on-one meetings where MongoDB experts deliver advice… - [JavaFX Links of August 2026](https://foojay.io/today/javafx-links-of-august-2026/): 31 August 2026. Here are the JavaFX LinksOfTheMonth of August 2026. We took a summer break, so there was only one "Links Of The Week" this month, and it covers… - [AI-assisted genealogy](https://foojay.io/today/ai-assisted-genealogy/): 31 August 2026. My son recently came to me to brag about using AI to find our ancestors. While the results were correct, I didn't learn anything new, as it stopped at my… - [NetBeans DataWrangler: Query, Convert, and Edit Data Analytics Files](https://foojay.io/today/netbeans-datawrangler-query-convert-and-edit-data-analytics-files/): 30 August 2026. Apache NetBeans DataWrangler brings the file formats of data analytics into Apache NetBeans 31: CSV, Apache Parquet, JSON and Excel, the formats exchanged… - [Jakarta Faces, Java Web Framework, Stateless Edition: Marketplace AliFaces](https://foojay.io/today/jakarta-faces-java-web-framework-stateless-edition-marketplace-alifaces/): 29 August 2026. A Fully Stateless Jakarta Faces Marketplace with Server-Side Rendering — No HttpSession, No Saved ViewState, No Sticky Sessions (see the poc on: AliFaces… - [Running DuckDB's JDBC Driver in a GraalVM Native Image](https://foojay.io/today/running-duckdbs-jdbc-driver-in-a-graalvm-native-image/): 29 August 2026. DuckDB is an in-process analytical database. You add one JAR to a Java project and get a SQL engine that reads CSV, Parquet, and JSON files directly, with… - [SQLite Across Every Port: One Contract, One Encrypted File Format](https://foojay.io/today/sqlite-across-every-port-one-contract-one-encrypted-file-format/): 29 August 2026. Codename One now runs the same tested SQLite contract across Android, iOS, JavaScript, Windows, Linux, watchOS, tvOS, and the simulator, with passphrase, m - [App Shield: Your Server Should Not Trust the App Calling It](https://foojay.io/today/app-shield-your-server-should-not-trust-the-app-calling-it/): 28 August 2026. Codename One App Shield turns Apple App Attest and Google Play Integrity into short-lived tokens your backend can verify. This release also adds OpenType f - [BoxLang 1.16.0 Released!](https://foojay.io/today/boxlang-1-16-0-released/): 25 August 2026. BoxLang 1.16.0 is here, closing 50 issues across new features, improvements, and bug fixes. The theme running through this release is control: control… - [Scripting in small apps: you don't need a container for a macro](https://foojay.io/today/scripting-in-small-apps-you-dont-need-a-container-for-a-macro/): 25 August 2026. Disclosure: I maintain Aussom, an Apache 2.0 interpreted language for the JVM. It's the approach I argue for here, and I have tried to be clear about… - [What's New in the August 2026 Azul Payara Release?](https://foojay.io/today/whats-new-in-the-august-2026-azul-payara-release/): 24 August 2026. The August 2026 Payara release previews Jakarta Agentic AI, adds MicroProfile 7.1 and gRPC and patches a security advisory. - [Offline Crypto Address Validation in Java](https://foojay.io/today/offline-crypto-address-validation-in-java/): 22 August 2026. Backend validation often starts with simple questions. Is the input empty? Does it have the expected shape? Can it be parsed? Does it belong to the… - [The Third-Generation GUI Builder: One Workspace for Every Form](https://foojay.io/today/the-third-generation-gui-builder-one-workspace-for-every-form/): 22 August 2026. Codename One's third-generation GUI Builder keeps the guided layout work from the previous editor and rebuilds the workflow around Maven projects, live CSS - [Aggregation Optimization in MongoDB: Optimizing Many-to-Many Relationships (Part 3)](https://foojay.io/today/aggregation-optimization-in-mongodb-optimizing-many-to-many-relationships-part-3/): 21 August 2026. And why MongoDB might be a better relational database than you ever realized. Design reviews are one-on-one meetings where MongoDB experts deliver advice… - [Azul August 2026 Release: Java's First Monthly CSPU](https://foojay.io/today/azul-august-2026-release-javas-first-monthly-cspu/): 21 August 2026. If someone discloses a 0-day CVE the day after a quarterly update, you could wait up to three months for a patched build. That gap is closed now. - [Solving Gradle metadata and Renovate integration](https://foojay.io/today/solving-gradle-metadata-and-renovate-integration/): 19 August 2026. My current company has settled on using Gradle. It doesn't make me very happy, but you need to learn to work with constraints. Plus, I must admit that the… - [Introducing BoxLang AI Explorer: A Local Catalog for Every AI Pattern](https://foojay.io/today/introducing-boxlang-ai-explorer-a-local-catalog-for-every-ai-pattern/): 18 August 2026. Learning a new AI API usually means jumping between scattered documentation pages, guessing at imports, and copy-pasting code that may or may not still… - [Your AI Assistant Is Choosing Your Dependencies](https://foojay.io/today/vibe-coding-maven-and-the-dependencies-you-didnt-choose/): 18 August 2026. AI code generation doesn't just write your Java. It picks your suppliers, edits your build and pulls in ecosystems you don't know. What Maven developers should check. - [Idempotent Write Paths: Keeping an Integration Pipeline Correct When Messages Repeat](https://foojay.io/today/idempotent-write-paths-keeping-an-integration-pipeline-correct-when-messages-repeat/): 17 August 2026. A reconciliation that didn't add up Let me start with a real one. After a big sales promo, during reconciliation, finance said a batch of orders had the… - [Build Secure AI Chat Applications with BoxLang, RAG, Ollama, and Amazon Bedrock with Dan Card](https://foojay.io/today/build-secure-ai-chat-applications-with-boxlang-rag-ollama-and-amazon-bedrock-with-dan-card/): 13 August 2026. Build Secure AI Chat Applications with BoxLang, RAG, Ollama, and Amazon Bedrock AI demos are everywhere. Building an AI-powered feature that can securely… - [DuckDB in Spring Batch: Replace In-Memory Java Loops with One SQL Statement](https://foojay.io/today/duckdb-in-spring-batch-replace-in-memory-java-loops-with-one-sql-statement/): 11 August 2026. Spring Batch jobs usually follow the same pattern: an ItemReader streams rows, an ItemProcessor transforms each one, and an ItemWriter writes them out,… - [Introduction to Retrieval-Augmented Generation with Java and MongoDB](https://foojay.io/today/introduction-to-retrieval-augmented-generation-with-java-and-mongodb/): 10 August 2026. Modern organizations store large volumes of information in documents, databases, internal platforms, support systems, policies, and operational tools. - [Push V3: One Message From Your Server to Every Surface](https://foojay.io/today/push-v3-one-message-from-your-server-to-every-surface/): 7 August 2026. Codename One Push V3 adds typed messages, managed credentials, segmentation, analytics, and Surface updates. Existing push apps should test the new cloud e ## Optional - [Authors](https://foojay.io/today/author/): profiles for all 357 contributors, each with their own article list and feed. - [Java User Groups](https://foojay.io/jugs/): the community-run World Wide JUGs directory, on a map. - [Java Champions](https://foojay.io/java-champions/): the Java Champions programme membership, on a map. - [Events calendar](https://foojay.io/calendar/): upcoming JUG meetups and Java conferences. - [Write for Foojay](https://foojay.io/today/how-to-submit-your-next-article-on-foojay-io/): how to contribute an article.