We're very happy to announce a guest post on the jOOQ Blog written by Daniel Dietrich, Senior Software Engineer at HSH Nordbank, husband and father of three. He currently creates a pricing framework for financial products as project lead and lead developer. Besides his work, he is interested in programming languages, efficient algorithms and data … Continue reading Functional Programming in Java 8 with vavr
Category: java 8
How to FlatMap a JDBC ResultSet with Java 8?
You're not into the functional mood yet? Then the title might not resonate with you - but the article will! Trust me. Essentially, we want this: +------+------+------+ | col1 | col2 | col3 | +------+------+------+ | A | B | C | row 1 | D | E | F | row 2 | G … Continue reading How to FlatMap a JDBC ResultSet with Java 8?
How to Use Java 8 Streams to Swiftly Replace Elements in a List
Imagine you have a list of items: List<String> books = Arrays.asList( "The Holy Cow: The Bovine Testament", "True Hip Hop", "Truth and Existence", "The Big Book of Green Design" ); (Don't judge me. Books from this random book generator) Now you'd like to create a new list where the third item only is replaced by … Continue reading How to Use Java 8 Streams to Swiftly Replace Elements in a List
Hack up a Simple JDBC ResultSet Cache Using jOOQ’s MockDataProvider
Some queries shouldn't hit the database all the time. When you query for master data (such as system settings, languages, translations, etc.), for instance, you may want to avoid sending the same silly query (and the results) over the wire all the time. For example: SELECT * FROM languages Most databases maintain buffer caches to … Continue reading Hack up a Simple JDBC ResultSet Cache Using jOOQ’s MockDataProvider
One Year After Java 8’s Release, IDEs and Compilers are not Fully Ready Yet
One year ago, on March 18, 2014, Java SE 8 was released, and with it, the bliss of functional programming through lambda expressions and the streams API. These were great news for all of our Java ecosystem, and many people have already upgraded to Java 8. Stack Overflow already yields almost 2500 questions about Java … Continue reading One Year After Java 8’s Release, IDEs and Compilers are not Fully Ready Yet
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()
Top 10 Easy Performance Optimisations in Java
There has been a lot of hype about the buzzword "web scale", and people are going through lengths of reorganising their application architecture to get their systems to "scale". But what is scaling, and how can we make sure that we can scale? Different aspects of scaling The hype mentioned above is mostly about scaling … Continue reading Top 10 Easy Performance Optimisations in Java
You Will Regret Applying Overloading with Lambdas!
Writing good APIs is hard. Extremely hard. You have to think of an incredible amount of things if you want your users to love your API. You have to find the right balance between: Usefulness Usability Backward compatibility Forward compatibility We've blogged about this topic before, in our article: How to Design a Good, Regular … Continue reading You Will Regret Applying Overloading with Lambdas!
How to Translate SQL GROUP BY and Aggregations to Java 8
I couldn't resist. I have read this question by Hugo Prudente on Stack Overflow. And I knew there had to be a better way than what the JDK has to offer. The question reads: I'm looking for a lambda to refine the data already retrieved. I have a raw resultset, if the user do not … Continue reading How to Translate SQL GROUP BY and Aggregations to Java 8
Using Java 8 to Prevent Excessively Wide Logs
Some logs are there to be consumed by machines and kept forever. Other logs are there just to debug and to be consumed by humans. In the latter case, you often want to make sure that you don't produce too much logs, especially not too wide logs, as many editors and other tools have problems … Continue reading Using Java 8 to Prevent Excessively Wide Logs
