122 Posted Topics

Member Avatar for dimitrilc

## Introduction ## In Java, a common way to express a type that is a combination of two or more types is to just create an interface that extends the other types. The problem with this approach is that your code might be littered with interface declarations, polluting your code …

2
195
Member Avatar for dimitrilc

## Introduction ## In Kotlin, we can extend classes without subclassing via extension functions and extension properties. This feature is useful whenever we want to extend 3rd party libraries or final classes. In this tutorial, we will learn what extension functions and extension properties are, and how to create our …

2
301
Member Avatar for dimitrilc

## Introduction ## `launch()` and `async()` are two of the most common coroutine builders to use in Kotlin, but they are somewhat different in usage. `launch()` returns a `Job` object, which can be used to cancel or perform other operations on the underlying coroutine. If our coroutine lambda returned a …

3
367
Member Avatar for dimitrilc

## Introduction ## In this tutorial, we will look at the RxJava `mergeWith()` and `concatWith()` operators. Amongst others, they are used to combine Observables together. All of the RxJava operators have ambiguous names, and behave differently, so let us take a look at 2 operators, `mergeWith()` and `concatWith()`, to see …

3
1K
Member Avatar for dimitrilc

## Introduction ## RxJava 3 includes 5 core classes: 1. Flowable, 2. Observable, 3. Single, 4. Completable, 5. Maybe. This tutorial aims to teach the basic concepts behind Observable, which serves as a foundation for understanding the other 4 classes. ## Goals ## At the end of the tutorial, you …

3
2K
Member Avatar for dimitrilc

## Introduction ## With coroutines in Kotlin, we are able to execute suspending functions without blocking the current thread. By default, most coroutine builder functions use the `Dispatchers.Default` context, but it is also possible to use other implementations of `CoroutineContext`. In this tutorial, we will learn about the 2 `CoroutineDispatchers`: …

3
156
Member Avatar for dimitrilc

## Introduction ## The `java.nio.file.Files` class includes many convenient methods to read file attributes, but sometimes these convenient methods just are not enough to meet our needs. In this tutorial, we will go over 5 ways to use the `Files` class to read file attributes so you can choose the …

3
298
Member Avatar for dimitrilc

## Introduction ## When working with an application with a global user base, there is usually a need to display text, numbers, currency, date, and time in multiple localized formats. For example, the **en-US** (*English-USA*) version of the date September 22, 2021 is written as 22 сентября 2021 г. when …

3
214
Member Avatar for dimitrilc

## Introduction ## Although not included in the headlines, the release of JDK 17 also added 3 sets of new methods to the class `java.lang.Process`: 1. `inputReader()` to read from stdout. 2. `inputWriter()` to write to stdin. 3. `errorReader()` to read from stderr. In this tutorial, we are going to …

3
1K
Member Avatar for dimitrilc

## Introduction ## In Android development, the current recommended library for Dependency Injection is Hilt. The most obvious benefits of using Hilt are reduced boilerplate code and lifecycle-aware components(*and their associated annotations*). Hilt is a great library, but it is not perfect. Hilt is built on top of Dagger 2, …

2
1K
Member Avatar for dimitrilc

## Introduction ## In Java 8, `@Repeatable` was introduced and this is the recommended way to create repeating annotations. We still have to create a holder Annotation(*annotation that holds an array of other annotations*), but we no longer have to declare the holder Annotation at the callsite. This tutorial aims …

3
299
Member Avatar for dimitrilc

## Introduction ## Java 15 introduced Text Blocks. The main reason behind Text Blocks is that programmers can write multiline strings without having to specify escapes for the most common scenarios. ## Goals ## At the end of this tutorial, you would have learned: 1. How to store multiline String …

Member Avatar for JamesCherrill
2
164
Member Avatar for dimitrilc

## Introduction ## Before Java 8, methods had to throw an exception or return `null`, with neither of which approaches were perfect. Optional, OptionalInt, OptionalLong, and OptionalDouble were introduced in Java 8 to represent values that might possibly be `null`. Optionals have two internal states, **empty** or **present**. An Optional …

Member Avatar for JamesCherrill
2
2K
Member Avatar for dimitrilc

## Introduction ## There are many ways to design secure Java objects. In this tutorial, we are going to learn how to create secure Java objects by understanding **Accessibility**, **Extensibility**, and **Immutability**. ## Goals ## At the end of this tutorial, you would have learned: 1. Understand how and why …

Member Avatar for JamesCherrill
2
177
Member Avatar for dimitrilc

## Introduction ## In this tutorial, we will focus on how to manage IO permissions to read, write, and delete local files using the `SecurityManager` class. ## Goals ## At the end of this tutorial, you would have learned: 1. What policy files are and how to use them. 2. …

2
333
Member Avatar for dimitrilc

## Introduction ## Java 14 was released with a new type of expression called Switch Expression. Its syntax is similar to that of the Switch Statement, with a few differences. In this tutorial, we will walk through concepts related to the Switch Expression and learn how to use it. ## …

3
131
Member Avatar for dimitrilc

## Introduction ## In this tutorial, we are going to learn how to create a Java module by hand. ## Goals ## At the end of this tutorial, you would have learned: 1. What a `module-info.java` file is. 2. How to compile a module. 3. Describing a module. ## Prerequisite …

2
136
Member Avatar for dimitrilc

## Introduction ## This tutorial introduces the `CyclicBarrier` class and teaches you how to use it. ## Goals ## At the end of this tutorial, you would have learned: 1. How to use `CyclicBarrier` to synchronize tasks across multiple threads. ## Prerequisite Knowledge ## 1. Intermediate Java. 2. Basic knowledge …

3
171
Member Avatar for dimitrilc

## Introduction ## `partitioningBy()` collects a `Stream` into a `Map`. In this tutorial, we will compare the two different `partitioningBy` methods and learn how to use them. ## Goals ## At the end of this tutorial, you would have learned: 1. What `Collectors.partitioningBy` does and how to use it. ## …

3
230
Member Avatar for dimitrilc

## Introduction ## Based on the 2020 Java Ecosystem survey from Jetbrains, 75% of Java developers are still using JDK 8. JDK 11 introduces `HttpClient`, which replaces the legacy `HttpURLConnection` API. For this tutorial, we will build a `HttpClient` that consumes the free Cat Facts API. ## Goals ## At …

Member Avatar for JamesCherrill
3
480
Member Avatar for dimitrilc

## Introduction ## This tutorial teaches you how to implement the Type-safe Builder pattern using Kotlin. This pattern allows developers to create declarative and concise DSLs. Our implementation will be a Burger Builder that enables our users to create Burger objects expressively. ## Goals ## At the end of the …

2
435
Member Avatar for dimitrilc

## Introduction ## This tutorial teaches you how to create a Spring Boot application that provides RESTful API Endpoints. These endpoints are best consumed by other applications or for integrating with a SPA (Single Page Application) frontend such as Angular. For the purpose of this tutorial, we will create a …

2
379

The End.