<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>adam bien's blog</title>    <link rel="alternate" type="application/rss+xml" title="adam bien`s RSS Feed"        href="https://adambien.blog/roller/abien/feed/entries/rss">    <link rel="alternate" type="application/atom+xml" title="adam bien`s Atom Feed"        href="https://adambien.blog/roller/abien/feed/entries/atom">    <style>        :root {            --airhacks-turquoise: #3EB0D8;            --airhacks-orange: #F07102;            --roller-grey: #444040;            --base-font-size: 1rem;            /* 16px by default */            --base-line-height: 1.5;            --rhythm: calc(var(--base-font-size) * var(--base-line-height));            --scale: 1.25;        }        body {            font-family: Georgia, "Helvetica Neue", sans-serif;            max-width: 80%;            margin: 0 auto;            color: #333;            font-size: var(--base-font-size);            line-height: var(--base-line-height);        }        h1 {            font-size: calc(var(--base-font-size) * var(--scale) * var(--scale) * var(--scale));            line-height: calc(var(--rhythm) * 2);            margin-top: var(--rhythm);            margin-bottom: var(--rhythm);            font-weight: bold;            color: var(--airhacks-orange);            text-shadow: 1px 1px 2px rgba(0, 0, 0, .5);            border-bottom: 3px solid var(--airhacks-turquoise);        }        h2 {            font-size: calc(var(--base-font-size) * var(--scale) * var(--scale));            font-weight: 700;            color: var(--roller-grey);            line-height: calc(var(--rhythm) * 1.5);            margin-top: var(--rhythm);            margin-bottom: calc(var(--rhythm) / 2);            text-wrap: balance;            text-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);        }        h2 a {            color: inherit;            text-decoration: inherit;            font-weight: inherit;            font-size: inherit;            font-family: inherit;        }        a:hover {            border-bottom: 2px solid var(--airhacks-turquoise);        }        p {            margin-bottom: var(--rhythm);        }        .announcement {            font-size: 0.8rem;            margin-bottom: 1rem;        }        a {            color: var(--airhacks-orange);            text-decoration: none;        }        ul li {            list-style: none;        }        em {            font-weight: bolder;        }        code small {            font-weight: lighter;            font-size: 0.5em;        }        a:visited {            color: #032559;        }        a:active {            color: #636363;        }        main{            max-width: 960px;        }        .post {            margin-top: 4rem;            text-wrap: pretty;        }        .content{            max-width: 600px;            line-height: 1.6rem;        }        footer {            margin-top: 1rem;            font-size: 0.8rem;            text-wrap: pretty;        }        .light {            background-color: red;            color: #FFFFFF;            padding: 0.3em;            font-weight: bold;            border-radius: 4px;            box-shadow: 1px 1px 2px rgba(0, 0, 0, .6);        }        .icon {            width: 1.5em;            height: 1.5em;            margin-right: 0.5rem;        }        /* event announcement */        a[itemprop="url"] {            font-size: 0.8rem;            display: block;        }        a[itemprop="url"]::before {            content: ">>"        }        span[itemprop="startDate"]::before {            content: " | "        }        span[itemprop="location"],        span[itemprop*="Date"],        span[itemprop="description"] {            font-size: 0.8rem;        }        li:not(.post) {            margin-bottom: 1rem;        }    </style></head><body>    <h1>adam bien's blog</h1>    <main><article class="post">    <!-- generated by: blogr 2025.02.02.01 -->    <header>        <h2>lightmetal: GPU LLM Inference From a Single Java 25 JAR <a href="./lightmetal_gpu_llm_inference_from_a_single_java_25_jar">&#128206;</a></h2>    </header>    <section class="content"> <p>GPU LLM inference on Apple Silicon, packaged as one Java 25 executable JAR, zero dependencies. <a href="https://github.com/AdamBien/lightmetal">lightmetal</a> binds a Metal-enabled <code>libllama.dylib</code> through the Foreign Function & Memory API and runs Mistral- and Gemma-architecture GGUF models locally.</p>

<p>Build it with <a href="https://github.com/AdamBien/zb">zb</a>, point it at a GGUF, prompt it:</p>

<pre>
zb build
java --enable-native-access=ALL-UNNAMED -jar zbo/lightmetal.jar \
     -model ~/models/Mistral-Medium-3.5-128B-UD-Q5_K_XL-00001-of-00003.gguf \
     -prompt "What is Java?"
</pre>

<p>Add <code>-serve</code> and the same JAR exposes an Anthropic-compatible <code>POST /v1/messages</code> and an OpenAI-compatible <code>POST /v1/chat/completions</code>. 
xisting clients (<a href="https://github.com/adambien/zsmith">zsmith</a>, <a href="https://mistral.ai/products/vibe/">vibe</a>) only need a base URL switch — the loaded GGUF wins, the <code>model</code> field is accepted and ignored.</p>

<p>Embedding into another Java app needs no compile-time dependency. <code>lightmetal.jar</code> registers a <code>BinaryOperator<String></code> via <code>META-INF/services</code>:</p>

<pre>
var generator = ServiceLoader.load(BinaryOperator.class).iterator().next();
var response  = generator.apply("/path/to/model.gguf", "What is Java?");
</pre>

<p>Just Java 25, <a href="https://github.com/ggml-org/llama.cpp">llama.cpp</a>, FFM, Metal — and a GGUF on disk.</p> </section>    <footer>        <div class="announcement">            <a href="https://airhacks.live">airhacks.live</a> workshops:            <ul>                <li><a href="https://airhacks.live">Spec-Driven Java Development at LLM Speed, 2 July 2026</a></li>                <li><a href="https://airhacks.live">LLM-Assisted Web Components: No Frameworks, No Dependencies, 16 July                        2026</a></li>                <li>                    <span class="light">NEW</span> MUC Airport <a href="https://airhacks.university">Architect-Grade Java with LLMs, 10 December 2026</a>                </li>            </ul>        </div>        <time datetime="6/9/26, 6:53 AM">🗓️ 6/9/26, 6:53 AM</time> by <span class="author"><a                href="https://about.adam-bien.com">Adam Bien</a></span> <span><a                href="https://linkedin.com/in/adam-bien"><img class="icon"                    src="http://adambien.blog/images/linkedin.png" /></a></span>        <!-- span>views: 0</span-->        </div>    </footer></article>
<article class="post">    <!-- generated by: blogr 2025.02.02.01 -->    <header>        <h2>Reflection in Java 25, Java vs. AI Careers, jfrdoc on zSmith, airails.dev Refactoring--Questions and Topics for the 147th airhacks.tv <a href="./reflection_in_java_25_java_vs_ai_careers_jfrdoc_on_zsmith">&#128206;</a></h2>    </header>    <section class="content"> Questions and topics for the <a href="https://gist.github.com/AdamBien/33ece0569d45516d95163859aaaf8e1d">2026.07/147th</a> edition of <a href="https://airhacks.tv/">airhacks.tv</a>:
<ol>
<li>In the Java 25 / JUnit 5 era, is reflection obsolete, or only for designing libraries/APIs rather than your own code? (Simon Richter)</li>
<li>Should I continue building my career in Java, or move toward AI given the current market and MNC layoffs? (Fanib)</li>
<li><a href="https://github.com/roz-labs/jfrdoc">jfrdoc</a> on <a href="https://github.com/adambien/zsmith">zSmith</a> (Rıdvan)</li>
<li><a href="https://airails.dev">airails.dev</a> refactoring (java-conventions)</li>
<li>Time machine: 100 episodes back (<a href="https://www.adam-bien.com/roller/abien/entry/database_authentication_microservices_with_jsf">47th episode</a>):
<blockquote>
            Database Authentication: SSH vs. username / password, Microservices with JSF frontend, How to modularize WARs, Dealing with denormalized databases, Java EE authentication (Active Directory), Identity preservation and audits in DB, JAX-RS authentication and principal delegation to EJB / CDI, Development in intranet environment, Reducing coupling between JavaScript components, Developers and operations -- their roles in the future, DeltaSpike project review, Impact of 3rd party libraries on build performance, Unpredictable, long running transactions, Propagating principals from JAX-RS to EJBs, Why it is a bad idea to resend a password on each request?, Dealing with security in credit card processing
</blockquote>
</li>
</ol>
<p>
Any questions left? Ask now: <a href="https://gist.github.com/AdamBien/33ece0569d45516d95163859aaaf8e1d">gist.github.com/AdamBien/33ece0569d45516d95163859aaaf8e1d</a> and get the answers at the next <a href="https://airhacks.tv">airhacks.tv</a>.
Some questions are also answered with a short video: <a href="http://youtube.com/@bienadam/shorts">60 seconds or less with Java</a>
</p>
<p>Ask questions during the show via twitter mentioning me: <a href="https://twitter.com/AdamBien" target="_blank">https://twitter.com/AdamBien</a> (@AdamBien),using the hashtag: #airhacks or built-in chat at: <a href="https://airhacks.tv">airhacks.tv</a>. You can join the Q&amp;A session live each first Monday of month, 8 P.M at <a href="https://airhacks.tv">airhacks.tv</a></p> </section>    <footer>        <div class="announcement">            <a href="https://airhacks.live">airhacks.live</a> workshops:            <ul>                <li><a href="https://airhacks.live">Spec-Driven Java Development at LLM Speed, 2 July 2026</a></li>                <li><a href="https://airhacks.live">LLM-Assisted Web Components: No Frameworks, No Dependencies, 16 July                        2026</a></li>                <li>                    <span class="light">NEW</span> MUC Airport <a href="https://airhacks.university">Architect-Grade Java with LLMs, 10 December 2026</a>                </li>            </ul>        </div>        <time datetime="6/8/26, 4:54 PM">🗓️ 6/8/26, 4:54 PM</time> by <span class="author"><a                href="https://about.adam-bien.com">Adam Bien</a></span> <span><a                href="https://linkedin.com/in/adam-bien"><img class="icon"                    src="http://adambien.blog/images/linkedin.png" /></a></span>        <!-- span>views: 0</span-->        </div>    </footer></article>
<article class="post">    <!-- generated by: blogr 2025.02.02.01 -->    <header>        <h2>JAZ, Copilot SDK, and Why LLMs Write Better Java--airhacks.fm podcast <a href="./jaz_copilot_sdk_and_why_llms_write_better_java_airhacks_f">&#128206;</a></h2>    </header>    <section class="content"> Subscribe to <a href="https://airhacks.fm">airhacks.fm podcast</a> via:
<a href="https://open.spotify.com/show/6nOTQLa2uZxeyGpMW8eppS">spotify</a>|
<a href="https://itunes.apple.com/de/podcast/airhacks-fm/id1296655154?l=en">iTunes</a>
</p>
<article itemscope itemtype="https://schema.org/PodcastEpisode">
The #400 <a href="https://airhacks.fm">airhacks.fm</a> episode with Bruno Borges (<a href="https://twitter.com/brunoborges">@brunoborges</a>) about:
<blockquote itemprop="description">
JVM tuning for containers with JAZ, 
building agentic systems with the Copilot SDK and the Microsoft Agent Framework, 
and grounding LLMs against Java specifications for hallucination-free code generation.
</blockquote>
is available for <a itemprop="url"  href="https://airhacks.fm/#episode_400">download.</a>
</article> </section>    <footer>        <div class="announcement">            <a href="https://airhacks.live">airhacks.live</a> workshops:            <ul>                <li><a href="https://airhacks.live">Spec-Driven Java Development at LLM Speed, 2 July 2026</a></li>                <li><a href="https://airhacks.live">LLM-Assisted Web Components: No Frameworks, No Dependencies, 16 July                        2026</a></li>                <li>                    <span class="light">NEW</span> MUC Airport <a href="https://airhacks.university">Architect-Grade Java with LLMs, 10 December 2026</a>                </li>            </ul>        </div>        <time datetime="6/3/26, 5:58 AM">🗓️ 6/3/26, 5:58 AM</time> by <span class="author"><a                href="https://about.adam-bien.com">Adam Bien</a></span> <span><a                href="https://linkedin.com/in/adam-bien"><img class="icon"                    src="http://adambien.blog/images/linkedin.png" /></a></span>        <!-- span>views: 0</span-->        </div>    </footer></article>
<article class="post">    <!-- generated by: blogr 2025.02.02.01 -->    <header>        <h2>Summer of 26: Events, Conferences and Workshops <a href="./summer_of_26_events_conferences_and_workshops">&#128206;</a></h2>    </header>    <section class="content"> <ol>
    <li itemscope itemtype="https://schema.org/EducationEvent">
        <span itemprop="performer" itemscope itemtype="https://schema.org/Person"><meta itemprop="name" content="Adam Bien"></span>
        <meta itemprop="eventAttendanceMode" content="https://schema.org/OfflineEventAttendanceMode">
        Devoxx Poland 2026: <span itemprop="name">Token-Efficient, Well-Crafted Java #livecoding</span>
        <div>
            <span itemprop="description">conference talk</span>
              <span itemprop="location" itemscope itemtype="https://schema.org/Place">
    <span itemprop="name">Devoxx Poland 2026</span>
    <span itemprop="address">Krakow, Poland</span>
</span>
            <span itemprop="startDate">18 June 2026</span>
        </div>
    <meta itemprop="endDate" content="18 June 2026">
    <a href="https://devoxx.pl/talk?id=15451" itemprop="url">https://devoxx.pl/talk?id=15451</a>
    </li>

<li itemscope itemtype="https://schema.org/EducationEvent">
        <span itemprop="performer" itemscope itemtype="https://schema.org/Person"><meta itemprop="name" content="Adam Bien"></span>
        <meta itemprop="eventAttendanceMode" content="https://schema.org/OfflineEventAttendanceMode">
        VibeKode Conference: <span itemprop="name">How To Write Great Code with LLMs #vibeless</span>
        <div>
            <span itemprop="description">conference talk</span>
              <span itemprop="location" itemscope itemtype="https://schema.org/Place">
    <span itemprop="name">VibeKode Conference</span>
    <span itemprop="address">Munich, Germany</span>
</span>
            <span itemprop="startDate">24 June 2026</span>
        </div>
    <meta itemprop="endDate" content="24 June 2026">
    <a href="https://vibekode.it/speaker/adam-bien/" itemprop="url">https://vibekode.it/speaker/adam-bien/</a>
    </li>

<li itemscope itemtype="https://schema.org/EducationEvent">
        <span itemprop="performer" itemscope itemtype="https://schema.org/Person"><meta itemprop="name" content="Adam Bien"></span>
        <meta itemprop="eventAttendanceMode" content="https://schema.org/OnlineEventAttendanceMode">
        <span itemprop="name">Spec-Driven Java Development at LLM Speed</span>[online event]
        <div>
            <span itemprop="description">online workshop</span>
            
            <span itemprop="startDate">2 July 2026</span>
        </div>
    <meta itemprop="endDate" content="2 July 2026">
    <a href="https://workshops.adam-bien.com" itemprop="url">https://workshops.adam-bien.com</a>
    </li>

<li itemscope itemtype="https://schema.org/EducationEvent">
        <span itemprop="performer" itemscope itemtype="https://schema.org/Person"><meta itemprop="name" content="Adam Bien"></span>
        <meta itemprop="eventAttendanceMode" content="https://schema.org/OnlineEventAttendanceMode">
        <span itemprop="name">LLM-Assisted Web Components: No Frameworks, No Dependencies. Just Web Standards</span>[online event]
        <div>
            <span itemprop="description">online workshop</span>
            
            <span itemprop="startDate">16 July 2026</span>
        </div>
    <meta itemprop="endDate" content="16 July 2026">
    <a href="https://workshops.adam-bien.com" itemprop="url">https://workshops.adam-bien.com</a>
    </li>

<li itemscope itemtype="https://schema.org/EducationEvent">
        <span itemprop="performer" itemscope itemtype="https://schema.org/Person"><meta itemprop="name" content="Adam Bien"></span>
        <meta itemprop="eventAttendanceMode" content="https://schema.org/OfflineEventAttendanceMode">
        Entwickler Summit 2026: <span itemprop="name">Fewer Tokens, Better Apps: With Standards and Java</span>
        <div>
            <span itemprop="description">conference talk</span>
              <span itemprop="location" itemscope itemtype="https://schema.org/Place">
    <span itemprop="name">Entwickler Summit 2026</span>
    <span itemprop="address">Berlin, Germany</span>
</span>
            <span itemprop="startDate">17 September 2026</span>
        </div>
    <meta itemprop="endDate" content="17 September 2026">
    <a href="https://entwickler.de/entwickler-summit/" itemprop="url">https://entwickler.de/entwickler-summit/</a>
    </li>

<li itemscope itemtype="https://schema.org/EducationEvent">
        <span itemprop="performer" itemscope itemtype="https://schema.org/Person"><meta itemprop="name" content="Adam Bien"></span>
        <meta itemprop="eventAttendanceMode" content="https://schema.org/OnlineEventAttendanceMode">
        <span itemprop="name">airhacks.tv Questions and Answers #livestream</span>[online event]
        <div>
            <span itemprop="description">live streaming show</span>
            
            <span itemprop="startDate">first monday of the month, 8pm CET</span>
        </div>
    <meta itemprop="endDate" content="first monday of the month, 8pm CET">
    <a href="https://www.meetup.com/airhacks/" itemprop="url">https://www.meetup.com/airhacks/</a>
    </li>

</ol>
<p>
    The in-person edition of airhacks is back at MUC Airport: "Architect-Grade Java with LLMs" <a href="https://airhacks.university">airhacks.university</a>
</p>
 </section>    <footer>        <div class="announcement">            <a href="https://airhacks.live">airhacks.live</a> workshops:            <ul>                <li><a href="https://airhacks.live">Spec-Driven Java Development at LLM Speed, 2 July 2026</a></li>                <li><a href="https://airhacks.live">LLM-Assisted Web Components: No Frameworks, No Dependencies, 16 July                        2026</a></li>                <li>                    <span class="light">NEW</span> MUC Airport <a href="https://airhacks.university">Architect-Grade Java with LLMs, 10 December 2026</a>                </li>            </ul>        </div>        <time datetime="5/27/26, 5:04 AM">🗓️ 5/27/26, 5:04 AM</time> by <span class="author"><a                href="https://about.adam-bien.com">Adam Bien</a></span> <span><a                href="https://linkedin.com/in/adam-bien"><img class="icon"                    src="http://adambien.blog/images/linkedin.png" /></a></span>        <!-- span>views: 0</span-->        </div>    </footer></article>
<article class="post">    <!-- generated by: blogr 2025.02.02.01 -->    <header>        <h2>GlassFish, Corretto, Apple openJDK and Why Standards Beat Hype--airhacks.fm podcast <a href="./glassfish_corretto_apple_openjdk_and_why_standards_beat_hy">&#128206;</a></h2>    </header>    <section class="content"> Subscribe to <a href="https://airhacks.fm">airhacks.fm podcast</a> via:
<a href="https://open.spotify.com/show/6nOTQLa2uZxeyGpMW8eppS">spotify</a>|
<a href="https://itunes.apple.com/de/podcast/airhacks-fm/id1296655154?l=en">iTunes</a>
</p>
<article itemscope itemtype="https://schema.org/PodcastEpisode">
The #399 <a href="https://airhacks.fm">airhacks.fm</a> episode with Arun Gupta (<a href="https://twitter.com/arungupta">@arungupta</a>) about:
<blockquote itemprop="description">
RMI/CORBA, J2EE, GlassFish, Sun Grid, Amazon Corretto, the Apple openJDK, JetBrains and how normative Java specifications enable reliable LLM code generation
</blockquote>
is available for <a itemprop="url"  href="https://airhacks.fm/#episode_399">download.</a>
</article> </section>    <footer>        <div class="announcement">            <a href="https://airhacks.live">airhacks.live</a> workshops:            <ul>                <li><a href="https://airhacks.live">Spec-Driven Java Development at LLM Speed, 2 July 2026</a></li>                <li><a href="https://airhacks.live">LLM-Assisted Web Components: No Frameworks, No Dependencies, 16 July                        2026</a></li>                <li>                    <span class="light">NEW</span> MUC Airport <a href="https://airhacks.university">Architect-Grade Java with LLMs, 10 December 2026</a>                </li>            </ul>        </div>        <time datetime="5/25/26, 5:48 PM">🗓️ 5/25/26, 5:48 PM</time> by <span class="author"><a                href="https://about.adam-bien.com">Adam Bien</a></span> <span><a                href="https://linkedin.com/in/adam-bien"><img class="icon"                    src="http://adambien.blog/images/linkedin.png" /></a></span>        <!-- span>views: 0</span-->        </div>    </footer></article>
<article class="post">    <!-- generated by: blogr 2025.02.02.01 -->    <header>        <h2>From CDI TCK to Quarkus MCP Server--airhacks.fm podcast <a href="./from_cdi_tck_to_quarkus_mcp_server_airhacks_fm_podcast">&#128206;</a></h2>    </header>    <section class="content"> <p>
Subscribe to <a href="https://airhacks.fm">airhacks.fm podcast</a> via:
<a href="https://open.spotify.com/show/6nOTQLa2uZxeyGpMW8eppS">spotify</a>|
<a href="https://itunes.apple.com/de/podcast/airhacks-fm/id1296655154?l=en">iTunes</a>
</p>
<article itemscope itemtype="https://schema.org/PodcastEpisode">
The #398 <a href="https://airhacks.fm">airhacks.fm</a> episode with Martin Kouba (<a href="https://twitter.com/martunek">@martunek</a>) about:
<blockquote itemprop="description">
From CDI TCK, specifications and Weld to ArC and the MCP server in Quarkus
</blockquote>
is available for <a itemprop="url"  href="https://airhacks.fm/#episode_398">download.</a>
</article>
 </section>    <footer>        <div class="announcement">            <a href="https://airhacks.live">airhacks.live</a> workshops:            <ul>                <li><a href="https://airhacks.live">Spec-Driven Java Development at LLM Speed, 2 July 2026</a></li>                <li><a href="https://airhacks.live">LLM-Assisted Web Components: No Frameworks, No Dependencies, 16 July                        2026</a></li>                <li>                    <span class="light">NEW</span> MUC Airport <a href="https://airhacks.university">Architect-Grade Java with LLMs, 10 December 2026</a>                </li>            </ul>        </div>        <time datetime="5/22/26, 2:44 PM">🗓️ 5/22/26, 2:44 PM</time> by <span class="author"><a                href="https://about.adam-bien.com">Adam Bien</a></span> <span><a                href="https://linkedin.com/in/adam-bien"><img class="icon"                    src="http://adambien.blog/images/linkedin.png" /></a></span>        <!-- span>views: 0</span-->        </div>    </footer></article>
<article class="post">    <!-- generated by: blogr 2025.02.02.01 -->    <header>        <h2>Finding Patterns: From Middleware to Modern AI--airhacks.fm podcast <a href="./finding_patterns_from_middleware_to_modern_ai_airhacks_fm_podcast">&#128206;</a></h2>    </header>    <section class="content"> Subscribe to <a href="https://airhacks.fm">airhacks.fm podcast</a> via:
<a href="https://open.spotify.com/show/6nOTQLa2uZxeyGpMW8eppS">spotify</a>|
<a href="https://itunes.apple.com/de/podcast/airhacks-fm/id1296655154?l=en">iTunes</a>
</p>
<article itemscope itemtype="https://schema.org/PodcastEpisode">
The #397 <a href="https://airhacks.fm">airhacks.fm</a> episode with Prof. Dr. Michael Stal <a href="https://www.linkedin.com/in/drstal/">/in/drstal</a> about:
<blockquote itemprop="description">
discovering patterns in middleware, writing the POSA book, Java adoption at Siemens, and the limits of LLMs and AGI
</blockquote>
is available for <a itemprop="url" href="https://airhacks.fm/#episode_397">download.</a>
</article> </section>    <footer>        <div class="announcement">            <a href="https://airhacks.live">airhacks.live</a> workshops:            <ul>                <li><a href="https://airhacks.live">Spec-Driven Java Development at LLM Speed, 2 July 2026</a></li>                <li><a href="https://airhacks.live">LLM-Assisted Web Components: No Frameworks, No Dependencies, 16 July                        2026</a></li>                <li>                    <span class="light">NEW</span> MUC Airport <a href="https://airhacks.university">Architect-Grade Java with LLMs, 10 December 2026</a>                </li>            </ul>        </div>        <time datetime="5/16/26, 4:20 AM">🗓️ 5/16/26, 4:20 AM</time> by <span class="author"><a                href="https://about.adam-bien.com">Adam Bien</a></span> <span><a                href="https://linkedin.com/in/adam-bien"><img class="icon"                    src="http://adambien.blog/images/linkedin.png" /></a></span>        <!-- span>views: 0</span-->        </div>    </footer></article>
<article class="post">    <!-- generated by: blogr 2025.02.02.01 -->    <header>        <h2>JAX Conference (German) Talk: Business Logic First: Escaping Java’s Bloat Addiction <a href="./jax_conference_german_talk_business_logic_first_escaping">&#128206;</a></h2>    </header>    <section class="content"> <blockquote>
Java projects are still plagued by outdated habits: excessive layers, unnecessary abstractions, more YAML/XML than code, tests for obvious things like getters, "Stats and Ticket-d riven Development" and systems where everything is configurable but nothing varies, leaving business logic buried under unnecessary complexity. It’s time to focus on code again. This session will demonstrate how modern Java 25 and standards can help us to reduce unnecessary complexity. The focus is on shipping real business logic with greater simplicity and maintainability. 
</blockquote>
<div class="screencast">
<iframe src="https://www.youtube.com/embed/ZRWMoXVdHoA?rel=0&vq=highres" allowfullscreen></iframe>
</div> </section>    <footer>        <div class="announcement">            <a href="https://airhacks.live">airhacks.live</a> workshops:            <ul>                <li><a href="https://airhacks.live">Spec-Driven Java Development at LLM Speed, 2 July 2026</a></li>                <li><a href="https://airhacks.live">LLM-Assisted Web Components: No Frameworks, No Dependencies, 16 July                        2026</a></li>                <li>                    <span class="light">NEW</span> MUC Airport <a href="https://airhacks.university">Architect-Grade Java with LLMs, 10 December 2026</a>                </li>            </ul>        </div>        <time datetime="5/14/26, 7:41 PM">🗓️ 5/14/26, 7:41 PM</time> by <span class="author"><a                href="https://about.adam-bien.com">Adam Bien</a></span> <span><a                href="https://linkedin.com/in/adam-bien"><img class="icon"                    src="http://adambien.blog/images/linkedin.png" /></a></span>        <!-- span>views: 0</span-->        </div>    </footer></article>
<article class="post">    <!-- generated by: blogr 2025.02.02.01 -->    <header>        <h2>146th airhacks tv: Rust, Java 25, AI Agents, BCE, Web Components, zunit, zb <a href="./146th_airhacks_tv_rust_java_25_ai_agents_bce_web_compon">&#128206;</a></h2>    </header>    <section class="content"> 2025.06, the <a href="https://adambien.blog/roller/rust_sse_websockets_bce_jpa_history_llms_questions_and_topics_for_the_146th_airhacks_tv">146th</a> <a href="https://airhacks.tv">airhacks.tv</a> episode is available:
<blockquote>
Two Time Machines: Revisiting the 45th Episode After 9 Years, Java 25 Scripting With Zero Dependencies, Java vs. Kotlin in 2025, Web Components and Standards Without Frameworks, Multiple Datasources With Different Permissions for AI Agents, Connection Pools and JPA Cache in Serverless Environments, Why XA Transactions Are a Bad Idea, JavaFX Revival With Official Oracle Support, EJBs vs. CDI Pooling and Jakarta EE 12 Native Pooling Plans, BCE Design and AI Rails for AI Agents, Jakarta Data and Delta Spike Evolution, Docker Swarm vs. Kubernetes vs. OpenShift for Java Developers, Server Push With WebSockets and SSE in the MCP Era, Role-Based Access With MicroProfile JWT and @RolesAllowed, Scala vs. Rust vs. Java 25 Analysis, Why LLMs Understand Java Better Than Other Languages, zsmith Agent Harness in Pure Java 25, LangChain4j With Quarkus and Native Compilation, Zero-Dependency JUnit Runner Under 1 Second, JAX Frankfurt, AirHacks Munich Airport Workshop December 2026, Summer AirHacks Online, JCon Cologne, Devoxx Greece, JavaOne, Devoxx London, Geekon Krakow
</blockquote>
<div class="screencast">
<iframe src="https://www.youtube.com/embed/5UV0tQ3SXVA?rel=0&vq=highres" allowfullscreen></iframe>
</div>
 </section>    <footer>        <div class="announcement">            <a href="https://airhacks.live">airhacks.live</a> workshops:            <ul>                <li><a href="https://airhacks.live">Spec-Driven Java Development at LLM Speed, 2 July 2026</a></li>                <li><a href="https://airhacks.live">LLM-Assisted Web Components: No Frameworks, No Dependencies, 16 July                        2026</a></li>                <li>                    <span class="light">NEW</span> MUC Airport <a href="https://airhacks.university">Architect-Grade Java with LLMs, 10 December 2026</a>                </li>            </ul>        </div>        <time datetime="5/12/26, 7:14 AM">🗓️ 5/12/26, 7:14 AM</time> by <span class="author"><a                href="https://about.adam-bien.com">Adam Bien</a></span> <span><a                href="https://linkedin.com/in/adam-bien"><img class="icon"                    src="http://adambien.blog/images/linkedin.png" /></a></span>        <!-- span>views: 0</span-->        </div>    </footer></article>
<article class="post">    <!-- generated by: blogr 2025.02.02.01 -->    <header>        <h2>From Manchester to Mountain View: Binary Translators, JVMs, and Android--airhacks.fm podcast <a href="./from_manchester_to_mountain_view_binary_translators_jvms_">&#128206;</a></h2>    </header>    <section class="content"> <p>
Subscribe to <a href="https://airhacks.fm">airhacks.fm podcast</a> via:
<a href="https://open.spotify.com/show/6nOTQLa2uZxeyGpMW8eppS">spotify</a>|
<a href="https://itunes.apple.com/de/podcast/airhacks-fm/id1296655154?l=en">iTunes</a>
</p>
<article itemscope itemtype="https://schema.org/PodcastEpisode">
The #396 <a href="https://airhacks.fm">airhacks.fm</a> episode with Ian Rogers about:
<blockquote itemprop="description">
Binary translators, JVMs, and the Android Runtime, traced from a ZX Spectrum in Manchester to Linux kernel performance work at Google.
</blockquote>
is available for <a itemprop="url" href="https://airhacks.fm/#episode_396">download.</a>
</article>
 </section>    <footer>        <div class="announcement">            <a href="https://airhacks.live">airhacks.live</a> workshops:            <ul>                <li><a href="https://airhacks.live">Spec-Driven Java Development at LLM Speed, 2 July 2026</a></li>                <li><a href="https://airhacks.live">LLM-Assisted Web Components: No Frameworks, No Dependencies, 16 July                        2026</a></li>                <li>                    <span class="light">NEW</span> MUC Airport <a href="https://airhacks.university">Architect-Grade Java with LLMs, 10 December 2026</a>                </li>            </ul>        </div>        <time datetime="5/8/26, 5:58 AM">🗓️ 5/8/26, 5:58 AM</time> by <span class="author"><a                href="https://about.adam-bien.com">Adam Bien</a></span> <span><a                href="https://linkedin.com/in/adam-bien"><img class="icon"                    src="http://adambien.blog/images/linkedin.png" /></a></span>        <!-- span>views: 0</span-->        </div>    </footer></article>
<article class="post">    <!-- generated by: blogr 2025.02.02.01 -->    <header>        <h2>Rust, SSE, WebSockets, BCE, JPA History, LLMs-Questions and Topics for the 146th airhacks.tv <a href="./rust_sse_websockets_bce_jpa_history_llms_questions_and_topics_for_the_146th_airhacks_tv">&#128206;</a></h2>    </header>    <section class="content"> Questions and topics for the <a
    href="https://gist.github.com/AdamBien/4c2a1c099321bac29ecb6ebc262ae196">2026.05/1416h</a> edition of <a
    href="https://airhacks.tv/">airhacks.tv</a>:

<ol>
    <li>Opinion about the Rust programming language (asked by @Pscheidl on LinkedIn)</li>
    <li>Time machine: the <a href="https://gist.github.com/AdamBien/725f0e529bda54e2a35cf35c88f49c26">46th
            airhacks.tv</a> from January 2018
        <blockquote>
            Application metrics and monitoring in Java EE, ServerSockets vs higher-level alternatives, SSE, WebSockets,
            DAO anti-patterns, JPA historisation, SLSB tuning, Docker, Kubernetes, OpenShift and more
        </blockquote>
    </li>
    <li>Time machine: the <a href="https://gist.github.com/AdamBien/53ea02999adaa8c328af43c01583aa68">45th
            airhacks.tv</a> from December 2017
        <blockquote>Kotlin in Java EE, JasperReport alternatives, custom REST
            headers, two persistence units in CDI, JPA internals, JWT authentication, Web Components, offline-first PWAs
            and more
        </blockquote>
    </li>
	
	<li>airhacks workshops return to Munich Airport</li>
    <li>conference report</li>
</ol>

<p>
    Any questions left? Ask now: <a
        href="https://gist.github.com/AdamBien/4c2a1c099321bac29ecb6ebc262ae196">gist.github.com/AdamBien/4c2a1c099321bac29ecb6ebc262ae196</a>
    and get the answers at the next <a href="https://airhacks.tv">airhacks.tv</a>.
    Some questions are also answered with a short video: <a href="http://youtube.com/@bienadam/shorts">60 seconds or
        less with Java</a>
</p> </section>    <footer>        <div class="announcement">            <a href="https://airhacks.live">airhacks.live</a> workshops:            <ul>                <li><a href="https://airhacks.live">Spec-Driven Java Development at LLM Speed, 2 July 2026</a></li>                <li><a href="https://airhacks.live">LLM-Assisted Web Components: No Frameworks, No Dependencies, 16 July                        2026</a></li>                <li>                    <span class="light">NEW</span> MUC Airport <a href="https://airhacks.university">Architect-Grade Java with LLMs, 10 December 2026</a>                </li>            </ul>        </div>        <time datetime="5/4/26, 12:01 PM">🗓️ 5/4/26, 12:01 PM</time> by <span class="author"><a                href="https://about.adam-bien.com">Adam Bien</a></span> <span><a                href="https://linkedin.com/in/adam-bien"><img class="icon"                    src="http://adambien.blog/images/linkedin.png" /></a></span>        <!-- span>views: 0</span-->        </div>    </footer></article>
<article class="post">    <!-- generated by: blogr 2025.02.02.01 -->    <header>        <h2>Live Coding at Devoxx Greece: Your Java Code Is Your LLM Prompt <a href="./live_coding_at_devoxx_greece_your_java_code_is_your_llm_prompt">&#128206;</a></h2>    </header>    <section class="content"> <blockquote>
LLMs know Java's normative APIs, specifications, and implementations. That changes how you write code. Code structure, naming conventions, and adherence to standards directly affect what LLMs generate. Well-structured, zero-dependency Java produces more consistent, more predictable LLM output and scales to big projects.
Starting from a blank project, each step demonstrates how code organization, standard API usage, and consistent patterns influence LLM-assisted development. The same principles that make code readable for developers also make it processable for LLMs.
No slides. No theory. Just code. Questions welcome at any time.    
</blockquote>
<div class="screencast">
<iframe src="https://www.youtube.com/embed/o0DMyXbhjSo?rel=0&vq=highres" allowfullscreen></iframe>
</div> </section>    <footer>        <div class="announcement">            <a href="https://airhacks.live">airhacks.live</a> workshops:            <ul>                <li><a href="https://airhacks.live">Spec-Driven Java Development at LLM Speed, 2 July 2026</a></li>                <li><a href="https://airhacks.live">LLM-Assisted Web Components: No Frameworks, No Dependencies, 16 July                        2026</a></li>                <li>                    <span class="light">NEW</span> MUC Airport <a href="https://airhacks.university">Architect-Grade Java with LLMs, 10 December 2026</a>                </li>            </ul>        </div>        <time datetime="5/3/26, 6:57 AM">🗓️ 5/3/26, 6:57 AM</time> by <span class="author"><a                href="https://about.adam-bien.com">Adam Bien</a></span> <span><a                href="https://linkedin.com/in/adam-bien"><img class="icon"                    src="http://adambien.blog/images/linkedin.png" /></a></span>        <!-- span>views: 0</span-->        </div>    </footer></article>
<article class="post">    <!-- generated by: blogr 2025.02.02.01 -->    <header>        <h2>Migrating Ruby Monoliths to Java, Agentic AI Foundation and MCP-airhacks.fm podcast <a href="./migrating_ruby_monoliths_to_java_agentic_ai_foundation_and_mcp_airhacks_fm_podcast">&#128206;</a></h2>    </header>    <section class="content"> <p>
Subscribe to <a href="https://airhacks.fm">airhacks.fm podcast</a> via:
<a href="https://open.spotify.com/show/6nOTQLa2uZxeyGpMW8eppS">spotify</a>|
<a href="https://itunes.apple.com/de/podcast/airhacks-fm/id1296655154?l=en">iTunes</a>
</p>
<article itemscope itemtype="https://schema.org/PodcastEpisode">
The #395 <a href="https://airhacks.fm">airhacks.fm</a> episode with Manik Surtani (<a href="https://twitter.com/maniksurtani">@maniksurtani</a>) about:
<blockquote itemprop="description">
From JBoss Cache and Infinispan to migrating Ruby on Rails monoliths to Java microservices at Square, co-designing MCP with Anthropic, building the Goose coding agent, and founding the Agentic AI Foundation
</blockquote>
is available for <a itemprop="url" href="https://airhacks.fm/#episode_395">download.</a>
</article> </section>    <footer>        <div class="announcement">            <a href="https://airhacks.live">airhacks.live</a> workshops:            <ul>                <li><a href="https://airhacks.live">Spec-Driven Java Development at LLM Speed, 2 July 2026</a></li>                <li><a href="https://airhacks.live">LLM-Assisted Web Components: No Frameworks, No Dependencies, 16 July                        2026</a></li>                <li>                    <span class="light">NEW</span> MUC Airport <a href="https://airhacks.university">Architect-Grade Java with LLMs, 10 December 2026</a>                </li>            </ul>        </div>        <time datetime="4/28/26, 7:48 PM">🗓️ 4/28/26, 7:48 PM</time> by <span class="author"><a                href="https://about.adam-bien.com">Adam Bien</a></span> <span><a                href="https://linkedin.com/in/adam-bien"><img class="icon"                    src="http://adambien.blog/images/linkedin.png" /></a></span>        <!-- span>views: 0</span-->        </div>    </footer></article>
<article class="post">    <!-- generated by: blogr 2025.02.02.01 -->    <header>        <h2>"hello, world" Java 25 Script In 4 Lines <a href="./_hello_world_java_25_script_in_4_lines">&#128206;</a></h2>    </header>    <section class="content"> 
<p>Java 25 source-file mode turns a single file into an executable command. No compilation, no build tool, no <code>.java</code> extension. Here is how to create a <code>zhello</code> script:</p>

<ol>
<li>Create a file named <code>zhello</code> (no extension) with the shebang <code>#!/usr/bin/env -S java --source 25</code></li>
<li>Add an instance <code>void main()</code> method that calls <code>IO.println("hello, world")</code></li>
<li>Make it executable: <code>chmod +x zhello</code></li>
<li>Install it system-wide: <code>sudo cp zhello /usr/local/bin/</code></li>
</ol>

<p>The entire script:</p>

<pre>
#!/usr/bin/env -S java --source 25

void main() {
    IO.println("hello, world");
}
</pre>
 </section>    <footer>        <div class="announcement">            <a href="https://airhacks.live">airhacks.live</a> workshops:            <ul>                <li><a href="https://airhacks.live">Spec-Driven Java Development at LLM Speed, 2 July 2026</a></li>                <li><a href="https://airhacks.live">LLM-Assisted Web Components: No Frameworks, No Dependencies, 16 July                        2026</a></li>                <li>                    <span class="light">NEW</span> MUC Airport <a href="https://airhacks.university">Architect-Grade Java with LLMs, 10 December 2026</a>                </li>            </ul>        </div>        <time datetime="4/26/26, 3:31 AM">🗓️ 4/26/26, 3:31 AM</time> by <span class="author"><a                href="https://about.adam-bien.com">Adam Bien</a></span> <span><a                href="https://linkedin.com/in/adam-bien"><img class="icon"                    src="http://adambien.blog/images/linkedin.png" /></a></span>        <!-- span>views: 0</span-->        </div>    </footer></article>
<article class="post">    <!-- generated by: blogr 2025.02.02.01 -->    <header>        <h2>145th airhacks tv: BCE, airails.dev, Zero-Dependency Agents, and Java 25 Scripts <a href="./145th_airhacks_tv_bce_airails_dev_zero_dependency_agents_and_java_25_scripts">&#128206;</a></h2>    </header>    <section class="content"> The 145th <a href="https://airhacks.tv">airhacks.tv</a> episode 2026.04 is available:
<blockquote>
BCE pattern from 1992: top-level packages named by context not by layer, at most 3 sub-packages: Boundary, Control, Entity,
@Transactional belongs only on the Boundary — one button push equals one use case equals one transaction,
Hibernate Validator skipped in favor of custom Control-layer validation for precise 400-error handling,
zero-dependency MCP server by Mr. Aldo from France: built with BCE and zero-dependency principles,
Agent Smith live demo: zero-dependency Java 25 agent framework in ~130KB single JAR, transcriber agent with episodic memory and agent delegation,
GPU Llama / TornadoVM: Apple Metal support for running Mistral and DevStral locally, plans to run Agent Smith without cloud,
Z ecosystem: ZDate, ZJDocFind, ZUnit single-file test runner in ~300 lines with parallel execution, ZB build tool — all zero-dependency Java 25 scripts,
LLMs understand standards better than frameworks — enables lean code generation without external dependencies,
Enterprise Fire April 1st skill: converting Hello World to 73 classes with all patterns, hexagonal architecture appears for the first time on AirHacks,
upcoming AirHacks Live summer workshops on spec-driven Java development and front-ends without dependencies
</blockquote>
<div class="screencast">
<iframe width="560" height="315" src="https://www.youtube.com/embed/TQEyvky1LXg" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<p>
Do you have any more questions? See you at: <a href="https://airhacks.live">airhacks.live</a>
</p>


 </section>    <footer>        <div class="announcement">            <a href="https://airhacks.live">airhacks.live</a> workshops:            <ul>                <li><a href="https://airhacks.live">Spec-Driven Java Development at LLM Speed, 2 July 2026</a></li>                <li><a href="https://airhacks.live">LLM-Assisted Web Components: No Frameworks, No Dependencies, 16 July                        2026</a></li>                <li>                    <span class="light">NEW</span> MUC Airport <a href="https://airhacks.university">Architect-Grade Java with LLMs, 10 December 2026</a>                </li>            </ul>        </div>        <time datetime="4/25/26, 6:28 AM">🗓️ 4/25/26, 6:28 AM</time> by <span class="author"><a                href="https://about.adam-bien.com">Adam Bien</a></span> <span><a                href="https://linkedin.com/in/adam-bien"><img class="icon"                    src="http://adambien.blog/images/linkedin.png" /></a></span>        <!-- span>views: 0</span-->        </div>    </footer></article>
<article class="post">    <!-- generated by: blogr 2025.02.02.01 -->    <header>        <h2>Apache PLC4X, Industrial Protocol Drivers, and the JDBC of Industrial Automation--airhacks.fm podcast <a href="./apache_plc4x_industrial_protocol_drivers_and_the_jdbc_of_industrial_automation_airhacks_fm_podcast">&#128206;</a></h2>    </header>    <section class="content"> <p>
Subscribe to <a href="https://airhacks.fm">airhacks.fm podcast</a> via:
<a href="https://open.spotify.com/show/6nOTQLa2uZxeyGpMW8eppS">spotify</a>|
<a href="https://itunes.apple.com/de/podcast/airhacks-fm/id1296655154?l=en">iTunes</a>|
<a href="https://youtube.com/playlist?list=PLxU9yM-_yPs-jJQopciJ3DwOYd9hUTiBB&si=-GZ1Z8HNza-LVsvK">YouTube</a>
</p>
<article itemscope itemtype="https://schema.org/PodcastEpisode">
The #394 <a href="https://airhacks.fm">airhacks.fm</a> episode with Christofer Dutz (<a href="https://www.linkedin.com/in/christofer-dutz">christofer-dutz/</a>) about:
<blockquote itemprop="description">
Apache PLC4X as the JDBC of industrial automation, native protocol drivers versus OPC UA, founding ToddySoft for commercially supported open source industrial products, 
Apache IoTDB and TsFile for time series storage, and Industry 4.0 use cases on the shop floor.
</blockquote>
is available for <a itemprop="url"  href="https://airhacks.fm/#episode_394">download.</a>
</article> </section>    <footer>        <div class="announcement">            <a href="https://airhacks.live">airhacks.live</a> workshops:            <ul>                <li><a href="https://airhacks.live">Spec-Driven Java Development at LLM Speed, 2 July 2026</a></li>                <li><a href="https://airhacks.live">LLM-Assisted Web Components: No Frameworks, No Dependencies, 16 July                        2026</a></li>                <li>                    <span class="light">NEW</span> MUC Airport <a href="https://airhacks.university">Architect-Grade Java with LLMs, 10 December 2026</a>                </li>            </ul>        </div>        <time datetime="4/23/26, 5:36 AM">🗓️ 4/23/26, 5:36 AM</time> by <span class="author"><a                href="https://about.adam-bien.com">Adam Bien</a></span> <span><a                href="https://linkedin.com/in/adam-bien"><img class="icon"                    src="http://adambien.blog/images/linkedin.png" /></a></span>        <!-- span>views: 0</span-->        </div>    </footer></article>
<article class="post">    <!-- generated by: blogr 2025.02.02.01 -->    <header>        <h2>airails.dev Skills, @Transactional in BCE, Hibernate Validator, Zero-Framework MCP Server, GPULLama3 and zSmith Agent News--145th airhacks.tv:  <a href="./airails_dev_skills__transactional_in_bce_hibernate_validator_zero_framework_mcp_server_gpullama3_and_zsmith_agent_news_145th_airhacks_tv_">&#128206;</a></h2>    </header>    <section class="content"> <p>Topics for the <a href="https://gist.github.com/AdamBien/1fe3965f3753939ae79685a1acfa1f8b">145th airhacks.tv</a>:</p>
<ol>
  <li><a href="https://airails.dev/">airails.dev</a> microprofile-server skill: <code>@Transactional</code> in the boundary vs. control layer for bulk processing and synchronous API calls</li>
  <li>BCE architecture in Jakarta Faces applications - how to structure them</li>
  <li>Local inference with Tornado / Java <a href="https://github.com/beehive-lab/GPULlama3.java">GPULLama3</a>
  <li><a href="https://airails.dev/">airails.dev</a> microprofile-server skill: why never use <code>quarkus-hibernate-validator</code>? Alternatives to manual validation</li>
  <li>MCP server with Zero-framework / BCE architecture by Aldo Lushklja: <a href="https://github.com/aldo-lushkja/zdtp-mcp">zdtp-mcp</a>, <a href="https://blog.aldolushkja.it/i-built-a-zero-framework-mcp-server-for-targetprocess-in-java-21">blog post</a></li>
  <li>Agent <a href="https://github.com/adambien/zsmith">zSmith</a> news</li>
  <li><a href="https://github.com/adambien/zeeds">zeeds (Java Zero-Dependency Seed Scripts)</a> news</li>
</ol>
<p>
See you every first Monday of the month at <a href="https://airhacks.tv">https://airhacks.tv</a> 8pm CET (UTC+1:00). Show is also announced at: <a href="https://meetup.com/airhacks">meetup.com/airhacks</a>.
</p>
<p>Ask questions during the show via twitter mentioning me: <a href="https://twitter.com/AdamBien" target="_blank">https://twitter.com/AdamBien</a> (@AdamBien),using the hashtag: #airhacks or built-in chat at: <a href="https://airhacks.tv">airhacks.tv</a>. You can join the Q&A session live each first Monday of month, 8 P.M at <a href="https://airhacks.tv">airhacks.tv</a></p> </section>    <footer>        <div class="announcement">            <a href="https://airhacks.live">airhacks.live</a> workshops:            <ul>                <li><a href="https://airhacks.live">Spec-Driven Java Development at LLM Speed, 2 July 2026</a></li>                <li><a href="https://airhacks.live">LLM-Assisted Web Components: No Frameworks, No Dependencies, 16 July                        2026</a></li>                <li>                    <span class="light">NEW</span> MUC Airport <a href="https://airhacks.university">Architect-Grade Java with LLMs, 10 December 2026</a>                </li>            </ul>        </div>        <time datetime="4/20/26, 12:43 PM">🗓️ 4/20/26, 12:43 PM</time> by <span class="author"><a                href="https://about.adam-bien.com">Adam Bien</a></span> <span><a                href="https://linkedin.com/in/adam-bien"><img class="icon"                    src="http://adambien.blog/images/linkedin.png" /></a></span>        <!-- span>views: 0</span-->        </div>    </footer></article>
<article class="post">    <!-- generated by: blogr 2025.02.02.01 -->    <header>        <h2>Early 2026: Upcoming Conferences, Workshops and Events <a href="./early_2026_upcoming_conferences_workshops_and_events">&#128206;</a></h2>    </header>    <section class="content"> <ol>
    <li itemscope itemtype="https://schema.org/EducationEvent">
        <span itemprop="performer" itemscope itemtype="https://schema.org/Person"><meta itemprop="name" content="Adam Bien"></span>
        <meta itemprop="eventAttendanceMode" content="https://schema.org/OfflineEventAttendanceMode">
        JCON Europe 2026: <span itemprop="name">Livecoding: Creating Beautiful Java Code With LLM and Agents</span>
        <div>
            <span itemprop="description">conference talk</span>
              <span itemprop="location" itemscope itemtype="https://schema.org/Place">
    <span itemprop="name">JCON Europe 2026</span>
    <span itemprop="address">Cologne, Germany</span>
</span>
            <span itemprop="startDate">21 April 2026</span>
        </div>
    <meta itemprop="endDate" content="21 April 2026">
    <a href="https://schedule.jcon.one/2026/speakers" itemprop="url">https://schedule.jcon.one/2026/speakers</a>
    </li>

<li itemscope itemtype="https://schema.org/EducationEvent">
        <span itemprop="performer" itemscope itemtype="https://schema.org/Person"><meta itemprop="name" content="Adam Bien"></span>
        <meta itemprop="eventAttendanceMode" content="https://schema.org/OfflineEventAttendanceMode">
        Devoxx Greece 2026: <span itemprop="name">Your Java Code Is Your LLM Prompt</span>
        <div>
            <span itemprop="description">conference talk</span>
              <span itemprop="location" itemscope itemtype="https://schema.org/Place">
    <span itemprop="name">Devoxx Greece 2026</span>
    <span itemprop="address">Athens, Greece</span>
</span>
            <span itemprop="startDate">23 April 2026</span>
        </div>
    <meta itemprop="endDate" content="23 April 2026">
    <a href="https://m.devoxx.com/events/dvgr26/talks/13551/session-by-adam-bien" itemprop="url">https://m.devoxx.com/events/dvgr26/talks/13551/session-by-adam-bien</a>
    </li>

<li itemscope itemtype="https://schema.org/EducationEvent">
        <span itemprop="performer" itemscope itemtype="https://schema.org/Person"><meta itemprop="name" content="Adam Bien"></span>
        <meta itemprop="eventAttendanceMode" content="https://schema.org/OfflineEventAttendanceMode">
        JAX, Mainz: <span itemprop="name">Business Logic First: Escaping Java's Bloat Addiction</span>
        <div>
            <span itemprop="description">conference talk</span>
              <span itemprop="location" itemscope itemtype="https://schema.org/Place">
    <span itemprop="name">JAX, Mainz</span>
    <span itemprop="address">Berlin, Germany</span>
</span>
            <span itemprop="startDate">5 May 2026</span>
        </div>
    <meta itemprop="endDate" content="5 May 2026">
    <a href="https://jax.de/serverside-enterprise-java/business-logic-first-java/" itemprop="url">https://jax.de/serverside-enterprise-java/business-logic-first-java/</a>
    </li>

<li itemscope itemtype="https://schema.org/EducationEvent">
        <span itemprop="performer" itemscope itemtype="https://schema.org/Person"><meta itemprop="name" content="Adam Bien"></span>
        <meta itemprop="eventAttendanceMode" content="https://schema.org/OfflineEventAttendanceMode">
        JAX, Mainz: <span itemprop="name">Live Coding Production Java: Incremental Development with LLMs</span>
        <div>
            <span itemprop="description">conference talk</span>
              <span itemprop="location" itemscope itemtype="https://schema.org/Place">
    <span itemprop="name">JAX, Mainz</span>
    <span itemprop="address">Berlin, Germany</span>
</span>
            <span itemprop="startDate">5 May 2026</span>
        </div>
    <meta itemprop="endDate" content="5 May 2026">
    <a href="https://jax.de/big-data-machine-learning/java-incremental-development-llm-java/" itemprop="url">https://jax.de/big-data-machine-learning/java-incremental-development-llm-java/</a>
    </li>

<li itemscope itemtype="https://schema.org/EducationEvent">
        <span itemprop="performer" itemscope itemtype="https://schema.org/Person"><meta itemprop="name" content="Adam Bien"></span>
        <meta itemprop="eventAttendanceMode" content="https://schema.org/OfflineEventAttendanceMode">
        Geecon: <span itemprop="name">The 50x Developer: Java's Unfair Advantage in the Age of AI Agents</span>
        <div>
            <span itemprop="description">conference talk</span>
              <span itemprop="location" itemscope itemtype="https://schema.org/Place">
    <span itemprop="name">Geecon</span>
    <span itemprop="address">Krakow, Poland</span>
</span>
            <span itemprop="startDate">14th May 2026</span>
        </div>
    <meta itemprop="endDate" content="14th May 2026">
    <a href="https://2026.geecon.org/speakers/info.html?id=1062" itemprop="url">https://2026.geecon.org/speakers/info.html?id=1062</a>
    </li>

<li itemscope itemtype="https://schema.org/EducationEvent">
        <span itemprop="performer" itemscope itemtype="https://schema.org/Person"><meta itemprop="name" content="Adam Bien"></span>
        <meta itemprop="eventAttendanceMode" content="https://schema.org/OfflineEventAttendanceMode">
        VibeKode Conference: <span itemprop="name">How To Write Great Code with LLMs #vibeless</span>
        <div>
            <span itemprop="description">conference talk</span>
              <span itemprop="location" itemscope itemtype="https://schema.org/Place">
    <span itemprop="name">VibeKode Conference</span>
    <span itemprop="address">Munich, Germany</span>
</span>
            <span itemprop="startDate">24 June 2026</span>
        </div>
    <meta itemprop="endDate" content="24 June 2026">
    <a href="https://vibekode.it" itemprop="url">https://vibekode.it</a>
    </li>

<li itemscope itemtype="https://schema.org/EducationEvent">
        <span itemprop="performer" itemscope itemtype="https://schema.org/Person"><meta itemprop="name" content="Adam Bien"></span>
        <meta itemprop="eventAttendanceMode" content="https://schema.org/OnlineEventAttendanceMode">
        <span itemprop="name">Spec-Driven Java Development at LLM Speed</span>[online event]
        <div>
            <span itemprop="description">online workshop</span>
            
            <span itemprop="startDate">2 July 2026</span>
        </div>
    <meta itemprop="endDate" content="2 July 2026">
    <a href="https://workshops.adam-bien.com" itemprop="url">https://workshops.adam-bien.com</a>
    </li>

<li itemscope itemtype="https://schema.org/EducationEvent">
        <span itemprop="performer" itemscope itemtype="https://schema.org/Person"><meta itemprop="name" content="Adam Bien"></span>
        <meta itemprop="eventAttendanceMode" content="https://schema.org/OnlineEventAttendanceMode">
        <span itemprop="name">LLM-Assisted Web Components: No Frameworks, No Dependencies. Just Web Standards</span>[online event]
        <div>
            <span itemprop="description">online workshop</span>
            
            <span itemprop="startDate">16 July 2026</span>
        </div>
    <meta itemprop="endDate" content="16 July 2026">
    <a href="https://workshops.adam-bien.com" itemprop="url">https://workshops.adam-bien.com</a>
    </li>

<li itemscope itemtype="https://schema.org/EducationEvent">
        <span itemprop="performer" itemscope itemtype="https://schema.org/Person"><meta itemprop="name" content="Adam Bien"></span>
        <meta itemprop="eventAttendanceMode" content="https://schema.org/OnlineEventAttendanceMode">
        <span itemprop="name">airhacks.tv Questions and Answers #livestream</span>[online event]
        <div>
            <span itemprop="description">live streaming show</span>
            
            <span itemprop="startDate">first monday of the month, 8pm CET</span>
        </div>
    <meta itemprop="endDate" content="first monday of the month, 8pm CET">
    <a href="https://www.meetup.com/airhacks/" itemprop="url">https://www.meetup.com/airhacks/</a>
    </li>

</ol>
 </section>    <footer>        <div class="announcement">            <a href="https://airhacks.live">airhacks.live</a> workshops:            <ul>                <li><a href="https://airhacks.live">Spec-Driven Java Development at LLM Speed, 2 July 2026</a></li>                <li><a href="https://airhacks.live">LLM-Assisted Web Components: No Frameworks, No Dependencies, 16 July                        2026</a></li>                <li>                    <span class="light">NEW</span> MUC Airport <a href="https://airhacks.university">Architect-Grade Java with LLMs, 10 December 2026</a>                </li>            </ul>        </div>        <time datetime="4/18/26, 9:34 AM">🗓️ 4/18/26, 9:34 AM</time> by <span class="author"><a                href="https://about.adam-bien.com">Adam Bien</a></span> <span><a                href="https://linkedin.com/in/adam-bien"><img class="icon"                    src="http://adambien.blog/images/linkedin.png" /></a></span>        <!-- span>views: 0</span-->        </div>    </footer></article>
<article class="post">    <!-- generated by: blogr 2025.02.02.01 -->    <header>        <h2>AWS Infrastructure as Code: CloudFormation Origins, CDK Stacks, and Terraform Trade-offs--airhacks.fm podcast <a href="./aws_infrastructure_as_code_cloudformation_origins_cdk_stac">&#128206;</a></h2>    </header>    <section class="content"> <p>
Subscribe to <a href="https://airhacks.fm">airhacks.fm podcast</a> via:
<a href="https://open.spotify.com/show/6nOTQLa2uZxeyGpMW8eppS">spotify</a>|
<a href="https://itunes.apple.com/de/podcast/airhacks-fm/id1296655154?l=en">iTunes</a>|
</p>
<article itemscope itemtype="https://schema.org/PodcastEpisode">
The #393 <a href="https://airhacks.fm">airhacks.fm</a> episode with Thorsten Höger (<a href="https://twitter.com/hoegertn">@hoegertn</a>) about:
<blockquote itemprop="description">
Migrating a German bank to AWS in 2012, the evolution from CloudFormation JSON to CDK, declarative state management, Terraform trade-offs, CDK stacks as atomic deployment units, regulated industries and compliance, and the CDK Book.
</blockquote>
is available for <a itemprop="url"  href="https://airhacks.fm/#episode_393">download.</a>
</article> </section>    <footer>        <div class="announcement">            <a href="https://airhacks.live">airhacks.live</a> workshops:            <ul>                <li><a href="https://airhacks.live">Spec-Driven Java Development at LLM Speed, 2 July 2026</a></li>                <li><a href="https://airhacks.live">LLM-Assisted Web Components: No Frameworks, No Dependencies, 16 July                        2026</a></li>                <li>                    <span class="light">NEW</span> MUC Airport <a href="https://airhacks.university">Architect-Grade Java with LLMs, 10 December 2026</a>                </li>            </ul>        </div>        <time datetime="4/16/26, 1:13 PM">🗓️ 4/16/26, 1:13 PM</time> by <span class="author"><a                href="https://about.adam-bien.com">Adam Bien</a></span> <span><a                href="https://linkedin.com/in/adam-bien"><img class="icon"                    src="http://adambien.blog/images/linkedin.png" /></a></span>        <!-- span>views: 0</span-->        </div>    </footer></article>
<article class="post">    <!-- generated by: blogr 2025.02.02.01 -->    <header>        <h2>Green Java with Quarkus: Performance Benchmarks, SBOM, and Serverless Architecture--airhacks.fm podcast <a href="./green_java_with_quarkus_performance_benchmarks_sbom_and_s">&#128206;</a></h2>    </header>    <section class="content"> Subscribe to <a href="https://airhacks.fm">airhacks.fm podcast</a> via:
<a href="https://open.spotify.com/show/6nOTQLa2uZxeyGpMW8eppS">spotify</a>|
<a href="https://itunes.apple.com/de/podcast/airhacks-fm/id1296655154?l=en">iTunes</a>|
</p>
<article itemscope itemtype="https://schema.org/PodcastEpisode">
The #392 <a href="https://airhacks.fm">airhacks.fm</a> episode with Holly Cummins (<a href="https://twitter.com/holly_cummins">@holly_cummins</a>) about:
<blockquote itemprop="description">
Quarkus energy efficiency benchmarks, greener Java, serverless SnapStart, JVM tuning, SBOM generation, and cheese fondue
</blockquote>
is available for <a itemprop="url"  href="https://airhacks.fm/#episode_392">download.</a>
</article> </section>    <footer>        <div class="announcement">            <a href="https://airhacks.live">airhacks.live</a> workshops:            <ul>                <li><a href="https://airhacks.live">Spec-Driven Java Development at LLM Speed, 2 July 2026</a></li>                <li><a href="https://airhacks.live">LLM-Assisted Web Components: No Frameworks, No Dependencies, 16 July                        2026</a></li>                <li>                    <span class="light">NEW</span> MUC Airport <a href="https://airhacks.university">Architect-Grade Java with LLMs, 10 December 2026</a>                </li>            </ul>        </div>        <time datetime="4/11/26, 12:52 PM">🗓️ 4/11/26, 12:52 PM</time> by <span class="author"><a                href="https://about.adam-bien.com">Adam Bien</a></span> <span><a                href="https://linkedin.com/in/adam-bien"><img class="icon"                    src="http://adambien.blog/images/linkedin.png" /></a></span>        <!-- span>views: 0</span-->        </div>    </footer></article>
<article class="post">    <!-- generated by: blogr 2025.02.02.01 -->    <header>        <h2>Java 25 Script Files with Classpath in the Shebang <a href="./java_25_script_files_with_classpath_in_the_shebang">&#128206;</a></h2>    </header>    <section class="content"> <p>Java 25 script files (<a href="https://openjdk.org/jeps/512">JEP 512: Compact Source Files and Instance Main Methods</a> and <a href="https://openjdk.org/jeps/458">JEP 458: Launch Multi-File Source-Code Programs</>) are self contained, but can specify a classpath in the shebang.</p>
<p>The <code>Log.user</code>, for example, is located in zcl.jar and can referenced with the following shebang:</p>
<pre>
<code>
<em>#!/usr/bin/java --class-path=zcl.jar  --source 25</em>
void main() {
  Log.user("Hello, duke");
}
</code>
</pre>
 </section>    <footer>        <div class="announcement">            <a href="https://airhacks.live">airhacks.live</a> workshops:            <ul>                <li><a href="https://airhacks.live">Spec-Driven Java Development at LLM Speed, 2 July 2026</a></li>                <li><a href="https://airhacks.live">LLM-Assisted Web Components: No Frameworks, No Dependencies, 16 July                        2026</a></li>                <li>                    <span class="light">NEW</span> MUC Airport <a href="https://airhacks.university">Architect-Grade Java with LLMs, 10 December 2026</a>                </li>            </ul>        </div>        <time datetime="4/9/26, 12:52 PM">🗓️ 4/9/26, 12:52 PM</time> by <span class="author"><a                href="https://about.adam-bien.com">Adam Bien</a></span> <span><a                href="https://linkedin.com/in/adam-bien"><img class="icon"                    src="http://adambien.blog/images/linkedin.png" /></a></span>        <!-- span>views: 0</span-->        </div>    </footer></article>
<article class="post">    <!-- generated by: blogr 2025.02.02.01 -->    <header>        <h2>zunit: Zero-Dependency Java 25 Test Runner <a href="./zunit_zero_dependency_java_25_test_runner">&#128206;</a></h2>    </header>    <section class="content"> <p><b><a href="https://github.com/AdamBien/zunit">zunit</a></b> is a zero-dependency, single-file Java 25 Script test runner.
  It discovers <code>*Test.java</code> source files and runs each directly via <code>java --source 25</code>.
  No compilation step, no JUnit, no build tool required — just run <code>zunit</code>.</p>
<p>A <code>GreeterTest.java</code> example:
<pre>
<code>
void main() {
    var greeting = Greeter.greet("World");
    assert Objects.equals("Hello, World!", greeting) : "expected 'Hello, World!' but got: " + greeting;
}
</code>
</pre>
</p>
<p>Each test is a self-contained Java source script with a <code>void main()</code> method.
  Any thrown exception or non-zero exit code indicates test failure.
  Each test gets its own JVM — full execution isolation with zero shared state.</p>
<p>Run it with:</p>
<ol>
<li><code>zunit</code> to auto-detect and run all tests, </li>
<li><code>zunit -cp:zbo/app.jar</code> for an explicit classpath</li>
<li><code>zb && zunit</code> to build with <a href="https://github.com/ADAMBien/zb">zb</a> first.</li>
</ol>
<p>zunit is available from: <a href="https://github.com/AdamBien/zunit">github.com/AdamBien/zunit</a></p>
<p>The corresponding <a href="https:/airails.dev">airails.dev</a> skill is available from: <a href="https://github.com/AdamBien/airails/tree/main/java/zunit">github.com/AdamBien/airails/tree/main/java/zunit</a></p> </section>    <footer>        <div class="announcement">            <a href="https://airhacks.live">airhacks.live</a> workshops:            <ul>                <li><a href="https://airhacks.live">Spec-Driven Java Development at LLM Speed, 2 July 2026</a></li>                <li><a href="https://airhacks.live">LLM-Assisted Web Components: No Frameworks, No Dependencies, 16 July                        2026</a></li>                <li>                    <span class="light">NEW</span> MUC Airport <a href="https://airhacks.university">Architect-Grade Java with LLMs, 10 December 2026</a>                </li>            </ul>        </div>        <time datetime="4/8/26, 6:46 AM">🗓️ 4/8/26, 6:46 AM</time> by <span class="author"><a                href="https://about.adam-bien.com">Adam Bien</a></span> <span><a                href="https://linkedin.com/in/adam-bien"><img class="icon"                    src="http://adambien.blog/images/linkedin.png" /></a></span>        <!-- span>views: 0</span-->        </div>    </footer></article>
<article class="post">    <!-- generated by: blogr 2025.02.02.01 -->    <header>        <h2>Formal Methods, Functional Programming, and Securing the Java Ecosystem--airhacks.fm podcast <a href="./formal_methods_functional_programming_and_securing_the_jav">&#128206;</a></h2>    </header>    <section class="content"> <p>
Subscribe to <a href="https://airhacks.fm">airhacks.fm podcast</a> via:
<a href="https://open.spotify.com/show/6nOTQLa2uZxeyGpMW8eppS">spotify</a>|
<a href="https://itunes.apple.com/de/podcast/airhacks-fm/id1296655154?l=en">iTunes</a>|
</p>
<article itemscope itemtype="https://schema.org/PodcastEpisode">
The #391 <a href="https://airhacks.fm">airhacks.fm</a> episode with Brian Vermeer (<a href="https://twitter.com/BrianVermeer">@BrianVermeer</a>) about:
<blockquote itemprop="description">
Haskell and pure functional programming, building temperature sensor monitoring systems, enterprise service-based architecture and JavaServer Faces, Snyk's origins as an NPM dependency scanner, supply chain security and expansion to Java, static code analysis and container scanning and AI flow analysis, security as part of the development lifecycle, vibe coding risks and MCP server toxic flows, modern Java simplicity vs legacy enterprise verbosity, JBang for Java scripting, Java developers thinking about production readiness from the start
</blockquote>
is available for <a itemprop="url"  href="https://airhacks.fm/#episode_391">download.</a>
</article> </section>    <footer>        <div class="announcement">            <a href="https://airhacks.live">airhacks.live</a> workshops:            <ul>                <li><a href="https://airhacks.live">Spec-Driven Java Development at LLM Speed, 2 July 2026</a></li>                <li><a href="https://airhacks.live">LLM-Assisted Web Components: No Frameworks, No Dependencies, 16 July                        2026</a></li>                <li>                    <span class="light">NEW</span> MUC Airport <a href="https://airhacks.university">Architect-Grade Java with LLMs, 10 December 2026</a>                </li>            </ul>        </div>        <time datetime="4/7/26, 7:24 AM">🗓️ 4/7/26, 7:24 AM</time> by <span class="author"><a                href="https://about.adam-bien.com">Adam Bien</a></span> <span><a                href="https://linkedin.com/in/adam-bien"><img class="icon"                    src="http://adambien.blog/images/linkedin.png" /></a></span>        <!-- span>views: 0</span-->        </div>    </footer></article>
<article class="post">    <!-- generated by: blogr 2025.02.02.01 -->    <header>        <h2>Live from W-JAX (German): Hardcore Serverless Java - This is the Way  <a href="./live_from_w_jax_german__hardcore_serverless_java__this_is">&#128206;</a></h2>    </header>    <section class="content"> <blockquote>
The talk covers how to build Java applications that auto-scale, are highly available, and run without traditional infrastructure overhead. 
</blockquote>
<div class="screencast">
<iframe src="https://www.youtube.com/embed/K-vMJlzP0Wo?rel=0&vq=highres" allowfullscreen></iframe>
</div>
 </section>    <footer>        <div class="announcement">            <a href="https://airhacks.live">airhacks.live</a> workshops:            <ul>                <li><a href="https://airhacks.live">Spec-Driven Java Development at LLM Speed, 2 July 2026</a></li>                <li><a href="https://airhacks.live">LLM-Assisted Web Components: No Frameworks, No Dependencies, 16 July                        2026</a></li>                <li>                    <span class="light">NEW</span> MUC Airport <a href="https://airhacks.university">Architect-Grade Java with LLMs, 10 December 2026</a>                </li>            </ul>        </div>        <time datetime="3/25/26, 11:07 AM">🗓️ 3/25/26, 11:07 AM</time> by <span class="author"><a                href="https://about.adam-bien.com">Adam Bien</a></span> <span><a                href="https://linkedin.com/in/adam-bien"><img class="icon"                    src="http://adambien.blog/images/linkedin.png" /></a></span>        <!-- span>views: 0</span-->        </div>    </footer></article>
<article class="post">    <!-- generated by: blogr 2025.02.02.01 -->    <header>        <h2>NASA, Rocket Science and Oorian--airhacks.fm podcast <a href="./nasa_rocket_science_and_oorian_airhacks_fm_podcast">&#128206;</a></h2>    </header>    <section class="content"> Subscribe to <a href="https://airhacks.fm">airhacks.fm podcast</a> via:
<a href="https://open.spotify.com/show/6nOTQLa2uZxeyGpMW8eppS">spotify</a>|
<a href="https://itunes.apple.com/de/podcast/airhacks-fm/id1296655154?l=en">iTunes</a>|
<a href="https://pcr.apple.com/id1296655154">RSS</a>
</p>
<article itemscope itemtype="https://schema.org/PodcastEpisode">
The #390 <a href="https://airhacks.fm">airhacks.fm</a> episode with Marvin Warble about:
<blockquote itemprop="description">
building a UI framework in Java, Web Components and Java 25
</blockquote>
is available for <a itemprop="url"  href="https://airhacks.fm/#episode_390">download.</a>
</article> </section>    <footer>        <div class="announcement">            <a href="https://airhacks.live">airhacks.live</a> workshops:            <ul>                <li><a href="https://airhacks.live">Spec-Driven Java Development at LLM Speed, 2 July 2026</a></li>                <li><a href="https://airhacks.live">LLM-Assisted Web Components: No Frameworks, No Dependencies, 16 July                        2026</a></li>                <li>                    <span class="light">NEW</span> MUC Airport <a href="https://airhacks.university">Architect-Grade Java with LLMs, 10 December 2026</a>                </li>            </ul>        </div>        <time datetime="3/24/26, 1:40 PM">🗓️ 3/24/26, 1:40 PM</time> by <span class="author"><a                href="https://about.adam-bien.com">Adam Bien</a></span> <span><a                href="https://linkedin.com/in/adam-bien"><img class="icon"                    src="http://adambien.blog/images/linkedin.png" /></a></span>        <!-- span>views: 0</span-->        </div>    </footer></article></main>    <footer><a href="https://adambien.blog/roller/">all posts 📚</a></footer></body></html>