Money looks simple until a single cent sneaks away and your numbers do not match the bank. Java gives you many ways to represent it, some friendly, some dangerous. Let us talk about precision, rounding, and reality so your totals land exactly where your accountant expects. Precision beats convenience Floating…
Category: Software Architecture
System design patterns, architectural decisions, and scalability strategies. Building robust, performant systems that stand the test of time.
Life on the JVM: Choosing a Second Language
Do you really need a second language on the JVM or is plain Java enough for the work you do today? If you picked Java because it runs everywhere and there is a library for almost everything, that logic still holds. The twist is that Java 8 is here with…
JVM Concurrency Models: Lessons Across Languages
We build on the JVM because it is everywhere, runs fast enough, and lets us pick a language that fits our brain. The hard part is not syntax. The hard part is concurrency. Threads, actors, futures, channels, streams. Each one promises less pain, more throughput, fewer late night pages. Today…
Interoperability on the JVM: Practical Pitfalls
“Interoperability is where bright ideas meet old decisions.” Working on the JVM feels like living in a crowded apartment with great roommates who forget to wash the dishes. You get Java 8 lambdas, a bit of Scala sugar, some Groovy tests, maybe a Clojure script to poke a service. Everything…
Stubs, Fakes, and Mocks in Java
Stubs, fakes, and mocks are the unsung helpers behind green bars in JUnit. They keep tests fast, focused, and fearless. If your tests feel slow or fragile, odds are your doubles are doing the wrong job. Java 8 is rolling across teams, JUnit 4 is still the default, and Mockito…
Testing with Spring: Fast Feedback for Big Systems
Coffee, a red build, and the twenty minute wait Friday night deploy. Fresh coffee. One scary log line. We rolled back in time, but the worst part was not the bug. It was the twenty minute test run to learn what we already suspected. Big Spring apps can feel like…
Scaling Jackrabbit: Clustering Basics
When your content repo starts panting in production, Apache Jackrabbit usually gets blamed first. In truth, scaling Jackrabbit is less about magic flags and more about a few non negotiable basics. Clustering gets you headroom, but only if the pieces are in the right places. Before we jump in, context…
Lazy Loading Explained: Performance without Surprises
Lazy loading sounds like free speed until it bites you in production. Let’s walk through Hibernate lazy loading so your pages feel fast without waking up a surprise army of queries. Everyone is chasing snappy pages this week. My feed is full of folks playing with Java 8 and new…
Spring Boot Quick Starts: Convention without Regret
Spring Boot just went GA and it feels like a breath of fresh air. If you have ever spent a morning wiring servlets, a lunch break fighting XML, and an afternoon chasing one missing component scan, you know the feeling. Today we can spin apps that start fast, ship as…
Java Arrives: Lambdas for the Rest of Us
I was staring at a class with four nested anonymous listeners and a for loop inside a for loop. Coffee went cold while I tried to explain to a teammate why the code worked and why it still felt wrong. Then Java 8 dropped. We rebuilt that same logic with…