Do you want to know how to develop your skillset to become a Java Rockstar?

Subscribe to our newsletter to start Rocking right now!

To get you started we give you our best selling eBooks for FREE!


1. JPA Mini Book

2. JVM Troubleshooting Guide

3. JUnit Tutorial for Unit Testing

4. Java Annotations Tutorial

5. Java Interview Questions


and many more ....



Microservices with Spring Boot, Axon CQRS/ES and Docker

In the last year or two, the pace of change in software architecture has rapidly advanced with new approaches like DevOps and Microservices becoming hot topics overnight. In this post, I want to introduce you to a project that I’ve been working on which combines two of the stand out architectural advances of the last few years: Microservices and the Command and Query Responsibility Separation ...

Read More »

JSON Web Tokens With Spring Cloud Microservices


At Keyhole, we have published several blogs about Microservices. We’ve talked about architectural patterns used in a Microservices environment such as service discovery and circuit breaker. We’ve even posted blogs on platforms and tools, such as the recent blog on Service Fabric. One important piece of the architecture that we have glossed over is the security around Microservices. Specifically, authentication ...

Read More »

Java Arrays Sort decoded

Sorting is one the first algorithm that we learn in computer science. Sorting is such an interesting area that it has around 20+ algorithm and it is always difficult to decided which one is best. Sorting algorithm efficiency is measured in terms of time taken & space required. Some time bubble sort is best because it has no space requirement and for ...

Read More »

Creating Value Objects with Immutables

In response to my recent post AutoValue: Generated Immutable Value Classes, Brandon suggested that it might be interesting to see how AutoValue compares to Project Lombok and Immutables and Kevin seconded this. I agree that this is a good idea, but I am first publishing this post as a brief overview of Immutables because I have already provided similar posts ...

Read More »

Thinking in Abstractions

Recent issues of the Clojure Gazette have been discussing abstractions, and it’s got me thinking. I am wary of needless abstractions and have seen many codebases, some of them I contributed to, that are essentially a mindless mess of half-backed abstractions. Here’s what I’m thinking … Abstractions have a half-life Abstractions have a half-life, that is to say, there will ...

Read More »

Java 8: Default Method Resolution Rules

With the introduction of default methods in Java 8, it is now possible for a class to inherit the same method from multiple places (such as another class or interface). The following rules can be used to determine which method is selected in such cases: A class or superclass method declaration always takes priority over a default method Otherwise, the ...

Read More »

Load balancing with Apache Camel

In this example we will show you how to use Apache Camel as a load balancer for your system. In computer world a load balancer is a device that acts as a reverse proxy and distributes network or application traffic across a number of servers. Load balancers are used to increase capacity (concurrent users) and reliability of applications. With the ...

Read More »

The Truth Behind the Big Exceptions Lie

Exceptions are probably the most misused Java language feature. Here’s why Let’s break some myths. There is no tooth fairy. Santa isn’t real. TODO comments. finalfinalversion-final.pdf. Soapless soap. And… Exceptions are in fact exceptions. The latter might need some more convincing, but we got you covered. For this post, we asked Avishai Ish-Shalom, an experienced systems architect and a longtime ...

Read More »

Ready, Fire, Aim: How most gather requirements

Connecting with your customers and delivering value depends on understanding your customer’s requirements and selling the correct product or solution that solves your customer’s problems. Commonly, the requirements gathering process is done hastily or not at all in the rush to get the sale. After all, the faster you can make the sales process go, the faster the money is ...

Read More »

Conjunctions we… hate

Recently I’ve written about implementation-related names and I’ve presented a few examples where the method name was incorrect because of its strong relation with the body. At one moment, we had the following code: boolean isComplexOrUnreadableWithTests() { return (complex || unreadable) && tests.exist(); } Just to remind you of the context: it was supposed to find out whether we may ...

Read More »

Want to take your Java skills to the next level?

Grab our programming books for FREE!

Here are some of the eBooks you will get:

  • Spring Interview QnA
  • Multithreading & Concurrency QnA
  • JPA Minibook
  • JVM Troubleshooting Guide
  • Advanced Java
  • Java Interview QnA
  • Java Design Patterns