Devoxx Belgium 2023 Takeaways
In October 2023, I visited Devoxx Belgium, and again, it was an awesome event! In this blog, you can find my takeaways from Devoxx Belgium 2023!
Join the DZone community and get the full member experience.Join For Free
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 from Devoxx Belgium 2023!
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 canceled 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 and five are the Conference Days, where talks are being held in a time frame of a maximum of 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.
Java Ecosystem Development
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. The 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.
This deep dive by Simon Martinelli about jOOQ was illuminating (there is also a conference talk available). I do favor 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 that 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.
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 them 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 independently from each other. You can do so by annotating your tests with
@transactional. Your database actions will be rolled back after the test has been executed. A warning was raised not to overuse
@DirtiesContext. When you use this, Spring needs to be restarted for each test (takes approximately 15-20). In other words, the Spring Context cannot be reused between tests, and your tests just take longer.
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.
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. What was interesting to me was the use case where you can add your own data sources and your own content to the Large Language Model (LLM) and ask 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 into 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.
AI Coding Assistants
Something that will impact our lives as a developer is 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 it is a bit less user-friendly. Some features like code generation, test generation, explaining code, finding bugs, and 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 the 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.
If you want to learn more about MLOps, watch this talk by Bert Gossey. MLOps is a model development lifecycle, just like we have the software development lifecycle. It consists 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 okay;
- Model deployment;
- Monitoring in order to detect data model drift.
The steps are executed by specialists: data engineers, data scientists, software engineers, and 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.
Software Architecture as Code
Simon Brown, the creator of the C4 model, introduced Structurizr. A tool that 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. I will definitely take a closer look at it.
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 that 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.
Do check out the keynotes. The opening and closing keynotes are worth watching. You learn something, and you laugh quite a bit.
- Embracing Imposter Syndrome by Dom Hodgson
- Introducing Flow: the worst software development approach in history by Sander Hoogendoorn and Kim van Wilgen
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!
Published at DZone with permission of Gunter Rotsaert, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.