148th airhacks tv: Spec-Driven Development, BCE in Large Projects, Lightmetal, Agents, Java Scripting 📎
- Spec-Driven Development (SDD) on top of the Boundary Control Entity (BCE) pattern
- why decades-old, well-documented BCE (traced to Objectory, 1992) lets LLMs generate lean, idiomatic code
- SBCE as a single ~180-line text-file skill with "new" and "apply" actions, no CLI, no binary dependencies
- the spec is "done" when all tests are green
- inversion of control: tech stacks (Java CLI, MicroProfile server, web components, web static) declare participation, SBCE knows nothing about them
- a business component is a package in Java and a folder on the web
- exclusive reliance on open, crawlable standards: MicroProfile, Jakarta EE, BCE, JSRs, JAX-RS, EARS requirement syntax from Rolls-Royce
- token economy via convention over configuration: reported 30-80% savings vs generic spec-kit / OpenSpec
- package-info.java as the only coupling to the SDD process, specs living in Javadoc rendered via JMarkDoc
- traceability between EARS requirements and generated tests
- live demo: a Quarkus MicroProfile "episodes" component generated with SBCE new + apply, producing records, JAX-RS resources, resource clients and integration/system tests with requirement markers
- live demo: a web static airhacks.tv episodes site built with BCE and static pages
- standards-based CSS with custom properties / design tokens and Google Baseline, served by a zero-dependency ~60-line Java 25 web server
- answering an 8-year-old ECB question from 2018 (episode 48) live via an LLM
- Time Machine: revisiting ECB/BCE, JSF status, JSON-B vs JSON-P (preferring JSON-P with LLMs), Kafka / CQRS / event-driven architecture, closing JDBC connections back to the pool, and Light4J still going strong after ~10 years
- where to put exceptions, repositories and utility classes in BCE: inside the owning business component, JAX-RS WebApplicationException subclasses, a project-wide "faults" package only if genuinely needed
- BCE scales horizontally as a flat list of business components
- BCE works with other languages, but LLMs generate Java more reliably (Tencent study)
- keeping command line Maven as source of truth and upgrading the VS Code Java runtime to Java 25
- CQRS / event-driven use cases: Kafka streams from wearables, DynamoDB streams and materialized views
- a minimal event-listening router as a Vaadin Router replacement
- local inference with Light Metal (Llama.cpp + Java 25, zero dependencies) running Nemotron and Gemma, with "lm list/prompt/serve" exposing OpenAI/Anthropic-compatible APIs
- zsmith: a pure Java 25 agent framework with virtual-thread sub-agents and JFR events (viewable in JProfiler or JDK Mission Control), connecting to Claude, OpenAI, Bedrock and Light Metal
- LLM-assisted legacy migration to Java 25 using SDD, OpenRewrite and BCE
- skills downloadable as a zip, installed via a Java 25 script, no Node.js required
Ask questions during the show via twitter mentioning me: https://twitter.com/AdamBien (@AdamBien),using the hashtag: #airhacks or built-in chat at: airhacks.tv. You can join the Q&A session live each first Monday of month, 8 P.M at airhacks.tv