Java related things I want to see more of in 2023

2022 is over, time to look towards the future!

2022 was an exciting year. I gave a couple of talks at conferences in EU and US, met a lot of cool people and even started hosting the Belgian Java User Group. While I have already celebrated the past year, it’s time to look ahead and share some hopes for 2023. This list is incomplete and not sorted.

The embrace of Java 17+

Java has been evolving quite fast in the last couple of years. Every 6 months, we get a new version, with Java 20 coming up next March. While a lot of companies have finally moved beyond Java 8, the adoption of anything higher than Java 11 has been lacking.

A real shame, because since Java 11, we’ve gotten Switch Expressions, Records and so much more. Now that big frameworks (like Spring Boot 3.0) are moving up their baseline version, it is my hope to see more usage of the newer Java versions and their juicy new features.

So for 2023, I hope to see more projects using new Java features.

Focus on Module Boundaries

I’ve seen a lot of project embrace the cactus known as Microservices. While useful in the right environment and in the right context, I’ve seen people rush into it because “It worked for them”… “them” usually being Netflix.

Monoliths have gotten a bad reputation… but not because of them being monoliths. Look a little deeper and most issues are not the consequence of “the size of the deployable unit” at all. More often, it’s just a cluttered mess of code without clear module boundaries.

Splitting up the cluttered mess across microservices will not help… it might make the problem worse in many ways.

So for 2023, I hope to see more teams/developers projects focus on modularity, clear separation of bounded contexts, before even considering cutting up a system into cactoid shaped little services.

Server Side Rendering

“You need any kind of UI? Well, then you need Angular/React and a REST API!”. This technology stack has become the default, so much so that we don’t even think about the complexity anymore. Meanwhile, I am also seeing many people really struggle with creating a good API, or teams desperately trying to keep their (authentication/validation/etc) logic in sync between UI and API.

I believe in “keeping together what changes/belongs together”. In that sense, I’ve grown an appreciation for Server Side Rendering. While I do not think it’s the best solution in any use-case (as always, it depends!), I do believe it is too easily disregarded. Especially, the combination of Thymeleaf and htmx have gotten my attention and seems to be an amazing combo for a great UX. (See the Devoxx video of Wim Deblauwe for a good overview.)

So for 2023, I hope to see more teams at least entertaining the idea to use Server Side Rendering.

Better Testing

I love tests! I am by nature relatively insecure and doubtful about my own capabilities. Having a slew of tests, on different levels, gives me the confidence to make changes and deliver quality software without getting massive anxiety. That being said, a lot of codebases have tests which give a false sense of confidence. A few examples:

  • 90% code coverage, but the tests aren’t very valuable;
  • Tests mock all dependencies, leaving a lot of critical code (such as, JSON to POJO mappings) out of scope;
  • In microservice environments, teams have stubs for other services, but those go out of sync;

While all of the above points can be mitigated using modern tools and techniques (respectively: Mutation Testing, Testcontainers and Contract Testing), many teams have not jumped on board. I have shared these tools in my talk “Modern Testing Patterns” and you can look at some code examples in this repo:

So for 2023, I hope to see more teams embrace new strategies for writing better tests.

The return of social meetups

To me, sharing knowledge is one of the most important activities one can engage in. Not only do you help others, you learn a lot yourself by preparing the materials.

During the pandemic, I presented at a couple of meetups and conferences online… but it just didn’t feel the same. Let’s hope I don’t jinx it, but the situation seems to be better again. People are more willing to go to meetups and conferences and in general… they at least feel safe.

I was able to host a couple of meetups for the Belgian Java User Group (new event soon!), and I hope to see many more of these gatherings happening again all over the world.

So for 2023, I hope to see more people gathering again to share their knowledge and passions.

That’s it, my hopes for 2023. Besides these hopes, I have a few new adventures on the horizon. Looking forward to sharing those with all of you soon!

Until next time! Lots of 💖