Java 8

Operations in Java Streams

Reading Time: 3 minutes Hi guys, with release of Java 8 we get new features like lambda functions, streams etc. and in this blog we are going to have an overview of Streams.Streams reduces the effort for using and accessing the elements in any Collection. So here we will see what are different types of operation in Streams and when to use them. Streams Definition Streams are used when Continue Reading

Functional Java: It’s good to be lazy

Reading Time: 5 minutes In Java, we are often tempted towards writing a code which is executed eagerly. There’s a good reason for that – eager code is easy to write and to reason about. But delaying commitments until the last responsible moment is a good agile practice. When executing the code, we can gain performance by being just a little lazy.  In this blog, we will try to Continue Reading

Merge Lists of Map to Map, Java 8 Style!

Reading Time: 3 minutes Today, while doing my work and having fun programming, I came across a problem that looked pretty easy in the beginning, but after starting doing it, had to take help of Google and read from different sites to get to a nice implementation. So, let’s look at the problem and how to solve it. The Problem Well, you guys probably already have guessed what the Continue Reading

Java concurrency: Reentrant Locks

Reading Time: 3 minutes Hello readers! Welcome to another blog in the Java concurrency series. Today, we are going to look at the Reentrant Locks in Java. What it is, how to use it, and mainly, what is the difference between using Reentrant Locks and synchronization. So, let’s dive straight into it. Reentrant Locks Reentrant locks work just like the synchronized locks in java, but have much more facilities Continue Reading

How to deal with Inheritance while using Lombok builder

Reading Time: 2 minutes Today, I came across a problem and found a beautiful solution for it, which is pretty much straight forward, but the problem may occur to anyone while using the Lombok Library for java. So let’s look at the problem. The Problem I have a class Person, which consists of some fields. It is annotated with the @Builder annotation of lombok, so that lombok can generate Continue Reading

Basics of Streams In Java8

Reading Time: 2 minutes Streams are introduced in java 8. It is defined in java.util.stream package. A stream is sequence of objects which supports various methods. That can be pipelined to produce the result. Features of Stream Stream is not a data structure. It takes input from various sources (like array, collection, data structure) performs an operation and gives output. It does not store element. It does not change Continue Reading

Concurrency API

Guide to Java 8 Concurrency API using Executors

Reading Time: 3 minutes Working with the Thread class in Java can be very tedious and error-prone. Due to this reason, Concurrency API was introduced back in 2004 with the release of Java 5 and then enhanced with every new Java release.The API is located in package java.util.concurrent. It contains a set of classes that make it easier to develop concurrent (multithreaded) applications in Java.  The executor services are one of the most Continue Reading

Future vs CompletableFuture in Java- #2

Reading Time: 3 minutes In our previous blog – Future vs CompletableFuture – #1, we compared Java 5’s Future with Java 8’s CompletableFuture on the basis of two categories i.e. manual completion and attaching a callable method. Now, we will be comparing them on the basis of next 3 categories i.e. Combining 2 CompletableFutures together Combining multiple CompletableFutures together Exception Handling Let’s have a look at each one of Continue Reading

Future vs CompletableFuture in Java – #1

Reading Time: 4 minutes This is Part 1 of Future vs CompletableFuture. In this blog we will be comparing Java 5’s Future with Java 8’s CompletableFuture on the basis of two categories i.e. manual completion and attaching a callable method. What is CompletableFuture? CompletableFuture is used for asynchronous programming in Java. Asynchronous programming is a means of writing non-blocking code by running a task on a separate thread than Continue Reading