Skip to main content

Java

WebAssembly as an embedding layer for the JVM ecosystem: models, runtimes, and engineering leverage

WebAssembly as an embedding layer for the JVM ecosystem: models, runtimes, and engineering leverage

·2038 words·10 mins
WebAssembly is not only compact bytecode in the spec—it is an execution model that pins guest modules to host boundaries. Running Wasm on the JVM forces trade-offs between attaching native runtimes versus pure bytecode hosting for distribution, observability, and fault isolation; Chicory, QuickJS4J, OPA Wasm, protobuf4j, Lumis4j, and related stacks illustrate one idea from many angles—wrapping existing C/Rust/JS assets in versioned artifacts exposed through Java APIs to Spring Gateway, build plugins, or CLIs.
Supercharging Spring Boot Tests with Kotlin Expressiveness: Assertions, Fixtures, and Reactive Boundaries

Supercharging Spring Boot Tests with Kotlin Expressiveness: Assertions, Fixtures, and Reactive Boundaries

·1833 words·9 mins
Spring Boot and Kotlin interoperate maturely on the JVM; teams often introduce Kotlin first in src/test, applying extension functions, default parameters, type-safe DSLs, and assertion styles such as Kotest in integration tests and MockMvc scenarios to cut boilerplate and tighten failure messages. Meanwhile, Java builders, overloaded static helpers, and Project Reactor’s StepVerifier each carry their own cognitive cost; the article organizes common motivations by dependency layer, alignable public APIs, and semantic boundaries to watch (e.g. JVM type erasure, whether reactive verification truly completes subscription).
Spring Boot 4 Stack Overview: Starter Granularity, MVC Version Negotiation, and Security Evolution

Spring Boot 4 Stack Overview: Starter Granularity, MVC Version Negotiation, and Security Evolution

·1854 words·9 mins
With Spring Boot 4 and Spring Framework 7, dependencies split into finer starters by capability; outbound HTTP clients can be isolated from server-side MVC. The same codebase can enable built-in API version negotiation in Spring MVC alongside Spring Data JDBC and RestClient / declarative @HttpExchange clients. Spring Security 7 emphasizes composable Customizer<HttpSecurity>, one-time token login, WebAuthn, and annotation-driven multi-factor authentication.
Gradually Adopting Spring Boot for Legacy Servlet Apps: Build, Auto-Configuration, and Dual WAR Modes

Gradually Adopting Spring Boot for Legacy Servlet Apps: Build, Auto-Configuration, and Dual WAR Modes

·2089 words·10 mins
Before a large-scale Spring Boot migration, establish repeatable integration verification and a controlled dependency baseline; then advance in layers—Starter, auto-configuration troubleshooting, Spring context inside an external container, transitional Holder, beanification, Servlet annotation migration, and executable WAR. The article is organized by dependency and runtime layers, contrasts demo-style bootstrap paths with the reference manual’s recommended path, and where official docs do not spell out behavior (for example process lifecycle when only a non-web context starts), leaves engineering-level uncertainty explicit.
AI Coding Agents on Spring Projects: Live Pipelines, Verifiable Loops, and Context Governance

AI Coding Agents on Spring Projects: Live Pipelines, Verifiable Loops, and Context Governance

·2826 words·14 mins
For engineers already shipping services on the JVM and web stacks, this article starts from a typical Spring Boot + Kotlin real-time interactive application, traces the data path from database signals through reactive SSE to the browser, and breaks human–agent collaboration into three verifiable layers: compile-and-test closure, versioned project memory (CLAUDE.md, rules, Skills), and Hooks plus MCP on the tool-call path. The second half covers gaps in tests and state machines caused by spec-less iteration, how structured clarification (Interview) writes navigation and security decisions into the specification, and how cross-cutting steps can be silently dropped in long conversations—with ideas for segmented execution.
A Brief Look at JEP - JEP-502: Stable Value (Preview)

A Brief Look at JEP - JEP-502: Stable Value (Preview)

·2181 words·5 mins
An exploration of JEP 502’s StableValue API, which addresses the fundamental trade-off between immutability and initialization flexibility in Java. This article covers the API design, core implementation details including double-checked locking patterns, memory semantics, and JIT optimization strategies using the @Stable annotation.
Why HeapDumpOnOutOfMemoryError Should Be Avoided in Production

Why HeapDumpOnOutOfMemoryError Should Be Avoided in Production

·702 words·4 mins
A comprehensive guide exploring why enabling HeapDumpOnOutOfMemoryError can cause significant performance issues in production environments, which OutOfMemoryError types actually trigger heap dumps, and better alternatives like JFR for memory leak detection and automatic service restart strategies.
JDK Tough Way - 4. The Most Detailed JVM Memory Structure Analysis

JDK Tough Way - 4. The Most Detailed JVM Memory Structure Analysis

·23344 words·110 mins
A comprehensive deep-dive into JVM memory architecture covering heap memory, metaspace, thread stacks, and compressed object pointers. This technical analysis examines memory allocation processes, Native Memory Tracking, and provides practical examples using tools like jol, jhsdb, and JFR for understanding JVM memory management internals.
JDK Tough Way - 2. A Complete Guide to Java's PRNG Evolution

JDK Tough Way - 2. A Complete Guide to Java's PRNG Evolution

·4435 words·21 mins
A comprehensive exploration of pseudo-random number generators in Java, covering everything from basic Linear Congruential algorithms to advanced LXM implementations in Java 17. Learn about algorithm performance, security considerations, and how to choose the right random number generator for your specific use case.
Troubleshooting a SSL Performance Bottleneck Using JFR

Troubleshooting a SSL Performance Bottleneck Using JFR

·395 words·2 mins
In-depth analysis of a microservice performance issue with CPU spikes and database connection anomalies. Through JFR profiling, we discovered the root cause was Java SecureRandom blocking on /dev/random and provide solutions using /dev/urandom.