Java Digest #3

Java Digest #3

Hello everybody! 👋 👋 👋

We are Tinkoff Java developers: Konstantin, Andrew and Arsen. We collect interesting news, articles, tutorials and other materials from the world of Java development and decided to share it with the whole community.

“Since the rats could not read, the library he collected was characterized by some whimsy, but the patrician was not one of those people to ignore the opportunity to acquire new knowledge.”

Terry Pratchett Watchman! Guard!”

top news

Kotlin 1.9.0 is out. The main innovations:

You can get acquainted with the full list in the What’s new in Kotlin section or watch a video review by Anton Arkhipov.

The first milestone release Spring Boot 3.2.0 M1 – Added basic support for virtual threads when using Java 21.

Micronaut 4 is out. Interestingly, support for virtual threads with project loom, expression language, experimental support for HTTP/3 and much more appeared.

New IntelliJ IDEA 2023.2. Now there is support for the AI ​​assistant that we wrote about in one of the past issues, integration with GitLab, and IntelliJ Profiler now shows hints about performance right in the editor.

For PostgreSQL, the OrioleDB storage engine has been created, which works without the VACUUM operation. This possibility arose due to the use of undo logs, which work at the level of individual blocks and lines, as well as through the system of automatic merging of pages with data.

OrioleDB implements reading pages with data without the use of locks, directly linking pages in RAM with pages of persistent storage, and using the CoW (copy-on-write) mechanism when fixing control points to create consistent snapshots at any time.

The engine is developed by the OrioleData startup, it is currently in beta testing and is not recommended for commercial use.

Catch the feather of the jar-bird: the new season of Java on Habre – On July 31, the new Java season started in Habra.

Interesting videos

Hryhoriy Koshelev – When everything went according to Kafka 3: Apache Kafka and Consumer

The third part of the reporting cycle to define Kafka. The first part dedicated to the general subtleties of its use, in the second Hryhoriy immersed himself in the work of producers, and in the third part he examines the work of consumers in detail, talks about KIP, which determine the various subtleties of work and settings.

How to learn Spring Boot with TDD

The central idea: by following TDD, you can learn the tools you work with. Kirill shows how to write tests for different layers of the program – from controllers to interaction with DB and Kafka. Tells where component tests, unit tests, and integration tests can come in handy. At each stage, the developer will encounter various problems, and in the process of solving them, he will understand how certain tools work. The opinion is interesting and very debatable.

In Kirill’s report, everything turns out to be consistent and fast, but experience shows that solving some problems related to the same configuration of Spring and Kafka can take a very long time. At the same time, there are cases that you simply set up the tests themselves incorrectly. On the other hand, learning any tool takes time anyway, and test code is just as important as production code. We invite you to share your opinion on this issue in the comments 🙂

Java 21 is not an LTS Version – Inside Java Newscast #52

Shock content! Neither 11 nor 17 nor 21 Java was LTS! 🙂 In reality, everything is not so simple, and from this video you will learn what exactly the concept of LTS means, which means the suffix u, which can be found in the names of jdk grinders, than service differs from support and, most importantly, by whom and how the first and second are carried out.

Java digest – Book club.rar

There is a recording of the discussion of the previous edition of our digest within the framework of the Book Club.rar on IT’s Tinkoff Java & Kotlin. We discussed Spring Boot Application Testing and Development with Testcontainers, the cognitive load of developers and the AI ​​plugin for IDEA. It turned out to be very cozy, bright and interesting. We plan to hold such broadcasts regularly after each issue. Subscribe to telegram channel of the Book Club.rarin order not to miss the announcement of the next broadcast

Useful articles

Reactive Programming Made Easy | The IntelliJ IDEA Blog (
– A short but useful article from Jetbrains, which tells you what features all your favorite IDEs have to make it easier to develop applications using Project Reactor.

From Streams to Coroutines: How and Why Synchronization Primitives Changed in Kotlin (Part 1) The article examines the evolution of the implementation of synchronization primitives in Kotlin and Kotlin Coroutines in comparison with the classic Java library and the java.util.concurrent package. The author warns that the assessment will not be based on support for legacy functionality and usability in Java, but on efficiency and usability in the context of Kotlin Coroutines and Kotlin Multiplatform. The article discusses synchronization primitives: critical sections, atomic variables, reactive variables, barrier synchronization.

Microservices in the bank: what is the best way to write them? Java/Kotlin, or maybe Go?In July, the RSHB Backend Dev Meetup was held at the office of RSHB-Intech – a technological subsidiary of Rossilhospbank – for Java developers. Kotlin, Go, mapping and various aspects of backend development were discussed at the event.

Ivan Kochergin, head of the in-house development center at RSGB-Intech, spoke. He has been working with Java for more than 10 years and has been actively using Kotlin for the last three years.

In his report, Ivan compared different programming languages ​​for writing microservices in the banking environment: Java, Kotlin and Go. He shared his views on the advantages and disadvantages of each language in the context of developing microservice architectures. The article is a transcript of his report.

Roasting java.lang.String An example article using java.lang.String is not the way we are used to doing it, resulting in non-obvious work. From the material you can learn how to write a broken line and what it can affect.

Everything Bad in Java is Good for You. The author offers an alternative look at what is considered a difficulty in Java, and points out the functional advantages of one or another approach, whether Checked Exceptions or Null. Emphasis on what advantages it gives to the developer and why it is useful in the language.

Java bytecode instrumentation. There have been no materials about bytecode for a long time! This article is about Java bytecode instrumentation methods, that is, ways to make changes to compiled Java.class files. There are examples of using two frameworks – Javaassist and ASM, as well as a basic bytecode description.

How does the Java ClassLoader system actually work? (With pictures). Part ⅓. Loading A detailed article on the Java class loading system with illustrations will not leave you without understanding the working principles of Java ClassLoader. A great way to repeat this topic to yourself.

Docker Compose Support in Spring Boot 3.1. A more detailed look at a feature that appeared in Spring Boot 3.1 that we touched on last issue. Spring Boot now allows you to locally bring up services along with all dependencies like it’s done in quarkus. Now, if there is a docker-compose file with the program, then when Spring Boot is started locally, it will automatically pick up all the dependencies with which the program will work. At the same time, there is no need to even change the properties with the address of the connection to the database.

Dynamic Entity Graphs in Spring Data JPA. A story about a small library that allows you to dynamically use different Entity Graphs in Spring Data Repository without creating a separate method for each EntityGraph. Basically, it allows you to pass to the Spring Data Repository Entity Graph as a parameter. Overall, it looks useful and allows you to simplify the code.

New in Spring 6.1: RestClient. RestTemplate appeared 14 years ago and is gradually becoming a thing of the past. Starting with the fifth version of Spring, the more convenient and concise WebClient can be used instead, and now a completely synchronous alternative has appeared in the form of RestClient.

Interesting podcasts

Viktor Gamov talks about Kafka 🙂 From this issue, you can find out for what purposes the tool was originally created, how the infrastructure developed, in which cases it is worth thinking about its use, how it will allow you to build an Event-driven architecture and why it may be necessary.

This podcast was supposed to be included in the last issue, but we didn’t have time to make a guide for it. Let’s fix it 🙂 Our colleague, SRE team leader Maryna Kaleturina, explained what the full-time work of the program means and how it can suddenly become freelance. And Marina gave detailed instructions on how to act in the event of an incident.


We like to start the issue with an epigraph. In this regard, we offer an interactive activity – write in the comment a quote about the importance of constant learning and gaining new knowledge. We will choose the most suitable one for the next issue and use it as the epigraph for the next month with thanks to the author of the comment. And yes, if you use a neural network, write about it 🙂

Thanks for reading! We are waiting for feedback in the comments. See you in a month 😉

Related posts