back

Java

A programming language commonly used as a solution to everything and anything.
Cloneable, a Java design gotcha
Some time ago, I described a couple of surprising design choices in the JDK functional interfaces API. Lately, during a lesson, a student of mine proposed to shallow-copy an ArrayList by using th...
A Java Geek
Learning Clojure: dependent types and contract-based programming
This part is the 4th in a serie dedicated to learning the Clojure JVM language. Previous posts include: Coping with dynamic typing, The arrow and doto macros and Dynamic dispatch. While describing ...
A Java Geek
Listing annotated classes in Java EE
The Java EE platform is huge, and I must confess I'm not aware of every one of its API. This is also true of the Spring framework, even though I think I know more of Spring than of Java EE. Lately,...
A Java Geek
Learning Clojure: comparing with Java streams
In general, one learns by comparing to what one already knows: I'm learning Clojure in that way. Coming from a Java background, I naturally want to use streaming features. So, what would be the Clo...
A Java Geek
The Builder pattern is a finite state machine!
Some weeks ago, I read the post referenced in a tweet. In short, the article provides two ways to generate the boilerplate code required by the Builder pattern: Lombok, to generate code at compile ...
A Java Geek
Feedback on Learning Clojure: comparing with Java streams
Coming from a Java background, I'm currently trying to learn the Clojure programming language, with the help of online resources and mentorship. Some weeks ago, I tried to wire things together by t...
A Java Geek
Kotlin, collections and sequences
When streams were added to Java 8, I wanted to jump on the bandwagon. I read blog posts, watched videos, attended workshops to understand what this was all about. After a while, I became comfortabl...
A Java Geek
Beware the Attach API
A post brought to light an interesting feature of the JDK I didn’t know about: the ability to update a code running in a JVM. The referenced post shows how to apply a bugfix using that feature. T...
A Java Geek
Limits of programming by interface
One of the earliest and most fundamental principle one learns while coding is programming by interface. Definition Interface-based programming defines the application as a collection of compo...
A Java Geek
Learning Clojure: dynamic dispatch
This post is part of a serie on learning the Clojure language. A common pattern in software development is the dynamic dispatching (or routing) table. The table is responsible for returning the rel...
A Java Geek
Back to basics: Dependency Injection
After years of near-ubiquitous usage of Dependency Injection, I see more and more posts and talks questioning its value. Some even go to the point where they argue against it. Most of it however is...
A Java Geek
Default methods in Java 8, and what it changes in API design
Java 8 introduced default methods in interfaces. This post describes what they are, and how they can change the design of APIs. A nominal design Earlier, in Java, interfaces could only have con...
A Java Geek