This year, the 2021 edition of the traditional JBCNConf was held. Unfortunately, the 2020 event didn't take place the year prior due to difficulties (something about a global virus). In this blogspot I will share my top three takeaways from this year's event with added insight about what a conference looks like in the times of Covid.
The JBCNConf brings together professionals and enthusiasts who are immersed in the Java ecosystem, and like any conference, the day includes various high-level talks, keynotes, sponsor stands and space for networking. It is organized by a group of volunteer members of the Barcelona Java User Group (JUG).
While the day was full of high quality, thought-provoking sessions, these were the three topics that caught my attention and will be explained in more detail below.
- Keynote: The Future is Kubernetes-Native
- Replicating production on your laptop using Test containers
- Do we really do functional programming in Java?
Without further ado, let's get started.
Keynote: The Future is Kubernetes-Native
This talk, given by Edson Yanaga from Redhat, focused on how Java can actually be “Kubernetes-Native” and why we should aim for it (globally scalable and high availability), thanks to OpenSource technologies and projects such as Quarkus (fast Java framework for Kubernetes, with low memory consumption) and Skupper (Project for Multi Cloud communications).
What is most surprising, especially for developers who have been outside the Java ecosystem for a while, is that Quarkus came to revolutionize the landscape, even leaving behind mature Frameworks like Spring.
In Edson's own words, he says, "I love Quarkus more than Spring, even though I have committed much of my career to Spring," which says a lot. Among the responses, Edson commented that he considered it crazy to mix Spring and Quarkus (despite being possible). Definitely something to consider.
Replicating production on your laptop using containers
The second part begins in parallel tracks. I attended a talk presented by Grace Jansen. To my surprise and that of several of us who were there, the talk was pre-recorded, which took away much of the conference magic. However, this also allowed the speaker to interact while her talk was being broadcast, being able to answer questions as topics emerged. Good or bad, I still haven't made up my mind.
Regarding the subject, it is interesting to see how the use of containers, originally considered only deployment units, has evolved to be a central part in integration tests. Something interesting is the introduction of Microshed Testing which allows "real as production" testing, where the integration test, written like any Java test, goes directly to one container.
Apparently, at the time of writing, Microshed is not available or compatible with Springboot, but with other specifications such as Microprofle.
You can find this talk on the Barcelona JUG playlist.
Do we really do functional programming in Java
Continuing with my third and final event highlight, we have a session by Ben Evans, Java Champion and member of the JCP (Java Community Process) executive committee who presented this talk about how “functional” Java can be, and how it compares with other purely functional languages.
Let's start by remembering that Java is in essence, an Object Oriented (OO) programming language, therefore, its origins are quite far from functional programming. Despite this, the community in charge of bringing new versions to life has made enormous efforts to give it functional language capabilities. It is under this premise that Ben is in charge of gutting and analyzing Java from a more functional spectrum.
One of the most important revelations in my opinion is that a “tail recursion” (a concept known in the functional field) does not help prevent “StackOverflow” type errors in Java, therefore, it doesn't really matter how elegant or optimized it is. recursion, it will not be able to avoid Stack errors. This, however, is solved in other languages based on the JVM, such as Scala or Kotlin.
Also, by way of recommendation, Ben indicates that if there are companies out there trying to migrate from Java 8 to the next Java 17, they should not do so. First migrate to Java 11 before making the jump.
Finally, the speaker concludes that, despite all the efforts, Java is still not that functional, although the efforts are going in the right direction.
First of all, it is necessary to thank the organising team (Barcelona JUG) for being able to carry out this event in the best possible conditions given the circumstances. That said, and on a personal note, I hope that I'll be able to attend the 2022 event in-person and that the conference will continue this set trend of sharing great quality content.
My one critical observation surrounding the event would be lack of volunteers on the organising team and the lack of diversity in the event. Next year, it would be beneficial to both attendees and speakers to broaden the spectrum and share the platform with more women.
The event did however, share how active the community is and how alive the Java ecosystem is. In times where there is an excess of JS, it is nice to know that Java still has a privileged place and that there is much more life than its detractors would have you believe.
.... And long live Java!