1<!doctype html><html lang=en><head><meta name=generator content="Hugo 0.165.0"><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no,minimum-scale=1">
1<script>(function(e,t,n,s,o){e[s]=e[s]||[],e[s].push({"gtm.start":(new Date).getTime(),event:"gtm.js"});var a=t.getElementsByTagName(n)[0],i=t.createElement(n),r=s!="dataLayer"?"&l="+s:"";i.async=!0,i.src="https://www.googletagmanager.com/gtm.js?id="+o+r,a.parentNode.insertBefore(i,a)})(window,document,"script","dataLayer","GTM-M6ZT5NW")</script>
1<title>foojay.io - Friends Of OpenJDK</title><meta name=description content="Foojay is a place for Friends Of OpenJDK, providing free, reference materials and blogs for daily Java usage."><link rel=canonical href=https://foojay.io/><meta property="og:site_name" content="foojay"><meta property="og:title" content="foojay.io - Friends Of OpenJDK"><meta property="og:description" content="Foojay is a place for Friends Of OpenJDK, providing free, reference materials and blogs for daily Java usage."><meta property="og:url" content="https://foojay.io/"><meta property="og:type" content="website"><meta property="og:image" content="https://foojay.io/images/foojay-social-card.png"><meta name=twitter:card content="summary_large_image"><link rel=icon href=/images/favicon.png>
1<script type=application/ld+json>{"@context":"https://schema.org","@graph":[{"@id":"https://foojay.io/#organization","@type":"Organization","alternateName":"Friends Of OpenJDK","description":"Foojay is a place for Friends Of OpenJDK, providing free, reference materials and blogs for daily Java usage.","foundingDate":"2020","logo":{"@type":"ImageObject","height":512,"url":"https://foojay.io/images/foojay-logo-square.png","width":512},"name":"foojay.io","sameAs":["https://bsky.app/profile/foojay.io","https://foojay.social/@foojay","https://www.linkedin.com/company/foojayio/","https://github.com/foojayio"],"url":"https://foojay.io/"},{"@id":"https://foojay.io/#website","@type":"WebSite","description":"Foojay is a place for Friends Of OpenJDK, providing free, reference materials and blogs for daily Java usage.","inLanguage":"en-us","name":"foojay.io - Friends Of OpenJDK","potentialAction":{"@type":"SearchAction","query-input":"required name=search_term_string","target":{"@type":"EntryPoint","urlTemplate":"https://foojay.io/search/?q={search_term_string}"}},"publisher":{"@id":"https://foojay.io/#organization"},"url":"https://foojay.io/"}]}</script>
1<link rel=preload as=font type=font/woff2 crossorigin href=/vendor/fonts/source-sans-3-400-latin.woff2><link rel=preload as=font type=font/woff2 crossorigin href=/vendor/fonts/barlow-700-latin.woff2><link rel=stylesheet href=/vendor/fonts/fonts.css><link rel=stylesheet href=/css/style.css>
1<script>(function(){try{var e=localStorage.getItem("foojay-theme"),t=e?e==="dark":window.matchMedia("(prefers-color-scheme: dark)").matches;t?document.documentElement.setAttribute("data-theme","dark"):document.documentElement.setAttribute("data-theme","light")}catch{}})()</script>
1<link rel=alternate type=application/rss+xml href=https://foojay.io/index.xml title="foojay.io - Friends Of OpenJDK"></head><body><noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-M6ZT5NW" height=0 width=0 style=display:none;visibility:hidden></iframe></noscript><nav class=skip-links aria-label="Skip links"><a class=skip-link href=#main>Skip to content</a> 2<a class=skip-link href=#footer>Skip to footer</a></nav><header class=site-header data-nav><div class=site-header__inner><a class=logo href=/ aria-label="Foojay home"><img class=logo__img src=/images/foojay-logo.png alt=foojay.io> 3<span class=logo__tag>Friends Of OpenJDK</span> 4</a><button class=nav-toggle type=button data-nav-toggle aria-expanded=false aria-controls=nav-shell aria-label="Open menu"> 5<span>Menu</span><span class=nav-toggle__bars aria-hidden=true></span></button><div class=nav-shell id=nav-shell><div class=nav-drawer__head><span id=nav-drawer-title>Navigation</span> 6<button type=button class=nav-close data-nav-close> 7Close menu 8<svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="m6 6 12 12M18 6 6 18"/></svg></button></div><nav class=primary-nav id=primary-nav aria-label=Primary><div class="header-actions header-actions--mobile nav-drawer__search"><form class=site-search role=search aria-label="Search (menu)" action=/search/ data-search><label><span class=u-sr>Search foojay.io</span> 9<input type=search name=q placeholder="Search foojay.io" autocomplete=off> 10</label><button class=site-search__toggle type=submit data-search-toggle aria-expanded=false aria-label="Search foojay.io" title="Search foojay.io"> 11<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="10.5" cy="10.5" r="6.5"/><path d="M15.5 15.5 21 21"/></svg></button></form></div><ul class=primary-nav__list><li class="nav-item nav-item--has-panel" data-nav-item><button class="nav-link nav-link--parent" type=button data-nav-trigger aria-expanded=false aria-controls=nav-panel-news>News</button><div class=nav-panel id=nav-panel-news><div class="nav-panel__inner nav-panel__inner--cols-1"><ul class=nav-panel__list><li><a href=/today/>Daily News<span class=nav-panel__desc>Everything the community published, newest first</span></a></li><li><a href=/today/category/podcast/>Podcast<span class=nav-panel__desc>Conversations with the people building and using Java</span></a></li><li><a href=/calendar/>Event Calendar<span class=nav-panel__desc>JUG meetups, conferences, and other events</span></a></li><li><a href=/today/category/jc-ai-newsletter/>JC-AI Newsletter<span class=nav-panel__desc>AI Newsletter curated by Miro Wengner</span></a></li><li><a href=/jvm-weekly/>Foojay Monthly Review<span class=nav-panel__desc>Artur Skowronski's monthly Foojay roundup in JVM Weekly</span></a></li><li><a href=/ai/>Foojay.io AI Portal<span class=nav-panel__desc>Java and AI: guides, tutorials and machine learning on the JVM</span></a></li><li><a href=/today/category/>All Categories<span class=nav-panel__desc>Every topic the community writes about, A-Z</span></a></li></ul><div class=nav-panel__foot><a href=/today/>View all articles →</a></div></div></div></li><li class="nav-item nav-item--has-panel" data-nav-item><button class="nav-link nav-link--parent" type=button data-nav-trigger aria-expanded=false aria-controls=nav-panel-resources>Resources</button><div class=nav-panel id=nav-panel-resources><div class="nav-panel__inner nav-panel__inner--cols-1"><ul class=nav-panel__list><li><a href=/sustainability-for-java-developers/>Sustainability for Java Developers<span class=nav-panel__desc>The free community eBook</span></a></li><li><a href=/java-almanac/>Java Almanac<span class=nav-panel__desc>Every Java version, its docs and API diffs, in one place</span></a></li><li><a href=/jvm-options/>JVM Options<span class=nav-panel__desc>Every JVM flag, per JDK version and per vendor, searchable</span></a></li><li><a href=/jugs/>Java User Groups<span class=nav-panel__desc>Find a JUG near you on the world map</span></a></li><li><a href=/java-champions/>Java Champions<span class=nav-panel__desc>The community members recognized by the Java Champions program</span></a></li></ul></div></div></li><li class="nav-item nav-item--has-panel" data-nav-item><button class="nav-link nav-link--parent" type=button data-nav-trigger aria-expanded=false aria-controls=nav-panel-java-basics>Java Basics</button><div class=nav-panel id=nav-panel-java-basics><div class="nav-panel__inner nav-panel__inner--cols-3"><ul class=nav-panel__list><li><a href=/pedia/>Java Terms Explained<span class=nav-panel__desc>The Java and OpenJDK jargon dictionary</span></a></li><li><a href=/java-quick-start/other-tutorials/>Other Tutorials<span class=nav-panel__desc>Many more places where you can learn more about Java</span></a></li></ul><div class=nav-group><a class=nav-group__title href=/java-quick-start/install-java/>Install Java</a><ul class=nav-panel__list><li><a href=/java-quick-start/install-java/install-java-on-windows/>Windows</a></li><li><a href=/java-quick-start/install-java/install-java-on-macos/>macOS</a></li><li><a href=/java-quick-start/install-java/install-java-on-linux/>Linux</a></li><li><a href=/java-quick-start/install-java/check-your-java-installation/>Check your installation</a></li><li><a href=/java-quick-start/install-java/find-another-java-version/>Find another Java version</a></li></ul></div><div class=nav-group><a class=nav-group__title href=/java-quick-start/quick-start-tutorial/>
11Quick Start Tutorial</a><ul class=nav-panel__list><li><a href=/java-quick-start/quick-start-tutorial/choosing-an-editor/>1. Choosing an editor</a></li><li><a href=/java-quick-start/quick-start-tutorial/hello-world/>2. Hello World</a></li><li><a href=/java-quick-start/quick-start-tutorial/using-the-arguments/>3. Arguments and string arrays</a></li><li><a href=/java-quick-start/quick-start-tutorial/working-with-numbers/>4. Working with numbers</a></li><li><a href=/java-quick-start/quick-start-tutorial/if-then-else/>5. If, then, else</a></li><li><a href=/java-quick-start/quick-start-tutorial/enum-and-switch/>6. Enum and switch</a></li><li><a href=/java-quick-start/quick-start-tutorial/using-methods/>7. Using methods</a></li><li><a href=/java-quick-start/quick-start-tutorial/using-objects/>8. Using objects</a></li><li><a href=/java-quick-start/quick-start-tutorial/reading-a-text-file/>9. Reading a text file</a></li><li><a href=/java-quick-start/quick-start-tutorial/using-streams/>10. Using streams</a></li><li><a href=/java-quick-start/quick-start-tutorial/whats-next/>What's next?</a></li></ul></div><div class=nav-panel__foot><a href=/java-quick-start/>Open the full Java Quick Start guide →</a></div></div></div></li><li class="nav-item nav-item--has-panel" data-nav-item><button class="nav-link nav-link--parent" type=button data-nav-trigger aria-expanded=false aria-controls=nav-panel-about>About</button><div class=nav-panel id=nav-panel-about><div class="nav-panel__inner nav-panel__inner--cols-1"><ul class=nav-panel__list><li><a href=/what-is-foojay/>What is Foojay?<span class=nav-panel__desc>About Foojay, it's history, and logo</span></a></li><li><a href=/where/>Where to Find Foojay<span class=nav-panel__desc>Foojay is not only this website, but a lot more...</span></a></li><li><a href=/today/author/>Authors<span class=nav-panel__desc>Everyone who writes for foojay.io</span></a></li><li><a href=/meet-the-team/>Meet the Team<span class=nav-panel__desc>The team that keeps foojay.io running</span></a></li><li><a href=/our-sponsors/>Our Sponsors<span class=nav-panel__desc>The organisations that keep foojay.io running</span></a></li><li><a href=/board/>Advisory Board<span class=nav-panel__desc>Organizations deciding on Foojayâs roadmap and direction</span></a></li></ul></div></div></li></ul><div class="header-actions header-actions--mobile"><button class=theme-toggle type=button data-theme-toggle aria-label="Switch to dark theme"> 12<svg class="icon-moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 14.6A8.6 8.6.0 019.4 4 8.6 8.6.0 1020 14.6z"/></svg> 13<svg class="icon-sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" aria-hidden="true"><circle cx="12" cy="12" r="4.2"/><path d="M12 2.5v2.2m0 14.6v2.2M2.5 12h2.2m14.6.0h2.2M5.3 5.3l1.5 1.5M17.2 17.2l1.5 1.5m0-13.4-1.5 1.5M6.8 17.2l-1.5 1.5"/></svg> 14</button> 15<a class=header-link href=/today/join-slack-com-t-foojay-signup/>Join our Slack</a> 16<a class="btn btn--accent" href=/today/how-to-submit-your-next-article-on-foojay-io/>Write for Foojay</a></div></nav></div><div class=header-actions><form class=site-search role=search aria-label=Search action=/search/ data-search><label><span class=u-sr>Search foojay.io</span> 17<input type=search name=q placeholder="Search foojay.io" autocomplete=off> 18</label><button class=site-search__toggle type=submit data-search-toggle aria-expanded=false aria-label="Search foojay.io" title="Search foojay.io"> 19<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="10.5" cy="10.5" r="6.5"/><path d="M15.5 15.5 21 21"/></svg></button></form><button class=theme-toggle type=button data-theme-toggle aria-label="Switch to dark theme"> 20<svg class="icon-moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 14.6A8.6 8.6.0 019.4 4 8.6 8.6.0 1020 14.6z"/></svg> 21<svg class="icon-sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" aria-hidden="true"><circle cx="12" cy="12" r="4.2"/><path d="M12 2.5v2.2m0 14.6v2.2M2.5 12h2.2m14.6.0h2.2M5.3 5.3l1.5 1.5M17.2 17.2l1.5 1.5m0-13.4-1.5 1.5M6.8 17.2l-1.5 1.5"/></svg> 22</button> 23<a class=header-link href=/today/join-slack-com-t-foojay-signup/>Join our Slack</a> 24<a class="btn btn--accent" href=/today/how-to-submit-your-next-article-on-foojay-io/>Write for Foojay</a></div></div></header><div class=nav-backdrop data-nav-backdrop hidden></div>
24<main class=site-main id=main tabindex=-1 data-pagefind-body data-pagefind-filter=section:page><h1 class=visually-hidden>foojay.io - Friends Of OpenJDK</h1><div class=home-intro><div class=shell><p>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. <a href=/what-is-foojay/>What is Foojay? →</a></p></div></div><div class=layout-with-sidebar><div class=content-col><div class="lead-panel highlight-panel"><h2 class=eyebrow>Most recent post</h2><article class="post-card post-card--lead"><a href=/today/diagrams-as-code-mermaid-support-on-foojay/ class=post-card-image tabindex=-1 aria-hidden=true><span class=thumb-ph style=--ph-hue:177><span class=thumb-ph__label>Foojay</span></span> 25<img src=/today/diagrams-as-code-mermaid-support-on-foojay/mermaid-support-on-foojay.jpg alt fetchpriority=high decoding=async onerror=this.remove()></a><div class=post-card-body><h3 class=post-card-title><a href=/today/diagrams-as-code-mermaid-support-on-foojay/>Diagrams as Code: Mermaid Support on the new Foojay</a></h3><p class=post-card-excerpt>Foojay articles now render Mermaid diagrams from a fenced code block. Write the diagram in Markdown, get a real diagram, and keep it reviewable in the pull request.</p><div class=post-card-meta><span class="byline-group byline-group--avatars"><a class=byline href=/today/author/frankdelporte/><img class=byline-avatar src=/today/author/frankdelporte/frankdelporte.jpg alt loading=lazy decoding=async width=60 height=60>Frank Delporte</a></span> 26<time datetime=2026-09-24>Sep 24, 2026</time> 27<span class=views>52 views</span></div></div></article></div><section class=ad-band data-pagefind-ignore=all aria-label="Sponsored content"><div class="ad-carousel ad-carousel--wide" data-ad-carousel data-ad-endpoint=https://foojay.io/api/views data-ad-shuffle><ul class=ad-carousel__track data-ad-track><li class=ad-carousel__slide data-ad-key=2026-09-new-foojay><div class="ad ad--wide" style=--ad-bg:#ffffff;--ad-ink:#000000><div class=ad__img><img src=/ads/2026-09-new-foojay/foojay-social-card.png alt loading=lazy decoding=async onerror='this.closest(".ad__img").remove()'></div><div class=ad__body><p class=ad__title>Welcome to the new Foojay!</p><p class=ad__desc>The same content from amazing Java developers, now in a new home. Foojay has been rebuilt from the ground up!</p><div class=ad__foot><a class=ad__btn href=https://foojay.io/today/announcing-the-new-foojay/ target=_blank aria-label="Read more: Welcome to the new Foojay!" rel="noopener nofollow">Read more 28<svg class="ad__btn-arrow" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><path d="M3.333 8h9.334M8 3.333 12.667 8 8 12.667" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></a></div></div></div></li><li class=ad-carousel__slide data-ad-key=2026-09-coderabbit-ai-code-review><div class="ad ad--wide" style=--ad-bg:#EEEEE3;--ad-ink:#000000><div class=ad__img><img src=/ads/2026-09-coderabbit-ai-code-review/coderabbit.png alt loading=lazy decoding=async onerror='this.closest(".ad__img").remove()'></div><div class=ad__body><p class=ad__title>Cut Code Review Time & Bugs in Half. Instantly.</p><p class=ad__desc>Supercharge your team to ship faster with the most advanced AI code reviews.</p><div class=ad__foot><a class=ad__btn href=https://coderabbit.link/foojay-banner target=_blank aria-label="Get Started!: Cut Code Review Time & Bugs in Half. Instantly." rel="noopener sponsored">Get Started! 29<svg class="ad__btn-arrow" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><path d="M3.333 8h9.334M8 3.333 12.667 8 8 12.667" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></a><p class=ad__label><svg width="12" height="12" viewBox="0 0 12 12" fill="none" aria-hidden="true"><path d="M6 1l1.545 3.13L11 4.635 8.5 7.07l.59 3.44L6 8.885 2.91 10.51l.59-3.44L1 4.635l3.455-.505L6 1z" stroke="#5EB761" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg> 30Sponsored Content</p></div></div></div></li><li class=ad-carousel__slide data-ad-key=2026-09-foojay-sustainability-ebook><div class="ad ad--wide" style=--ad-bg:#29184e;--ad-ink:#ffffff><div class=ad__img><img src=/ads/2026-09-foojay-sustainability-ebook/sustainability-ebook.jpg alt loading=lazy decoding=async onerror='this.closest(".ad__img").remove()'></div><div class=ad__body><p class=ad__title>Free eBook: Sustainability for Java Developers</p><p class=ad__desc>Towards an understanding of sustainable software development, written by and for the friends of OpenJDK</p><div class=ad__foot><a class=ad__btn href=https://leanpub.com/sustainabilityforjavadevelopers target=_blank aria-label="Get it on Leanpub: Free eBook: Sustainability for Java Developers" rel="noopener nofollow">Get it on Leanpub
31<svg class="ad__btn-arrow" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><path d="M3.333 8h9.334M8 3.333 12.667 8 8 12.667" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg> 32</a><a class="ad__btn ad__btn--ghost" href=/sustainability-for-java-developers/ aria-label="Read more: Free eBook: Sustainability for Java Developers">Read more</a></div></div></div></li><li class=ad-carousel__slide data-ad-key=2026-09-azul-jvm-drag-ai-infrastructure><div class="ad ad--wide" style=--ad-bg:#29184e;--ad-ink:#ffffff><div class=ad__img><img src=/ads/2026-09-azul-jvm-drag-ai-infrastructure/azul-jvm-drag.png alt loading=lazy decoding=async onerror='this.closest(".ad__img").remove()'></div><div class=ad__body><p class=ad__title>Your GPU spend is optimized. Your JVM probably isnât.</p><p class=ad__desc>Hidden JVM inefficiencies - GC pauses, conservative JIT, slow warm-up - are quietly draining your AI infrastructure's performance and cloud spend. This guide shows how to eliminate that drag and scale with fewer nodes.</p><div class=ad__foot><a class=ad__btn href=https://www.azul.com/jvm-drag-ai-infrastructure/ target=_blank aria-label="Download Now: Your GPU spend is optimized. Your JVM probably isnât." rel="noopener sponsored">Download Now 33<svg class="ad__btn-arrow" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><path d="M3.333 8h9.334M8 3.333 12.667 8 8 12.667" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></a><p class=ad__label><svg width="12" height="12" viewBox="0 0 12 12" fill="none" aria-hidden="true"><path d="M6 1l1.545 3.13L11 4.635 8.5 7.07l.59 3.44L6 8.885 2.91 10.51l.59-3.44L1 4.635l3.455-.505L6 1z" stroke="#5EB761" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg> 34Sponsored Content</p></div></div></div></li></ul>
34<script>(function(){var e,t,n,o,i,s=document.currentScript.previousElementSibling;if(!s)return;for(e=Array.prototype.slice.call(s.children),t=e.length-1;t>0;t--)o=Math.floor(Math.random()*(t+1)),i=e[t],e[t]=e[o],e[o]=i;for(n=0;n<e.length;n++)s.appendChild(e[n])})()</script>
34<button class="ad-carousel__arrow ad-carousel__arrow--prev" data-ad-prev type=button aria-label="Previous banner" hidden> 35<svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><path d="M12.667 8H3.333M8 12.667 3.333 8 8 3.333" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg> 36</button> 37<button class="ad-carousel__arrow ad-carousel__arrow--next" data-ad-next type=button aria-label="Next banner" hidden> 38<svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><path d="M3.333 8h9.334M8 3.333 12.667 8 8 12.667" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg> 39</button> 40<button class=ad-carousel__pause data-ad-pause type=button aria-label="Pause banner rotation" hidden> 41<svg class="ad-carousel__icon-pause" width="14" height="14" viewBox="0 0 16 16" aria-hidden="true"><rect x="3.5" y="2.5" width="3.5" height="11" rx="1" fill="currentColor"/><rect x="9" y="2.5" width="3.5" height="11" rx="1" fill="currentColor"/></svg> 42<svg class="ad-carousel__icon-play" width="14" height="14" viewBox="0 0 16 16" aria-hidden="true"><path d="M4 2.8v10.4a.6.6.0 00.92.5l8.2-5.2a.6.6.0 000-1L4.92 2.3A.6.6.0 004 2.8z" fill="currentColor"/></svg></button></div></section>
42<script src=/js/ad-carousel.js defer></script>
42<div class=post-grid><article class=post-card><a href=/today/asciidoc-support-on-foojay/ class=post-card-image tabindex=-1 aria-hidden=true><span class=thumb-ph style=--ph-hue:177><span class=thumb-ph__label>Foojay</span></span> 43<img src=/today/asciidoc-support-on-foojay/asciidoc-support-on-foojay.jpg alt loading=lazy decoding=async onerror=this.remove()></a><div class=post-card-meta><span class="byline-group byline-group--avatars"><a class=byline href=/today/author/frankdelporte/><img class=byline-avatar src=/today/author/frankdelporte/frankdelporte.jpg alt loading=lazy decoding=async width=60 height=60>Frank Delporte</a></span> 44<time datetime=2026-09-23>Sep 23, 2026</time> 45<span class=views>73 views</span></div><h3 class=post-card-title><a href=/today/asciidoc-support-on-foojay/>AsciiDoc Support on the new Foojay</a></h3><p class=post-card-excerpt>Foojay articles can now be written in AsciiDoc as well as Markdown. Named blocks, real tables, source callouts and admonitions â the things â¦</p><div class=post-card-categories><a href=/today/category/foojay/>Foojay</a></div></article><article class=post-card><a href=/today/announcing-the-new-foojay/ class=post-card-image tabindex=-1 aria-hidden=true><span class=thumb-ph style=--ph-hue:177><span class=thumb-ph__label>Foojay</span></span> 46<img src=/today/announcing-the-new-foojay/announcing-the-new-foojay.png alt loading=lazy decoding=async onerror=this.remove()></a><div class=post-card-meta><span class="byline-group byline-group--avatars"><a class=byline href=/today/author/frankdelporte/><img class=byline-avatar src=/today/author/frankdelporte/frankdelporte.jpg alt loading=lazy decoding=async width=60 height=60>Frank Delporte</a></span> 47<time datetime=2026-09-22>Sep 22, 2026</time> 48<span class=views>363 views</span></div><h3 class=post-card-title><a href=/today/announcing-the-new-foojay/>Announcing The New Foojay</a></h3><p class=post-card-excerpt>Foojay has a new home: a static, open-source site where publishing an article is a pull request. Same URLs, same archive, much faster, and â¦</p><div class=post-card-categories><a href=/today/category/foojay/>Foojay</a></div></article><article class=post-card><a href=/today/world-geography-gotchas/ class=post-card-image tabindex=-1 aria-hidden=true><span class=thumb-ph style=--ph-hue:268><span class=thumb-ph__label>Tutorials</span></span> 49<img src=/today/world-geography-gotchas/cover_large-1.jpg alt loading=lazy decoding=async onerror=this.remove()></a><div class=post-card-meta><span class="byline-group byline-group--avatars"><a class=byline href=/today/author/nicolas-frankel/><img class=byline-avatar src=/today/author/nicolas-frankel/nicolas-frankel.jpg alt loading=lazy decoding=async width=60 height=60>Nicolas Frankel</a></span> 50<time datetime=2026-09-20>Sep 20, 2026</time> 51<span class=views>111 views</span></div><h3 class=post-card-title><a href=/today/world-geography-gotchas/>World geography gotchas</a></h3><p class=post-card-excerpt>Years ago, a colleague of mine told me about two pockets of foreign land surrounded by Switzerland: Campione d'Italia and Büsingen am â¦</p><div class=post-card-categories><a href=/today/category/tutorials/>Tutorials</a></div></article><article class=post-card><a href=/today/boxlang-1-17-0-released-module-inception-cli-checker-jar-loading-and-much-more/ class=post-card-image tabindex=-1 aria-hidden=true><span class=thumb-ph style=--ph-hue:135><span class=thumb-ph__label>AI</span></span> 52<img src=/today/boxlang-1-17-0-released-module-inception-cli-checker-jar-loading-and-much-more/boxlang-v1.17.0.jpg alt loading=lazy decoding=async onerror=this.remove()></a><div class=post-card-meta><span class="byline-group byline-group--avatars"><a class=byline href=/today/author/cristobal-escobar/><img class=byline-avatar src=/today/author/cristobal-escobar/cristobal-escobar.jpg alt loading=lazy decoding=async width=60 height=60>Cristobal Escobar</a></span> 53<time datetime=2026-09-17>Sep 17, 2026</time> 54<span class=views>147 views</span></div><h3 class=post-card-title><a href=/today/boxlang-1-17-0-released-module-inception-cli-checker-jar-loading-and-much-more/>BoxLang 1.17.0 Released: Module Inception, CLI Checker, Jar Loading and much more!</a></h3><p class=post-card-excerpt>BoxLang has always been an extensible language. As of 1.17.0, it is a hierarchically extensible one. Modules can now contain other modules; â¦</p><div class=post-card-categories><a href=/today/category/ai/>AI</a><a href=/today/category/boxlang/>BoxLang</a></div></article>
54<article class=post-card><a href=/today/whats-new-in-the-september-2026-azul-payara-release/ class=post-card-image tabindex=-1 aria-hidden=true><span class=thumb-ph style=--ph-hue:189><span class=thumb-ph__label>Jakarta EE</span></span> 55<img src=/today/whats-new-in-the-september-2026-azul-payara-release/Whats-New-in-the-Payara-September-2026-Release.jpg alt loading=lazy decoding=async onerror=this.remove()></a><div class=post-card-meta><span class="byline-group byline-group--avatars"><a class=byline href=/today/author/dominika-tasarz/><img class=byline-avatar src=/today/author/dominika-tasarz/dominika-tasarz.png alt loading=lazy decoding=async width=60 height=60>Dominika Tasarz</a></span> 56<time datetime=2026-09-16>Sep 16, 2026</time> 57<span class=views>229 views</span></div><h3 class=post-card-title><a href=/today/whats-new-in-the-september-2026-azul-payara-release/>What's New In The September 2026 Azul Payara Release?</a></h3><p class=post-card-excerpt>MicroProfile 7.1 lands on the commercial lines, OpenTracing is removed, and Jakarta Agentic AI reaches Payara Micro in the September Azul â¦</p><div class=post-card-categories><a href=/today/category/jakarta-ee/>Jakarta EE</a><a href=/today/category/payara/>Payara</a></div></article><article class=post-card><a href=/today/can-you-explain-the-diff-your-ai-agent-just-wrote/ class=post-card-image tabindex=-1 aria-hidden=true><span class=thumb-ph style=--ph-hue:135><span class=thumb-ph__label>AI</span></span> 58<img src=/today/can-you-explain-the-diff-your-ai-agent-just-wrote/Frame-5.jpg alt loading=lazy decoding=async onerror=this.remove()></a><div class=post-card-meta><span class="byline-group byline-group--avatars"><a class=byline href=/today/author/viktoria-evdokimova/><img class=byline-avatar src=/today/author/viktoria-evdokimova/viktoria-evdokimova.jpg alt loading=lazy decoding=async width=60 height=60>Viktoria Evdokimova</a></span> 59<time datetime=2026-09-15>Sep 15, 2026</time> 60<span class=views>183 views</span></div><h3 class=post-card-title><a href=/today/can-you-explain-the-diff-your-ai-agent-just-wrote/>Can You Explain the Diff Your AI Agent Just Wrote?</a></h3><p class=post-card-excerpt>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 â¦</p><div class=post-card-categories><a href=/today/category/ai/>AI</a><a href=/today/category/intellij-idea/>IntelliJ IDEA</a></div></article><article class=post-card><a href=/today/how-i-built-an-ai-assistant-for-my-career-with-java-spring-ai-and-mongodb/ class=post-card-image tabindex=-1 aria-hidden=true><span class=thumb-ph style=--ph-hue:135><span class=thumb-ph__label>AI</span></span> 61<img src=/today/how-i-built-an-ai-assistant-for-my-career-with-java-spring-ai-and-mongodb/Screenshot-2026-09-15-at-12.41.29-scaled.jpg alt loading=lazy decoding=async onerror=this.remove()></a><div class=post-card-meta><span class="byline-group byline-group--avatars"><a class=byline href=/today/author/ricardo-mello/><img class=byline-avatar src=/today/author/ricardo-mello/ricardo-mello.jpg alt loading=lazy decoding=async width=60 height=60>Ricardo Mello</a></span> 62<time datetime=2026-09-15>Sep 15, 2026</time> 63<span class=views>215 views</span></div><h3 class=post-card-title><a href=/today/how-i-built-an-ai-assistant-for-my-career-with-java-spring-ai-and-mongodb/>How I Built an AI Assistant for My Career with Java, Spring AI, and MongoDB</a></h3><p class=post-card-excerpt>How one developer built a personal AI assistant in Java using Spring AI, MongoDB Vector Search, conversation memory, and tool calling with â¦</p><div class=post-card-categories><a href=/today/category/ai/>AI</a><a href=/today/category/databases/>Databases</a></div></article><article class=post-card><a href=/today/hello-java-27-have-you-been-working-out/ class=post-card-image tabindex=-1 aria-hidden=true><span class=thumb-ph style=--ph-hue:141><span class=thumb-ph__label>Java</span></span> 64<img src=/today/hello-java-27-have-you-been-working-out/dumbbells.jpg alt loading=lazy decoding=async onerror=this.remove()></a><div class=post-card-meta><span class="byline-group byline-group--avatars"><a class=byline href=/today/author/hanno-embregts/>
64<img class=byline-avatar src=/today/author/hanno-embregts/hanno-embregts.jpg alt loading=lazy decoding=async width=60 height=60>Hanno Embregts</a></span> 65<time datetime=2026-09-15>Sep 15, 2026</time> 66<span class=views>194 views</span></div><h3 class=post-card-title><a href=/today/hello-java-27-have-you-been-working-out/>Hello Java 27! Have You Been Working Out?</a></h3><p class=post-card-excerpt>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 â¦</p><div class=post-card-categories><a href=/today/category/java/>Java</a><a href=/today/category/java-core/>Java Core</a></div></article><article class=post-card><a href=/today/foojay-podcast-101/ class=post-card-image tabindex=-1 aria-hidden=true><span class=thumb-ph style=--ph-hue:141><span class=thumb-ph__label>Java</span></span> 67<img src=/today/foojay-podcast-101/episode-101-java-27.jpg alt loading=lazy decoding=async onerror=this.remove()></a><div class=post-card-meta><span class="byline-group byline-group--avatars"><span class=byline-faces><a class=byline-face href=/today/author/frankdelporte/ data-name="Frank Delporte"><img class=byline-avatar src=/today/author/frankdelporte/frankdelporte.jpg alt="Frank Delporte" loading=lazy decoding=async width=60 height=60></a><a class=byline-face href=/today/author/simonritter/ data-name="Simon Ritter"><img class=byline-avatar src=/today/author/simonritter/simonritter.jpg alt="Simon Ritter" loading=lazy decoding=async width=60 height=60></a></span><span class="byline byline--count" data-name="Frank Delporte, Simon Ritter" aria-hidden=true>2 authors</span></span> 68<time datetime=2026-09-14>Sep 14, 2026</time> 69<span class=views>216 views</span></div><h3 class=post-card-title><a href=/today/foojay-podcast-101/>Foojay Podcast #101: Java 27 in Practice: Smaller Heaps, Smarter Defaults, and Valhalla on the Horizon</a></h3><p class=post-card-excerpt>Simon Ritter on JDK 27: compact object headers, G1 everywhere by default, post-quantum TLS, monthly security updates, and Valhalla's first â¦</p><div class=post-card-categories><a href=/today/category/java/>Java</a><a href=/today/category/java-core/>Java Core</a></div></article><article class=post-card><a href=/today/come-for-java-get-a-whole-lot-more/ class=post-card-image tabindex=-1 aria-hidden=true><span class=thumb-ph style=--ph-hue:267><span class=thumb-ph__label>Conference</span></span> 70<img src=/today/come-for-java-get-a-whole-lot-more/csm_gwcc_c_54c84c537b.webp alt loading=lazy decoding=async onerror=this.remove()></a><div class=post-card-meta><span class="byline-group byline-group--avatars"><a class=byline href=/today/author/r-fichtner/><img class=byline-avatar src=/today/author/r-fichtner/r-fichtner.jpg alt loading=lazy decoding=async width=60 height=60>Richard Fichtner</a></span> 71<time datetime=2026-09-11>Sep 11, 2026</time> 72<span class=views>170 views</span></div><h3 class=post-card-title><a href=/today/come-for-java-get-a-whole-lot-more/>Come for Java. Get a Whole Lot More.</a></h3><p class=post-card-excerpt>JCON USA returns inside IBM TechXchange 2026 with two rooms of deep Java content, a dedicated community home, and direct access to one of â¦</p><div class=post-card-categories><a href=/today/category/conference/>Conference</a><a href=/today/category/events/>Events</a></div></article></div><p class=section-more><a class="btn btn--ghost" href=/today/>View all articles</a> 73<a class=feed-link href=/index.xml rel="alternate noopener" type=application/rss+xml target=_blank><svg class="feed-link__icon" viewBox="0 0 24 24" width="16" height="16" fill="currentColor" aria-hidden="true" focusable="false"><circle cx="6.18" cy="17.82" r="2.18"/><path d="M4 4.44v2.83c7.03.0 12.73 5.7 12.73 12.73h2.83c0-8.59-6.97-15.56-15.56-15.56z"/><path d="M4 10.1v2.83c3.9.0 7.07 3.17 7.07 7.07h2.83c0-5.47-4.43-9.9-9.9-9.9z"/></svg> 74<span>RSS feed</span></a></p></div><aside class=sidebar data-pagefind-ignore><section class="widget widget-sponsors"><h2>Thanks to our sponsors</h2><div class=sponsor-tiers><div class="sponsor-tier sponsor-tier--gold"><p class=sponsor-tier__label>Gold</p><div class=sponsor-tier__row><a class="sponsor-side sponsor-side--gold" href=/sponsor/azul/ title=Azul><div class="sponsor-logo sponsor-logo--side" style=background-color:#fff><img src=/sponsor/azul/logo.svg alt=Azul loading=lazy decoding=async></div></a><a class="sponsor-side sponsor-side--gold" href=/sponsor/coderabbit/ title=CodeRabbit><div class="sponsor-logo sponsor-logo--side" style=background-color:#fff><img src=/sponsor/coderabbit/logo.png alt=CodeRabbit loading=lazy decoding=async></div></a><a class="sponsor-side sponsor-side--gold" href=/sponsor/google/ title=Google><div class="sponsor-logo sponsor-logo--side" style=background-color:#fff><span class=sponsor-logo__fallback>G</span></div></a><a class="sponsor-side sponsor-side--gold" href=/sponsor/herodevs/ title=HeroDevs><div class="sponsor-logo sponsor-logo--side" style=background-color:#fff><img src=/sponsor/herodevs/herodevs.svg alt=HeroDevs loading=lazy decoding=async></div></a><a class="sponsor-side sponsor-side--gold" href=/sponsor/redis/ title=Redis><div class="sponsor-logo sponsor-logo--side" style=background-color:#fff><img src=/sponsor/redis/logo.svg alt=Redis loading=lazy decoding=async></div></a></div></div><div class="sponsor-tier sponsor-tier--silver"><p class=sponsor-tier__label>Silver</p><div class=sponsor-tier__row><a class="sponsor-side sponsor-side--silver" href=/sponsor/reo-dev/ title=Reo><div class="sponsor-logo sponsor-logo--side" style=background-color:#000><img src=/sponsor/reo-dev/logo.png alt=Reo loading=lazy decoding=async></div></a><a class="sponsor-side sponsor-side--silver" href=/sponsor/zencoder/ title=Zencoder><div class="sponsor-logo sponsor-logo--side" style=background-color:#fff><img src=/sponsor/zencoder/logo.png alt=Zencoder loading=lazy decoding=async></div></a></div></div><div class="sponsor-tier sponsor-tier--community-partner"><p class=sponsor-tier__label>Community Partner</p><div class=sponsor-tier__row><a class="sponsor-side sponsor-side--community-partner" href=/sponsor/apidia/ title=APIdia><div class="sponsor-logo sponsor-logo--side" style=background-color:#fff><img src=/sponsor/apidia/logo.svg alt=APIdia loading=lazy decoding=async></div></a></div></div></div><a class=view-all href=/our-sponsors/>View all sponsors</a></section><section class="widget widget-coming-soon"><h2>Coming soon</h2><ul class=coming-soon-side><li class=coming-soon-side__item><p class=coming-soon-side__title>BoxLang AI 3.4.0: Gateways, Human-in-the-Loop, and a Full Security Stack</p><p class=coming-soon-side__meta><time datetime=2026-09-25>25 Sep 2026</time> 75<span class=coming-soon-side__by>by 76<span class="byline-group byline-group--avatars"><a class=byline href=/today/author/luis-majano/>
76<img class=byline-avatar src=/today/author/luis-majano/luis-majano.png alt loading=lazy decoding=async width=60 height=60>Luis Majano</a></span></span></p></li><li class=coming-soon-side__item><p class=coming-soon-side__title>VoIP, VPN, and the Build System Behind Them</p><p class=coming-soon-side__meta><time datetime=2026-09-25>25 Sep 2026</time> 77<span class=coming-soon-side__by>by 78<span class="byline-group byline-group--avatars"><a class=byline href=/today/author/shai-almog/><img class=byline-avatar src=/today/author/shai-almog/shai-almog.png alt loading=lazy decoding=async width=60 height=60>Shai Almog</a></span></span></p></li><li class=coming-soon-side__item><p class=coming-soon-side__title>How much will post-quantum migration cost your Java codebase?</p><p class=coming-soon-side__meta><time datetime=2026-09-28>28 Sep 2026</time> 79<span class=coming-soon-side__by>by 80<span class="byline-group byline-group--avatars"><a class=byline href=/today/author/arpan-sharma/><img class=byline-avatar src=/today/author/arpan-sharma/avatar.jpg alt loading=lazy decoding=async width=60 height=60>Arpan Sharma</a></span></span></p></li><li class=coming-soon-side__item><p class=coming-soon-side__title>Testing Kafka Consumer Recovery Contracts With Testcontainers and JUnit</p><p class=coming-soon-side__meta><time datetime=2026-09-28>28 Sep 2026</time> 81<span class=coming-soon-side__by>by 82<span class="byline-group byline-group--avatars"><a class=byline href=/today/author/ishan-shah/><img class=byline-avatar src=/today/author/ishan-shah/avatar.jpg alt loading=lazy decoding=async width=60 height=60>Ishan Shah</a></span></span></p></li><li class=coming-soon-side__item><p class=coming-soon-side__title>The Java 21 Doomsday Clock Countdown</p><p class=coming-soon-side__meta><time datetime=2026-09-29>29 Sep 2026</time> 83<span class=coming-soon-side__by>by 84<span class="byline-group byline-group--avatars"><a class=byline href=/today/author/dana-crane/><img class=byline-avatar src=/today/author/dana-crane/dana-crane.jpg alt loading=lazy decoding=async width=60 height=60>Dana Crane</a></span></span></p></li><li class=coming-soon-side__item><p class=coming-soon-side__title>My love-hate relationship with Java formatters</p><p class=coming-soon-side__meta><time datetime=2026-09-30>30 Sep 2026</time> 85<span class=coming-soon-side__by>by 86<span class="byline-group byline-group--avatars"><a class=byline href=/today/author/abashev/><img class=byline-avatar src=/today/author/abashev/avatar.jpg alt loading=lazy decoding=async width=60 height=60>Alex Abashev</a></span></span></p></li><li class=coming-soon-side__item><p class=coming-soon-side__title>Lies, Damn Lies and Benchmarks</p><p class=coming-soon-side__meta><time datetime=2026-09-30>30 Sep 2026</time> 87<span class=coming-soon-side__by>by 88<span class="byline-group byline-group--avatars"><a class=byline href=/today/author/shai-almog/><img class=byline-avatar src=/today/author/shai-almog/shai-almog.png alt loading=lazy decoding=async width=60 height=60>Shai Almog</a></span></span></p></li></ul></section><section class="widget widget-categories"><h2>Categories</h2><ul><li><a href=/today/category/java/>Java <span class=count>536</span></a></li><li><a href=/today/category/java-core/>Java Core <span class=count>311</span></a></li><li><a href=/today/category/tutorials/>Tutorials <span class=count>309</span></a></li><li><a href=/today/category/performance/>Performance <span class=count>235</span></a></li><li><a href=/today/category/devops/>DevOps <span class=count>208</span></a></li><li><a href=/today/category/developer-tools/>Developer Tools <span class=count>205</span></a></li><li><a href=/today/category/databases/>Databases <span class=count>193</span></a></li><li><a href=/today/category/tools/>Tools <span class=count>175</span></a></li><li><a href=/today/category/javafx/>JavaFX <span class=count>173</span></a></li><li><a href=/today/category/security/>Security <span class=count>157</span></a></li><li><a href=/today/category/microservices/>Microservices <span class=count>148</span></a></li><li><a href=/today/category/spring/>Spring <span class=count>144</span></a></li></ul><a class=view-all href=/today/category/>All categories</a></section><section class="widget widget-authors"><h2>Authors</h2><ul><li><a href=/today/author/jamie-coleman/>Jamie Coleman</a></li><li><a href=/today/author/don-raab/>Don Raab</a></li><li><a href=/today/author/jens-knipper/>Jens Knipper</a></li><li><a href=/today/author/krasimir-topchiyski/>Krasimir Topchiyski</a></li><li><a href=/today/author/alexander-reelsen/>Alexander Reelsen</a></li></ul><a class=view-all href=/today/author/>View all authors</a></section><section class="widget widget-jugs"><h2>Java User Groups</h2><ul><li><a href=https://wm-jug.org/>WM-JUG</a></li><li><a href=https://www.meetup.com/orlando-jug-java-user-group/>Orlando JUG (Java User Group)</a></li><li><a href=https://www.meetup.com/ottawa-java-user-group/>Ottawa Java User Group</a></li><li><a href=http://jug-kl.de/>Java User Group Kaiserslautern</a></li><li><a href=http://jug-ka.de/>Java User Group Karlsruhe</a></li></ul><a class=view-all href=/jugs/>All Java User Groups</a></section><section class="widget widget-featured-authors"><h2>Featured authors</h2><div class=featured-side-list><div class=featured-side><a class=featured-side__head href=/today/author/marit-van-dijk/><img src=/today/author/marit-van-dijk/marit-van-dijk.png alt loading=lazy decoding=async> 89<strong>Marit van Dijk</strong> 90</a><a class=featured-side__latest href=/today/youre-invited-to-intellij-idea-conf-2026/><span class=featured-side__label>Latest article</span> 91Youâre invited to IntelliJ IDEA Conf 2026!</a><div class=featured-side__social><ul class=author-social><li><a href=https://bsky.app/profile/maritvandijk.bsky.social rel="me noopener" target=_blank>Bluesky</a></li><li><a href=https://mastodon.social/@maritvandijk rel="me noopener" target=_blank>Mastodon</a></li><li><a href=https://www.linkedin.com/in/maritvandijk/ rel=noopener target=_blank>LinkedIn</a></li><li><a href=https://github.com/mlvandijk rel=noopener target=_blank>GitHub</a></li><li><a href=https://www.youtube.com/@maritvandijk rel=noopener target=_blank>YouTube</a></li><li><a href=https://x.com/MaritvanDijk77 rel=noopener target=_blank>Website</a></li><li><a class=feed-link href=/today/author/marit-van-dijk/index.xml rel="alternate noopener" type=application/rss+xml target=_blank>
91<svg class="feed-link__icon" viewBox="0 0 24 24" width="16" height="16" fill="currentColor" aria-hidden="true" focusable="false"><circle cx="6.18" cy="17.82" r="2.18"/><path d="M4 4.44v2.83c7.03.0 12.73 5.7 12.73 12.73h2.83c0-8.59-6.97-15.56-15.56-15.56z"/><path d="M4 10.1v2.83c3.9.0 7.07 3.17 7.07 7.07h2.83c0-5.47-4.43-9.9-9.9-9.9z"/></svg> 92<span>RSS feed</span></a></li></ul></div></div><div class=featured-side><a class=featured-side__head href=/today/author/graeme-robinson/><img src=/today/author/graeme-robinson/graeme-robinson.jpg alt loading=lazy decoding=async> 93<strong>Graeme Robinson</strong> 94</a><a class=featured-side__latest href=/today/aggregation-optimization-in-mongodb-sorting-with-indexes-part-5/><span class=featured-side__label>Latest article</span> 95Aggregation Optimization in MongoDB: Sorting With Indexes (Part 5)</a><div class=featured-side__social><ul class=author-social><li><a href=https://www.linkedin.com/in/graemecrobinson/ rel=noopener target=_blank>LinkedIn</a></li><li><a class=feed-link href=/today/author/graeme-robinson/index.xml rel="alternate noopener" type=application/rss+xml target=_blank><svg class="feed-link__icon" viewBox="0 0 24 24" width="16" height="16" fill="currentColor" aria-hidden="true" focusable="false"><circle cx="6.18" cy="17.82" r="2.18"/><path d="M4 4.44v2.83c7.03.0 12.73 5.7 12.73 12.73h2.83c0-8.59-6.97-15.56-15.56-15.56z"/><path d="M4 10.1v2.83c3.9.0 7.07 3.17 7.07 7.07h2.83c0-5.47-4.43-9.9-9.9-9.9z"/></svg> 96<span>RSS feed</span></a></li></ul></div></div></div><a class=view-all href=/today/author/>View all authors</a></section></aside></div><section class="band band--sunken"><div class=shell><div class=section-head><div><h2>Podcasts</h2><p>Catch up on the most recent episodes and stay updated with the latest OpenJDK innovations.</p></div><a class=more href=/today/category/podcast/>More podcasts →</a></div><div class=post-grid><article class=post-card><a href=/today/foojay-podcast-101/ class=post-card-image tabindex=-1 aria-hidden=true><span class=thumb-ph style=--ph-hue:141><span class=thumb-ph__label>Java</span></span> 97<img src=/today/foojay-podcast-101/episode-101-java-27.jpg alt loading=lazy decoding=async onerror=this.remove()></a><div class=post-card-meta><span class="byline-group byline-group--avatars"><span class=byline-faces><a class=byline-face href=/today/author/frankdelporte/ data-name="Frank Delporte"><img class=byline-avatar src=/today/author/frankdelporte/frankdelporte.jpg alt="Frank Delporte" loading=lazy decoding=async width=60 height=60></a><a class=byline-face href=/today/author/simonritter/ data-name="Simon Ritter"><img class=byline-avatar src=/today/author/simonritter/simonritter.jpg alt="Simon Ritter" loading=lazy decoding=async width=60 height=60></a></span><span class="byline byline--count" data-name="Frank Delporte, Simon Ritter" aria-hidden=true>2 authors</span></span> 98<time datetime=2026-09-14>Sep 14, 2026</time> 99<span class=views>216 views</span></div><h3 class=post-card-title><a href=/today/foojay-podcast-101/>Foojay Podcast #101: Java 27 in Practice: Smaller Heaps, Smarter Defaults, and Valhalla on the Horizon</a></h3><p class=post-card-excerpt>Simon Ritter on JDK 27: compact object headers, G1 everywhere by default, post-quantum TLS, monthly security updates, and Valhalla's first â¦</p><div class=post-card-categories><a href=/today/category/java/>Java</a><a href=/today/category/java-core/>Java Core</a></div></article><article class=post-card><a href=/today/foojay-podcast-100/ class=post-card-image tabindex=-1 aria-hidden=true><span class=thumb-ph style=--ph-hue:177><span class=thumb-ph__label>Foojay</span></span> 100<img src=/today/foojay-podcast-100/episode-100-podcast-of-podcasts-1024x576.jpg alt loading=lazy decoding=async onerror=this.remove()></a><div class=post-card-meta><span class="byline-group byline-group--avatars"><span class=byline-faces><a class=byline-face href=/today/author/frankdelporte/ data-name="Frank Delporte"><img class=byline-avatar src=/today/author/frankdelporte/frankdelporte.jpg alt="Frank Delporte" loading=lazy decoding=async width=60 height=60></a><a class=byline-face href=/today/author/jennifer-reif/ data-name="Jennifer Reif">
100<img class=byline-avatar src=/today/author/jennifer-reif/jennifer-reif.jpg alt="Jennifer Reif" loading=lazy decoding=async width=60 height=60></a><a class=byline-face href=/today/author/kadi-grigg/ data-name="Kadi McKean"><img class=byline-avatar src=/today/author/kadi-grigg/kadi-grigg.jpg alt="Kadi McKean" loading=lazy decoding=async width=60 height=60></a><a class=byline-face href=/today/author/oumaima-zerouali/ data-name="Oumaima Zerouali"><img class=byline-avatar src=/today/author/oumaima-zerouali/oumaima-zerouali.jpg alt="Oumaima Zerouali" loading=lazy decoding=async width=60 height=60></a></span><span class="byline byline--count" data-name="Frank Delporte, Jennifer Reif, Kadi McKean, Oumaima Zerouali, Steve Poole" aria-hidden=true>5 authors</span></span> 101<time datetime=2026-07-13>Jul 13, 2026</time> 102<span class=views>600 views</span></div><h3 class=post-card-title><a href=/today/foojay-podcast-100/>Foojay Podcast #100: Java Podcasters on Why They Started, What Broke, and What They Learned</a></h3><p class=post-card-excerpt>Foojay Podcast hits episode 100. No plan, no roadmap. It just happened. To mark the occasion, Frank turned the microphone around and invited â¦</p><div class=post-card-categories><a href=/today/category/foojay/>Foojay</a><a href=/today/category/java/>Java</a></div></article><article class=post-card><a href=/today/quarkus-unpacked-insights-from-the-foojay-podcast/ class=post-card-image tabindex=-1 aria-hidden=true><span class=thumb-ph style=--ph-hue:54><span class=thumb-ph__label>Cloud</span></span> 103<img src=/today/quarkus-unpacked-insights-from-the-foojay-podcast/3-Quarkus-Unpacked-2-2.jpeg alt loading=lazy decoding=async onerror=this.remove()></a><div class=post-card-meta><span class="byline-group byline-group--avatars"><a class=byline href=/today/author/michal-maler/><img class=byline-avatar src=/today/author/michal-maler/michal-maler.jpg alt loading=lazy decoding=async width=60 height=60>Michal MaléÅ</a></span> 104<time datetime=2026-06-23>Jun 23, 2026</time> 105<span class=views>626 views</span></div><h3 class=post-card-title><a href=/today/quarkus-unpacked-insights-from-the-foojay-podcast/>Quarkus Unpacked: Insights from the Foojay Podcast</a></h3><p class=post-card-excerpt>I recently had the pleasure of joining the Foojay podcast to talk about Quarkus in depth. The conversation covered a lot of ground, from â¦</p><div class=post-card-categories><a href=/today/category/cloud/>Cloud</a><a href=/today/category/developer-tools/>Developer Tools</a></div></article><article class=post-card><a href=/today/foojay-podcast-99/ class=post-card-image tabindex=-1 aria-hidden=true><span class=thumb-ph style=--ph-hue:135><span class=thumb-ph__label>AI</span></span> 106<img src=/today/foojay-podcast-99/episode-99-tiberius.jpg alt loading=lazy decoding=async onerror=this.remove()></a><div class=post-card-meta><span class="byline-group byline-group--avatars"><span class=byline-faces><a class=byline-face href=/today/author/frankdelporte/ data-name="Frank Delporte"><img class=byline-avatar src=/today/author/frankdelporte/frankdelporte.jpg alt="Frank Delporte" loading=lazy decoding=async width=60 height=60></a><a class=byline-face href=/today/author/iryna-dohndorf/ data-name="Iryna Dohndorf"><img class=byline-avatar src=/today/author/iryna-dohndorf/iryna-dohndorf.jpg alt="Iryna Dohndorf" loading=lazy decoding=async width=60 height=60></a></span><span class="byline byline--count" data-name="Frank Delporte, Iryna Dohndorf" aria-hidden=true>2 authors</span></span> 107<time datetime=2026-06-22>Jun 22, 2026</time> 108<span class=views>676 views</span></div><h3 class=post-card-title><a href=/today/foojay-podcast-99/>Foojay Podcast #99: Testing the Untestable: LLM Security for Java Developers with Tiberius</a></h3><p class=post-card-excerpt>Your Java AI app is live. But have you tested whether it can be jailbroken? Iryna Dohndorf introduces Tiberius, an open-source security â¦</p><div class=post-card-categories><a href=/today/category/ai/>AI</a><a href=/today/category/podcast/>Podcast</a></div></article></div></div></section><section class=band><div class=shell><div class=section-head><div><h2>Happening in the next two weeks</h2><p>Meetups from Java User Groups worldwide, plus the conferences and workshops on the calendar.</p></div><a class=more href=/calendar/>Full calendar →</a></div><ul class=event-strip><li class=event-strip__item style="--cal-dot:hsl(216 62% 46%)"><span class=event-strip__date>24 Sep</span> 109<a class=event-strip__title href=https://www.meetup.com/londonjavacommunity/events/316194795/ target=_blank rel=noopener>From Search to AI: How Retrieval Evolved</a><p class=event-strip__meta><span class=event-strip__group>LJC - London Java Community</span> 110<span class=event-strip__where>Online</span> 111<span class=event-strip__time>11:00</span></p></li><li class=event-strip__item style="--cal-dot:hsl(56 62% 46%)"><span class=event-strip__date>24 Sep</span> 112<a class=event-strip__title href=https://www.meetup.com/warszawa-jug/events/316675567/ target=_blank rel=noopener>
112Confitura 2026 | Last minute ticket!</a><p class=event-strip__meta><span class=event-strip__group>Warszawa Java User Group (Warszawa JUG)</span> 113<span class=event-strip__where>Online</span> 114<span class=event-strip__time>14:00</span></p></li><li class=event-strip__item style="--cal-dot:hsl(248 62% 46%)"><span class=event-strip__date>24 Sep</span> 115<a class=event-strip__title href=https://www.meetup.com/arnhemjug/events/316453615/ target=_blank rel=noopener>ArnhemJUG - September meetup</a><p class=event-strip__meta><span class=event-strip__group>ArnhemJUG</span> 116<span class=event-strip__where>OpenValue Arnhem, Arnhem</span> 117<span class=event-strip__time>17:00</span></p></li><li class=event-strip__item style="--cal-dot:hsl(327 62% 46%)"><span class=event-strip__date>24 Sep</span> 118<a class=event-strip__title href=https://www.meetup.com/amsterdam-java-user-group/events/316510873/ target=_blank rel=noopener>Amsterdam JUG Meetup at Picnic</a><p class=event-strip__meta><span class=event-strip__group>Amsterdam Java User Group</span> 119<span class=event-strip__where>Picnic HQ, Amsterdam</span> 120<span class=event-strip__time>18:00</span></p></li><li class=event-strip__item style="--cal-dot:hsl(171 62% 46%)"><span class=event-strip__date>24 Sep</span> 121<a class=event-strip__title href=https://www.meetup.com/belgian-java-user-group/events/316368818/ target=_blank rel=noopener>Architecture for the Agentic Era and Make Cybersecurity Fun</a><p class=event-strip__meta><span class=event-strip__group>Belgian Java User Group</span> 122<span class=event-strip__where>we+, Hasselt</span> 123<span class=event-strip__time>18:00</span></p></li><li class=event-strip__item style="--cal-dot:hsl(143 62% 46%)"><span class=event-strip__date>24 Sep</span> 124<a class=event-strip__title href=https://www.meetup.com/jug-hamburg/events/316419369/ target=_blank rel=noopener>Renovate â Dein Freund und Helfer für Dependency Updates</a><p class=event-strip__meta><span class=event-strip__group>Java User Group Hamburg</span> 125<span class=event-strip__where>adesso SE, Hamburg</span> 126<span class=event-strip__time>19:00</span></p></li><li class=event-strip__item style="--cal-dot:hsl(127 62% 46%)"><span class=event-strip__date>24 Sep</span> 127<span class=event-strip__title>Vom Monolithen zum Modulithen: Spring Modulith in der Praxis (Nils Hartmann)</span><p class=event-strip__meta><span class=event-strip__group>Java User Group Ostfalen</span> 128<span class=event-strip__where>Cloudogu GmbH, Braunschweig</span> 129<span class=event-strip__time>19:00</span></p></li><li class=event-strip__item style="--cal-dot:hsl(28 62% 46%)"><span class=event-strip__date>24 Sep</span> 130<a class=event-strip__title href=https://www.meetup.com/tampa-jug/events/316348039/ target=_blank rel=noopener>Known and Unknowns: Testing AI Generated Code</a><p class=event-strip__meta><span class=event-strip__group>Tampa Java User Group</span> 131<span class=event-strip__where>Hillsborough Community College, Tampa</span> 132<span class=event-strip__time>17:45</span></p></li><li class=event-strip__item style="--cal-dot:hsl(92 62% 46%)"><span class=event-strip__date>24 Sep</span> 133<a class=event-strip__title href=https://www.meetup.com/toronto-java-users-group/events/316529380/ target=_blank rel=noopener>Choose Your Own AI Adventure: Java, agents, and rabbit holes</a><p class=event-strip__meta><span class=event-strip__group>Toronto Java Users Group</span> 134<span class=event-strip__where>Free Times Cafe, Toronto</span> 135<span class=event-strip__time>18:30</span></p></li><li class=event-strip__item style="--cal-dot:hsl(166 62% 46%)"><span class=event-strip__date>25 Sep</span> 136<a class=event-strip__title href=https://www.meetup.com/java-user-group-hannover/events/316433370/ target=_blank rel=noopener>Java Stammtisch</a><p class=event-strip__meta><span class=event-strip__group>Java User Group Hannover</span> 137<span class=event-strip__where>Pizza Unica, Hannover</span> 138<span class=event-strip__time>19:00</span></p></li><li class=event-strip__item style="--cal-dot:hsl(147 62% 46%)"><span class=event-strip__date>28 Sep</span> 139<a class=event-strip__title href=https://explyt.ai/en/webinar-ai-tools.html target=_blank rel=noopener>Explyt Webinar: Working with AI Tools at the User Level 2026</a><p class=event-strip__meta><span class="event-strip__group event-strip__group--type">Webinar</span> 140<span class=event-strip__where>Online</span></p></li><li class=event-strip__item style="--cal-dot:hsl(221 62% 46%)"><span class=event-strip__date>29 Sep</span> 141<a class=event-strip__title href=https://www.meetup.com/java-user-group-bielefeld/events/316594278/ target=_blank rel=noopener>dev connect OWL 2026</a><p class=event-strip__meta><span class=event-strip__group>Java User Group Bielefeld</span> 142<span class=event-strip__where>Wissenswerkstadt Bielefeld, Bielefeld</span> 143<span class=event-strip__time>14:30</span></p></li><li class=event-strip__item style="--cal-dot:hsl(31 62% 46%)"><span class=event-strip__date>29 Sep</span> 144<a class=event-strip__title href=https://www.meetup.com/brabant-jug/events/316258541/ target=_blank rel=noopener>BrabantJUG @ TOPDesk</a><p class=event-strip__meta><span class=event-strip__group>BrabantJUG</span> 145<span class=event-strip__where>TOPdesk Nederland BV, Tilburg</span> 146<span class=event-strip__time>17:00</span></p></li><li class=event-strip__item style="--cal-dot:hsl(327 62% 46%)"><span class=event-strip__date>30 Sep</span> 147<a class=event-strip__title href=https://www.meetup.com/amsterdam-java-user-group/events/316455984/ target=_blank rel=noopener>Amsterdam JUG OTel Workshop at Dash0</a><p class=event-strip__meta><span class=event-strip__group>Amsterdam Java User Group</span> 148<span class=event-strip__where>Nieuwezijds Voorburgwal 162, Amsterdam</span> 149<span class=event-strip__time>18:00</span></p></li><li class=event-strip__item style="--cal-dot:hsl(284 62% 46%)"><span class=event-strip__date>30 Sep</span> 150<span class=event-strip__title>Maven/Open Source (Sandra Parsick)</span>
150<p class=event-strip__meta><span class=event-strip__group>Java User Group Paderborn</span> 151<span class=event-strip__where>adesso SE, Deutschland</span> 152<span class=event-strip__time>18:00</span></p></li><li class=event-strip__item style="--cal-dot:hsl(352 62% 46%)"><span class=event-strip__date>30 Sep</span> 153<a class=event-strip__title href=https://www.meetup.com/orlando-jug-java-user-group/events/316456843/ target=_blank rel=noopener>Embabel, an Agentic AI Framework</a><p class=event-strip__meta><span class=event-strip__group>Orlando JUG (Java User Group)</span> 154<span class=event-strip__where>Dr. Phillips Academic Commons (UCF Downtown), Orlando</span> 155<span class=event-strip__time>18:30</span></p></li><li class=event-strip__item style="--cal-dot:hsl(169 62% 46%)"><span class=event-strip__date>1 Oct</span> 156<a class=event-strip__title href=https://www.meetup.com/jug-noord/events/315496239/ target=_blank rel=noopener>October 2026: Snake in 10 Lines and the Identity of AI Agents</a><p class=event-strip__meta><span class=event-strip__group>JUG Noord</span> 157<span class=event-strip__where>Reviusstraat 2, Leeuwarden</span> 158<span class=event-strip__time>17:00</span></p></li><li class=event-strip__item style="--cal-dot:hsl(315 62% 46%)"><span class=event-strip__date>1 Oct</span> 159<a class=event-strip__title href=https://www.jug-da.de/2026/10/JCP-Meeting/ target=_blank rel=noopener>JUG DA: Double Feature: Value Objects and Project Valhalla + Java for AI (Nicolai Parlog, Zoran Sevarac)</a><p class=event-strip__meta><span class=event-strip__group>Java User Group Darmstadt</span> 160<span class=event-strip__where>Room S3, Walldorf</span> 161<span class=event-strip__time>18:30</span></p></li><li class=event-strip__item style="--cal-dot:hsl(220 62% 46%)"><span class=event-strip__date>1 Oct</span> 162<a class=event-strip__title href=https://www.majug.de/2026/10/01/valueobjects-valhalla-java-for-ai/ target=_blank rel=noopener>Value Objects and Project Valhalla + Java for AI</a><p class=event-strip__meta><span class=event-strip__group>Java User Group Mannheim</span> 163<span class=event-strip__where>Room S3, Walldorf</span> 164<span class=event-strip__time>19:00</span></p></li><li class=event-strip__item style="--cal-dot:hsl(216 62% 46%)"><span class=event-strip__date>1 Oct</span> 165<a class=event-strip__title href=https://www.meetup.com/londonjavacommunity/events/315903371/ target=_blank rel=noopener>LJC Meetup at Engine by Starling</a><p class=event-strip__meta><span class=event-strip__group>LJC - London Java Community</span> 166<span class=event-strip__where>Engine by Starling, London</span> 167<span class=event-strip__time>18:00</span></p></li><li class=event-strip__item style="--cal-dot:hsl(358 62% 46%)"><span class=event-strip__date>5â9 Oct</span> 168<a class=event-strip__title href=https://devoxx.be/ target=_blank rel=noopener>Devoxx Belgium 2026</a><p class=event-strip__meta><span class="event-strip__group event-strip__group--type">Conference</span> 169<span class=event-strip__where>Kinepolis Antwerpen, Antwerp</span></p></li><li class=event-strip__item style="--cal-dot:hsl(327 62% 46%)"><span class=event-strip__date>5 Oct</span> 170<a class=event-strip__title href=https://www.meetup.com/amsterdam-java-user-group/events/316510908/ target=_blank rel=noopener>Amsterdam JUG Meetup at Mollie</a><p class=event-strip__meta><span class=event-strip__group>Amsterdam Java User Group</span> 171<span class=event-strip__where>Mollie, Amsterdam</span> 172<span class=event-strip__time>18:00</span></p></li><li class=event-strip__item style="--cal-dot:hsl(293 62% 46%)"><span class=event-strip__date>5 Oct</span> 173<span class=event-strip__title>A Java 8 lambda and JobRunr is all you need for distributed (batch) processing (Ronald Dehuysser)</span><p class=event-strip__meta><span class=event-strip__group>Java User Group Frankfurt (Main)</span> 174<span class=event-strip__where>Germany</span> 175<span class=event-strip__time>18:30</span></p></li><li class=event-strip__item style="--cal-dot:hsl(150 62% 46%)"><span class=event-strip__date>5 Oct</span> 176<a class=event-strip__title href=https://www.meetup.com/java-user-group-munchen-jugm/events/316549324/ target=_blank rel=noopener>Modernizing Java EE Monoliths: A Roadmap to Scalable Microservices</a><p class=event-strip__meta><span class=event-strip__group>Java User Group München (JUGM)</span> 177<span class=event-strip__where>Eden Hotel Wolff, München</span> 178<span class=event-strip__time>19:00</span></p></li><li class=event-strip__item style="--cal-dot:hsl(216 62% 46%)"><span class=event-strip__date>5 Oct</span> 179<a class=event-strip__title href=https://www.meetup.com/londonjavacommunity/events/316499024/ target=_blank rel=noopener>LJC Roundtable: The JCP, Java Community & The Future of Java</a><p class=event-strip__meta><span class=event-strip__group>LJC - London Java Community</span> 180<span class=event-strip__where>The Marquis Cornwallis, London</span> 181<span class=event-strip__time>18:00</span></p></li>
181<li class=event-strip__item style="--cal-dot:hsl(92 62% 46%)"><span class=event-strip__date>5 Oct</span> 182<a class=event-strip__title href=https://www.meetup.com/toronto-java-users-group/events/316595726/ target=_blank rel=noopener>Building Intelligent Java Apps: Agent Patterns, MCP, and the Future of AI Native</a><p class=event-strip__meta><span class=event-strip__group>Toronto Java Users Group</span> 183<span class=event-strip__where>16 York St, Toronto</span> 184<span class=event-strip__time>18:30</span></p></li><li class=event-strip__item style="--cal-dot:hsl(166 62% 46%)"><span class=event-strip__date>6 Oct</span> 185<a class=event-strip__title href=https://www.meetup.com/jug-bb/events/315816842/ target=_blank rel=noopener>Monatlicher Stammtisch der JUG Berlin-Brandenburg</a><p class=event-strip__meta><span class=event-strip__group>Java Usergroup Berlin-Brandenburg</span> 186<span class=event-strip__where>Da Vinci, Berlin</span> 187<span class=event-strip__time>18:30</span></p></li><li class=event-strip__item style="--cal-dot:hsl(130 62% 46%)"><span class=event-strip__date>6 Oct</span> 188<a class=event-strip__title href=https://www.meetup.com/madridjug/events/316653906/ target=_blank rel=noopener>Consultas en milisegundos sobre tu data lake (sin copiar los datos)</a><p class=event-strip__meta><span class=event-strip__group>MadridJUG</span> 189<span class=event-strip__where>Zooplus, Madrid</span> 190<span class=event-strip__time>19:00</span></p></li><li class=event-strip__item style="--cal-dot:hsl(284 62% 46%)"><span class=event-strip__date>7 Oct</span> 191<a class=event-strip__title href=https://www.meetup.com/jug-oberpfalz/events/313226991/ target=_blank rel=noopener>JUGO - TBD - save the date</a><p class=event-strip__meta><span class=event-strip__group>JUG Oberpfalz</span> 192<span class=event-strip__where>Online</span> 193<span class=event-strip__time>18:00</span></p></li><li class=event-strip__item style="--cal-dot:hsl(166 62% 46%)"><span class=event-strip__date>7 Oct</span> 194<a class=event-strip__title href=https://www.meetup.com/jug-bb/events/316325588/ target=_blank rel=noopener>A Java 8 lambda and JobRunr is all you need for distributed (batch) processing!</a><p class=event-strip__meta><span class=event-strip__group>Java Usergroup Berlin-Brandenburg</span> 195<span class=event-strip__where>codecentric AG, Berlin</span> 196<span class=event-strip__time>18:30</span></p></li><li class=event-strip__item style="--cal-dot:hsl(284 62% 46%)"><span class=event-strip__date>8 Oct</span> 197<span class=event-strip__title>JobRunr (Ronald Dehuysser)</span><p class=event-strip__meta><span class=event-strip__group>Java User Group Paderborn</span> 198<span class=event-strip__where>adesso SE, Deutschland</span> 199<span class=event-strip__time>18:00</span></p></li><li class=event-strip__item style="--cal-dot:hsl(287 62% 46%)"><span class=event-strip__date>8 Oct</span> 200<a class=event-strip__title href=https://www.meetup.com/jugstuttgart/events/315684595/ target=_blank rel=noopener>AI-Driven Development Meets Jakarta EE: Why Standards Matter More Than Ever</a><p class=event-strip__meta><span class=event-strip__group>Java User Group Stuttgart</span> 201<span class=event-strip__where>Optica Abrechnungszentrum Dr. Güldener GmbH, Stuttgart</span> 202<span class=event-strip__time>18:30</span></p></li><li class=event-strip__item style="--cal-dot:hsl(192 62% 46%)"><span class=event-strip__date>8 Oct</span> 203<a class=event-strip__title href=https://www.meetup.com/gatewayjug/events/315894186/ target=_blank rel=noopener>Agentic AI Workflows with Embabel</a><p class=event-strip__meta><span class=event-strip__group>St. Louis Java User's Group</span> 204<span class=event-strip__where>USA</span> 205<span class=event-strip__time>18:30</span></p></li></ul></div></section><section class=band><div class=shell><div class=section-head><div><h2>Getting started with Java</h2><p>Is Java your first language, or are you coming from another one? Let Friends Of OpenJDK help you get up and running.</p></div><a class=more href=/java-quick-start/>Quick Start guide →</a></div><ol class=quick-start><li class=quick-start__step><h3 class=quick-start__title><a href=/java-quick-start/install-java/>Install Java</a></h3><p class=quick-start__desc>One-time setup to get Java on your machine: check whether you already have it, then install it on Windows, macOS or Linux.</p><ul class=quick-start__links><li><a href=/java-quick-start/install-java/check-your-java-installation/>Check your Java installation</a></li><li><a href=/java-quick-start/install-java/find-another-java-version/>Find Another Java Version</a></li><li><a href=/java-quick-start/install-java/install-java-on-linux/>Install Java on Linux</a></li><li><a href=/java-quick-start/install-java/install-java-on-macos/>Install Java on MacOS</a></li><li><a href=/java-quick-start/install-java/install-java-on-windows/>Install Java on Windows</a></li></ul></li><li class=quick-start__step><h3 class=quick-start__title><a href=/java-quick-start/quick-start-tutorial/>
205Quick Start Tutorial</a></h3><p class=quick-start__desc>A high-speed introduction to Java in single source files: no project, no build tool, just java HelloWorld.java and go.</p><p class=quick-start__meta>Under 29 minutes in total</p><ol class="quick-start__links quick-start__links--cols"><li><a href=/java-quick-start/quick-start-tutorial/choosing-an-editor/>Choosing an Editor</a></li><li><a href=/java-quick-start/quick-start-tutorial/hello-world/>Hello World!</a></li><li><a href=/java-quick-start/quick-start-tutorial/using-the-arguments/>Using Arguments and String Arrays</a></li><li><a href=/java-quick-start/quick-start-tutorial/working-with-numbers/>Working with Numbers</a></li><li><a href=/java-quick-start/quick-start-tutorial/if-then-else/>If, Then, Else</a></li><li><a href=/java-quick-start/quick-start-tutorial/enum-and-switch/>Enum and Switch</a></li><li><a href=/java-quick-start/quick-start-tutorial/using-methods/>Using Methods</a></li><li><a href=/java-quick-start/quick-start-tutorial/using-objects/>Using Objects</a></li><li><a href=/java-quick-start/quick-start-tutorial/reading-a-text-file/>Reading a Text File</a></li><li><a href=/java-quick-start/quick-start-tutorial/using-streams/>Using Streams</a></li><li><a href=/java-quick-start/quick-start-tutorial/whats-next/>What's Next?</a></li></ol></li></ol><p class=quick-start__foot>Done, or want another voice? <a href=/java-quick-start/other-tutorials/>6 more free Java courses and tutorials</a>, picked by the community.</p></div></section><section class="band band--sunken"><div class=shell><div class=section-head><div><h2>Most popular post categories</h2><p>Explore the full breadth of what the community writes about.</p></div><a class=more href=/today/category/>View all categories →</a></div><div class="chip-row chip-row--lg"><a href=/today/category/java/>Java <span class=chip-count>536</span></a> 206<a href=/today/category/java-core/>Java Core <span class=chip-count>311</span></a> 207<a href=/today/category/tutorials/>Tutorials <span class=chip-count>309</span></a> 208<a href=/today/category/performance/>Performance <span class=chip-count>235</span></a> 209<a href=/today/category/devops/>DevOps <span class=chip-count>208</span></a> 210<a href=/today/category/developer-tools/>Developer Tools <span class=chip-count>205</span></a> 211<a href=/today/category/databases/>Databases <span class=chip-count>193</span></a> 212<a href=/today/category/tools/>Tools <span class=chip-count>175</span></a> 213<a href=/today/category/javafx/>JavaFX <span class=chip-count>173</span></a> 214<a href=/today/category/security/>Security <span class=chip-count>157</span></a> 215<a href=/today/category/microservices/>Microservices <span class=chip-count>148</span></a> 216<a href=/today/category/spring/>Spring <span class=chip-count>144</span></a> 217<a href=/today/category/ai/>AI <span class=chip-count>126</span></a> 218<a href=/today/category/release-notes/>Release Notes <span class=chip-count>122</span></a></div></div></section></main><footer class=site-footer id=footer tabindex=-1><div class=footer-cols><div class="footer-col footer-brand"><a class=logo href=/ aria-label="Foojay home"><img class=logo__img src=/images/foojay-logo.png alt=foojay.io></a><p>A place for Friends Of OpenJDK â free reference material, community news and daily Java insight.</p></div><div class=footer-col><h2>Java Resources</h2><ul><li><a href=/java-quick-start/>Java Quick Start</a></li><li><a href=/pedia/>Java Terms Explained</a></li><li><a href=/java-almanac/>Java Almanac</a></li><li><a href=/jvm-options/>JVM Options</a></li><li><a href=/java-champions/>Java Champions</a></li><li><a href=/sustainability-for-java-developers/>Sustainability eBook</a></li></ul></div><div class=footer-col><h2>Content Hub</h2><ul><li><a href=/today/>Friends Of OpenJDK Today</a></li><li><a href=/today/category/podcast/>Podcast</a></li><li><a href=/ai/>Foojay.io AI Portal</a></li><li><a href=/calendar/>Events Calendar</a></li><li><a href=/jugs/>Java User Groups</a></li><li><a href=/where/>Where to Find Foojay</a></li><li><a href=/today/how-to-submit-your-next-article-on-foojay-io/>Write for Foojay</a></li></ul></div><div class=footer-col><h2>About Foojay</h2><ul><li><a href=/what-is-foojay/>What is Foojay?</a></li><li><a href=/meet-the-team/>Meet the Team</a></li><li><a href=/today/author/>Authors</a></li><li><a href=/board/>Advisory Board</a></li><li><a href=/our-sponsors/>Our Sponsors</a></li></ul></div><div class=footer-col><h2>Join the community</h2><ul class=social-links><li><a href=https://bsky.app/profile/foojay.io rel=me target=_blank>Bluesky</a></li><li><a href=https://foojay.social/@foojay rel=me target=_blank>Mastodon</a></li><li><a href=https://www.linkedin.com/company/foojayio/ target=_blank>LinkedIn</a></li><li><a href=https://bit.ly/join-foojay-slack target=_blank>Slack</a></li><li><a href=https://github.com/foojayio target=_blank>GitHub</a></li><li><a href=/index.xml target=_blank>RSS</a></li></ul></div></div><div class=footer-legal><span>© 2026 foojay.io</span> 219<a href="/cdn-cgi/l/email-protection#fa929f969695ba9c9595909b83d49395"><span class="__cf_email__" data-cfemail="c6aea3aaaaa986a0a9a9aca7bfe8afa9">[email protected]</span></a> 220<a href=/search/>Search</a> 221<a href=/sitemap/>Sitemap</a> 222<a href=/terms-of-use/>Terms of Use</a> 223<a href=/privacy-policy/>Privacy Policy</a> 224<a href=/accessibility/>Accessibility</a> 225<a href=/ai-instructions/>
225AI Instructions</a></div></footer>
vendor: 108 bytes, line 225
225<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
225<script src=/js/nav.js defer></script>
225<script src=/js/lightbox.js defer></script>
225<script src=/js/toc.js defer></script>
225</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.