Classloader Hierarchy

JVM Classloading

Java Byte-Code When you compile java-code (.java files and resources), the compiler will generate so-called byte-code (.class files, or packaged .jar files). This byte-code can’t be executed by the local operating system, but only by the Java Runtime Environment (JRE). The JRE is the environment where a Java Virtual Machine (JVM) runs. The benefits...

Inversion of Control – Part II – Dependency Injection

In the first part, I described what Inversion of Control (IoC) is and how it can be implemented using the classical GoF design patterns. In this post, I will explain another implementation of IoC: Dependency Injection. I assume that you are familiar with programming to an interface (or abstract class) rather than classes, as you...

Strategy Design Pattern

Inversion of Control – Part I

Why am I talking about Inversion of Control? I will use Spring (Boot) later on to build services. Spring is based on Dependency Injection. Dependency Injection is one possible implementation of Inversion of Control. Hence, it is reasonable to understand the basics of Inversion of Control (IoC) and how it can be implemented. Before...

Servlet Flow

What is a Servlet?

Introduction Java uses so-called Servlets as the component that handles a request from a user (or other systems) and generates a response based on the request. Although with frameworks like Spring MVC you might not deal with Servlets directly. However, it is useful to understand the underlying principles of a Servlet, as you will come...

Maven - Relationship between Lifecycle, Phases and Goals

Maven Overview

Introduction Maven is a build tool. A build tool automates processes related to building software. This can include compilation of the source-code (triggering) auto-generating (parts of) the code, e.g.with css generation of documentation packaging of the compiled-code generation of containers (e.g. a docker-container) deploying packages or containers on a remote server Installing Maven is...