Practical lessons on Java, Spring, resilient systems, developer tooling and the changing economics of software engineering.

Big things have small beginnings: taking Java from small to big with JBang

🎯 Featured Article

🌱 Big things have small beginnings: taking Java from small to big with JBang JBang shows how Java programs can grow from simple scripts to larger applications without requiring Maven or Gradle from the start.

  • JBang makes Java scripting practical with minimal project setup.
  • Maven and Gradle remain choices rather than mandatory starting points.

⏩ TL;DR (Quick Recap)

  • JBang simplifies the path from small Java scripts to larger programs.
  • JDK 28 previews identity-free value objects through Project Valhalla.
  • Spring teams can improve RAG filtering, idempotency and batch transformations.
  • AI tooling changes development workflows, but does not remove engineering complexity.

☕ JVM Corner

🔭 Hacking in the nameOf A bytecode-introspection experiment demonstrates how a nameOf-style expression could be implemented in Java.

  • Bytecode introspection can recover information unavailable directly in Java syntax.
  • The technique demonstrates a possible approach to nameOf semantics.

Introducing Apache Fory™ JSON: Blazingly Fast JSON Serialization for Java Apache Fory JSON provides Java-to-JSON serialization with support for JDK 8+, Android and GraalVM Native Image.

  • Published benchmarks report higher throughput than Jackson and Gson.
  • The framework supports both standard JSON text and UTF-8 bytes.

🧬 Project Valhalla’s First Preview: JEP 401 Redefines == for Java Objects
JEP 401 previews identity-free Java value objects, laying groundwork for flatter and potentially allocation-free representations.

  • Value objects contain only final fields and have no object identity.
  • The preview requires --enable-preview during compilation and runtime.

🗺️ When Escape Routes Become Toll Roads: Mapping How Developers Move Between Programming Languages JetBrains examines why developers change languages, including notable migration patterns involving Java, Kotlin, Python and TypeScript.
📦 Reflecting on STF support and looking ahead — Reviews 16 months of Sovereign Tech Fund support and the resulting work on JUnit sustainability.

🍃 Spring Updates

🧠 Spring AI Recipe: Filtering RAG Results with Metadata Metadata filtering narrows Spring AI RAG searches before irrelevant context reaches the language model.

  • Metadata can constrain vector searches beyond semantic similarity.
  • Early filtering reduces irrelevant context supplied to the LLM.

🔁 Idempotent REST Endpoints Without the Boilerplate An idempotent Spring Boot starter packages request deduplication so repeated POST requests can be handled consistently.

  • Idempotency keys protect against retries and duplicate submissions.
  • A starter reduces repeated implementation work across endpoints.

🦆 DuckDB in Spring Batch: Replace In-Memory Java Loops with One SQL Statement DuckDB moves batch transformations from row-by-row Java loops into vectorized SQL processing inside the JVM.

  • DuckDB provides an embedded analytical engine through JDBC.
  • Vectorized queries can replace costly per-row transformation loops.

🔍 Extra Reads

AI Engineering and Developer Productivity
🧮 The Economic Benefit of Refactoring — Refactoring becomes an important economic consideration as agentic engineering increases code production.
🗣️ Don’t be a meat proxy — Passing raw LLM responses between people adds little value when the recipient can query the model directly.
🧑‍💻 “Code was never the hard part” is an insult to all programmers — The article challenges the claim that programming is merely the easy implementation step of software development.
🧩 The Prototype Isn’t the Product — AI-generated prototypes still require engineering for reliability, security, data modeling, and production operation.
🌱 Pi’s Minimalism Is Its Advantage — A minimalist approach to AI tooling contrasts with increasingly complex prompts and orchestration layers.

Intellij IDEA Productivity
🧰 How to Use AI Agents in IntelliJ IDEA With ACP —The Agent Client Protocol to connect its workflow with multiple compatible AI agents.
Top 5 AI Features in IntelliJ IDEA — AI into editing, code generation, explanations, stack traces and commit workflows.
🧱 Agent Skills in IntelliJ IDEA — Agent Skills give AI agents additional capabilities and project-specific knowledge for development tasks.

Resilience, Operations, and Maintainability
⏱️ Beyond Happy Path Engineering: Time — Production systems must account for delays, retries, outages and dependencies that do not behave ideally.
🚨 Notes on incidents — Incident response often involves waiting for investigations, deployments, dependencies and changes to produce observable results.
🔧 Use Task Runners for Common Coding Tasks — Task runners provide a consistent way to automate recurring development commands across repositories.
🧪 Blog about things you don’t understand yet — Writing becomes a learning mechanism by forcing deeper investigation into unfamiliar technical subjects.

Open Source, Infrastructure, and Systems
🧑‍🔧 Devtools must be open source — AI agents reduce the cost of customizing developer tools while making upstream synchronization more practical.
📱 my server is a phone now — A rooted CMF Phone 1 becomes the host for personal infrastructure and home services.
🗄️ We replaced Redis with MySQL for inventory reservations — and it scaled — Shopify describes using SKIP LOCKED, composite keys and connection visibility to scale inventory reservations.

Originally posted on marconak-matej.medium.com.