A debugger is a powerful tool that allows you to easily inspect the program state in a step-by-step manner. We Java developers are used to debugging programs with the IDE debugger when facing a bug or if we just want to understand how the application works and behaves. Well, that’s if you were able to […]
In this blog post, we will see how jasper reports work and showcase how you can generate pdf reports using Jasper Studio and the Jasper Reports Java library.
A null value can appear anywhere in a Java application.In this post, we’ll see how to work with data you control as well as data you don’t. We’ll also discuss how we can use annotation libraries like JSR 380, Spring annotations, Lombok, and some patterns to handle null values.
Initially, JCP (Java Community Process) started developing JPMS(Java Platform Module System) in 2006 as JSR 277, and it was scheduled to be released in Java 7. But for some reason, it wasn’t. In 2008, this JSR was dropped and replaced by JSR 376 under the umbrella of project Jigsaw. Eventually, it was released in Java […]
Since Java 8, Oracle completely rebuilt its Date/Time API. The new API is supposed to replace the old one. The new API which is located in the java.time package is thread-safe because most of the new classes are immutable, meaning that, after the object is constructed, it cannot be modified. This is especially useful when […]
Specifying the generic type allows Java to perform type checking at compile-time. But when using generics in your code, due to “Type Erasure” that occurs at compile-time, generic type parameters are converted to the Object type. This makes generic type parameters unable to call other methods except for the Object ones. What if we want […]
What is Thread safety? To save you the time from looking up to Wikipedia here is the definition: Thread safety is a computer programming concept applicable to multi-threaded code. Thread-safe code only manipulates shared data structures in a manner that ensures that all threads behave properly and fulfill their design specifications without unintended interaction. What […]
The strategy design pattern is one of the most widely used patterns in the software development world. In this article, we’re going to learn about the strategy design pattern, when to use it, when not, how we can leverage the pattern to make our design flexible? And we are going to see an example of […]
When working with custom objects, we often want to compare them based on some pre-defined criteria. That’s why we use the Comparable interface to implement a natural ordering for our custom objects. Also, we often need to specify a total ordering if there is no natural ordering implemented by our custom object or override the […]
In this article, we’re going to take a peek at Maven Build Profiles. Build profiles are often underestimated yet they have a lot of capabilities, and we are going to explore some of its capabilities. How we can use it? how we can leverage build profiles to make our build flexible?