Tips for Using IntelliJ IDEA Effectively [Video]

I wanted to share my tips and tricks that and especially some keyboard shortcuts that make me more productive when using IntelliJ IDEA. IntelliJ is my favorite IDE and a very well-thought-out program in general, and despite trying to learn the countless shortcuts available, there are a few that give you the biggest productivity boost already.

My frequently used features and shortcuts that I showed in the video are:

Global gitignore [Code Snippet]

Let's learn more about global gitignore, a widely used Git feature that allows files to be ignored within the Git repository.

Global gitignore

A widely used Git feature is to use local .gitignore files which list which names and patterns of files and directories will be ignored within the Git repository.

Thoughts on Efficient Enterprise Testing (Part One)

Multitasking is the MOST efficient.


Testing in the enterprise is still a topic that is not as extensively used as it should be. Writing and especially maintaining tests takes time and effort, however, cutting short on software tests can’t be the solution. Which scopes, approaches, and test technology should be pursued in order to make testing more efficient?

Thoughts on the Jakarta EE Package Name Change

The Eclipse Foundation announced that Jakarta EE cannot continue to use the javax package name. Apparently, this comes with the fact that while Java EE is based on this name, no further modifications are allowed to classes or packages starting with that name.

While this is certainly bad news, for me, the bad news already started when it was announced that Jakarta EE can’t use the javax name for new specifications and sub-packages. That would have already meant continuing to evolve a platform that becomes more inconsistent over time.

Hot-Deploying Java Enterprise With WAD and Docker [Video]

I’ve recorded a video on how to minimize the development turnaround times with Watch and Deploy (WAD) by Adam Bien and Docker containers. The WAD tool watches for file changes and will re-build and re-deploy our applications to an auto-deployment directory. We’ll see how that approach can be integrated into containers that are created by the same Docker images that run in production.

Besides the news around the fast turnaround with Quarkus, which is a very interesting project, it’s possible to have a good development experience solely with Java EE and application servers that deploy quickly. The WAD tool watches for any changes that we make in the project and re-deploys our applications. If you run your application in Docker containers, you can and, in fact, should use the same Docker image locally that you will later run in production.

Thoughts on Quarkus

Quarkus, the new “supersonic, subatomic” Java framework is currently getting a lot of attention. The ideas behind this build and runtime tool are indeed more than interesting for the future of enterprise Java. What are the benefits and shortcomings of using Quarkus? Let's find out.

Getting Rid of Dynamics

Quarkus takes the reasoning that most of the dynamics of an enterprise Java runtime is not really required in a containerized world. Once you build your application to a container image, the functionality is usually not supposed to change. All of the dynamics that an enterprise container brings allows for very powerful and flexible programming and deployment models, but once our applications have been started inside containers, they typically don’t change anymore.

Applying Bulkheads and Backpressure Using MicroProfile (Video)

I’ve recorded a video on how to implement bulkheads and backpressure using MicroProfile Fault Tolerance. The idea behind bulkheads is to split applications into several execution units that isolate functionality. In enterprise Java applications, this typically means defining multiple thread pools.

Applying backpressure to clients results in either adding information about the current pressure on the system to the client so that they will react to it, or to explicitly deny the request with a temporary error response.

Discover Applications Running on Kubernetes With Prometheus

Prometheus supports scraping multiple instances of an application. Applications that run in orchestrated environments require being discovered dynamically since their IP addresses will change. Prometheus can be configured to use the Kubernetes API to discover changes in the list of running instances dynamically.

The following shows a minimalistic Prometheus example of instrumenting an application with multiple pod instances.