How to Ensure Your Code Works With Older JDKs

jOOQ is a very backwards compatible product. This doesn't only mean that we keep our own API backwards compatible as well as possible, but we also still support Java 6 in our commercial distributions. In a previous blog post, I've shown how we manage to support Java 6 while at the same time not missing … Continue reading How to Ensure Your Code Works With Older JDKs

Avoid Recursion in ConcurrentHashMap.computeIfAbsent()

Sometimes we give terrible advice. Like in that article about how to use Java 8 for a cached, functional approach to calculating fibonacci numbers. As Matthias, one of our readers, noticed in the comments, the proposed algorithm may just never halt. Consider the following program: public class Test { static Map<Integer, Integer> cache = new … Continue reading Avoid Recursion in ConcurrentHashMap.computeIfAbsent()

Let’s Stream a Map in Java 8 with jOOλ

I wanted to find an easy way to stream a Map in Java 8. Guess what? There isn't! What I would've expected for convenience is the following method: public interface Map<K, V> { default Stream<Entry<K, V>> stream() { return entrySet().stream(); } } But there's no such method. There are probably a variety of reasons why … Continue reading Let’s Stream a Map in Java 8 with jOOλ

We’re Hacking JDBC, so You Don’t Have To

We love working with JDBC Said no one. Ever. On a more serious note, JDBC is actually a very awesome API, if you think about it. It is probably also one of the very reasons Java has become the popular platform it is today. Before the JDK 1.1, and before ODBC (and that's a very … Continue reading We’re Hacking JDBC, so You Don’t Have To

Java Rocks More Than Ever

On the TIOBE index, Java and C have been sharing the #1 and #2 rank for a long time now, and with the recent GA release of the JDK 8, things are not going to get any worse for our community. Java simply rocks! And it's the best platform to build almost any of your … Continue reading Java Rocks More Than Ever

When All Else Fails: Using “the Unsafe”

Sometimes you have to hack. You just have to. Don't listen to XKCD. You don't always regret hacking. On our blog, we've shown a couple of hacks before: Throw checked exceptions like runtime exceptions in JavaA dirt-ugly hack to modify private final fields in Java But we've just been scratching the surface. Our friends at ZeroTurnaround / … Continue reading When All Else Fails: Using “the Unsafe”

How to Design a Good, Regular API

People have strong opinions on how to design a good API. Consequently, there are lots of pages and books in the web, explaining how to do it. This article will focus on a particular aspect of good APIs: Regularity. Regularity is what happens when you follow the "Principle of Least Astonishment". This principle holds true … Continue reading How to Design a Good, Regular API