In October 2023, I visited Devoxx Belgium and again it was an awesome event! I learned a lot and received quite some information which I do not want to withhold from you. In this blog, you can find my takeaways of Devoxx Belgium 2023!

1. Introduction

Devoxx Belgium is the largest Java conference in Europe. This year, it was already the 20th edition. As always, Devoxx is being held in the fantastic theatres of Kinepolis Antwerp. Last year, there was a rush on the tickets. This was probably due to the fact that the previous two editions were cancelled because of COVID-19. Not true. This year, the tickets were sold out even faster! The first batch of tickets was sold out in a few seconds. For the second batch, you could subscribe yourself and tickets were assigned by means of a lottery system.

The first two days of Devoxx are Deep Dive days where you can enjoy more in-depth talks (about 2-3 hours) and hands-on workshops. Days three up and including five are the Conference Days where talks are being held in a time frame of maximum 50 minutes. You receive a lot of information!

Enough for the introduction, the next paragraphs contain my takeaways from Devoxx. This only scratches the surface of a topic, but it should be enough in order to make you curious to dive a bit deeper into the topic yourself.

Do check out the Devoxx Youtube channel. All the sessions of the Deep Dive Days and the Conference Days are recorded and can be viewed there. If you intend to view them all: there are 210 of them…

2. Java Ecosystem Development

2.1 Java 21

With the release of Java 21 in September, quite some talks were related to the new features of Java 21. A good starting point is the keynote of Brian Goetz which gives a good summary of what’s new in Java. From here on, you can choose the topics you want to know more about. Some of these topics include virtual threads, ZGC garbage collector (no longer worry about garbage collector pauses!), project Panama (interconnect with native code, but better than JNI), etc. Besides that, Oracle is working on a Visual Studio Code extension in order to make it easier to use VSCode in combination with Java. Also, the Java Playground is announced, where you can easily experiment with Java from within the browser.

Brian also looked back at the release cadence of Java. Conclusion is that it worked better than they had hoped for. He also called the open source maintainers to follow this same release cadence. This should make it easier for everyone to upgrade to a new Java version.

2.2 jOOQ

This deep dive by Simon Martinelli about jOOQ was illuminating (there is also a conference talk available). I do favour writing SQL instead of abstracting the database away by means of an ORM. jOOQ has a database first approach. Besides that, it offers you typesafe SQL syntax, typesafe SQL constructors and SQL dialect abstraction. jOOQ offers an open source version which is free to use. You do need to use the latest stable version of the database you are using. If you need to use an older database version or some specific features, you need a paid license, but prices are not that expensive compared to what jOOQ offers you. jOOQ needs a running database in order to generate source code. This can now easily be done by means of this Maven plugin which uses Testcontainers.

2.3 Testing Microservices

Victor Rentea is always a pleasure to watch: entertaining talks and a lot of information. Testing microservices is one of the talks he gave at Devoxx, do check out the others as well. You should start with API integration tests and complement it with unit tests. This way, you do not need to make extensive use of mocks. Integration tests are made easier with the help of Wiremock and Testcontainers. When you create tests, you need to ensure that the tests can be executed independent from each other. You can do so by annotating your tests with @transactional. Your database actions will be rollbacked after the test has executed. A warning was raised to not overuse @DirtiesContext. When you use this, Spring needs to be restarted for each test (takes approximately 15-20s). In other words, the Spring Context cannot be reused between tests and your tests just take longer.

2.4 Performance and Scale

This is an interesting talk by Donald Raab and Rustam Mehmandarov about how large data structures pose certain restrictions on performance and scalability. They show you how you can use the Java Object Layout (JOL) tool to analyze the layout of your objects. They show you what you can do in order to minimize the memory footprint of your data structures.

3. Artificial Intelligence

3.1 Introduction to Building AI applications

This talk by Greg Kamradt introduces you to the world of LangChain. LangChain allows you to create a context aware reasoning application. The tutorials can be found here. Interesting to me was the use case where you can add your own data sources, your own content to the Large Language Model (LLM) and ask it questions about this content. This is actually how chatbots work. You ask the LLM a question and it will respond with a human readable message.

LangChain is a Python library, but if you want to integrate this in your Java application, you can use LangChain4j. Do watch this talk by Lize Raes, it is amazing what can be done with just a few lines of code. I hardly took any notes because I was too much paying attention.

3.2 AI Coding Assistants

Something that will impact our live as a developer are AI coding assistants. Bouke Nijhuis gave a clear overview and demonstration of some coding assistants. He compared Tabnine (which already exists since 2013!), GitHub Copilot and ChatGPT. ChatGPT does not have an IDE plugin, so is a bit less user friendly. Some features like code generation, test generation, explaining code, finding bugs, refactoring code are demonstrated. Privacy is also covered in this talk. Your code is sent over the wire to the coding assistant. Only Tabnine offers a self-hosting option. So, why should you use a coding assistant? You pair program with the coding assistant and you can write code faster.

Besides these three coding assistants, JetBrains also announced their AI assistant during the keynote. It is still in preview, but the demonstration was very promising.

3.3 MLOps

If you want to learn more about MLOps, do watch this talk of Bert Gossey. MLOps is a model development lifecycle, just like we have the software development lifecycle. It consists out of the following steps:

  • Data gathering;
  • Model training;
  • Model evaluation, here you will verify by means of a subset of the training data whether the model is ok;
  • Model deployment;
  • Monitoring, in order to detect data model drift.

The steps are executed by specialists: data engineers, data scientists, software engineers, operations. This means that you will also have handovers. And that is where MLOps comes to the rescue. MLOps actually extends DevOps with Machine Learning (data and model). Tools that support MLOps workflow are KubeFlow and MLFlow.

4. Other

4.1 Software Architecture as Code

Simon Brown, the creator of the C4 model, introduced Structurizr. A tool which allows you to create your C4 diagrams as code. It will also ensure consistency between your diagrams and it will allow you to create diffs. Structurizr is a complete tool and is quite interesting. Will definitely take a closer look at it.

4.2 Authorization

There were quite some talks about authorization. Mainly about OAuth2, OpenID Connect and WebAuthn. WebAuthn can be used as a 2FA using a Passkey (i.e. passwordless login). You can try it at webauthn.io. It is important to know how these authorization methods work.

Spring Authorization Server is a framework which allows you to build something like Keycloak. It is not meant to become a competitor to Keycloak. Use cases are when you need advanced customization, when you need a lightweight authorization server or for development purposes.

4.3 Keynotes

Do check out the keynotes. The opening and closing keynotes are worth watching. You learn something and you laugh quit a bit.

5. Conclusion

Devoxx 2023 was great and I am glad I was able to attend the event. As you can read in this blog, I learned a lot and I need to take a closer look at many topics. At least I do not need to search for inspiration for future blogs!