This year’s edition of J-Spring, organized by the NLJUG, went digital due to the COVID-19 pandemic. From the 23rd up to and including the 26th of June, every day two technical talks have been held. We attended this digital version of J-Spring and want to share some of our impressions. Enjoy!

1. Introduction

Due to the Corona virus, the NLJUG (the Java User Group in the Netherlands) decided to turn the J-Spring one day physical conference into a digital event. They spread the conference over multiple days in time blocks of 2 up to 2,5 hours. This was a good idea because attending a virtual conference for a whole day can be very exhausting. The event consisted of a fixed program of two talks at the end of each day. A nice ending of every day, we must say! In the following sections, we will share some of our impressions of the several talks.

The talks are available at the NLJUG YouTube Channel.

2. Tuesday, the 23rd of June

2.1 Reacting to an Event Driven World

By Grace Jansen and Kate Stanley

This talk gave us an introduction of Reactive Programming, reactive patterns like Futures, Reactive Programming Libraries, Reactive Streams and of course the Reactive Manifesto. Besides that, the talk gave us an introduction to Apache Kafka. Very interesting if you want to have a quick overview of these two items. They provided a lot of interesting links to information about Reactive Programming, so watch out for the slides when being published. In the meanwhile, you can get started with some of our previous posts:

2.2 Reactive Is Awesome… but Where Is the Bug?

By Oleh Dokuka

This was a hands-on, practical session pointing out the challenges you can encounter when debugging a reactive application. The key takeaways are:

  • Know the Reactive Life Cycle
  • Default tracing and metrics do not work with Reactive Streams
  • Log important signals
  • Wait for a better debug agent

3. Wednesday, the 24th of June

3.1 Mind Rocking Concurrency With Kotlin Coroutines

By Peter Urs

Although we did not yet take the time to dive into Kotlin, this introduction of Kotlin Coroutines was clearly presented. Reactive programming and asynchronous, non-blocking requests require more code and it is hard to learn. Kotlin Coroutines provide concurrency building blocks where you can express requests as being synchronous requests while under the hood the implementation is asynchronously.

3.2 Life Beyond Java 8

By Trisha Gee

An overview was given by means of live hands-on examples of the Java features of Java 11, the latest LTS Java version. E.g. JShell, var, Java Module System, etc. Also an overview of the new features like the new Switch statement, Text Blocks, Records, etc was given and at the end some tips for migrating from Java 8 to Java 11. Nothing new you would say (and also for us no new information), but did you know that nearly 75% of the applications still run at Java 8 in comparison to approximately 30% on Java 11? There is still a long way to go to move people to Java 11 and these kind of talks definitely contribute to that. If you want to get started with some of the features mentioned above, take a look at some of our previous posts:

4. Thursday, the 25th of June

4.1 Know Thy Neighbours: Dependency Management Done Right

By Brian Vermeer

When writing an application from scratch, your pom file and dependencies are healthy, but after some months, years it can become a complete mess. First of all, how do you choose your dependencies? Some simple rules can help you with this:

  • Does the dependency solves the problem?
  • Do you need the dependency? Sometimes you only need two classes of a dependency. Is it worth including the complete dependency?
  • How many contributors are there? You do not want to use a dependency in production which has only one or two contributors. When they stop contributing, you have to do it yourself.
  • Is the dependency still maintained? And how many releases are issued each year?

Besides that, you need a strategy for updating your dependencies. You do not want to lag behind, certainly not when it comes to security fixes. If the update is small, you should update right away. The Versions Maven Plugin can help you with identifying which dependencies require an update. See one of our previous posts how to use this plugin.

4.2 Micronaut Deep Dive

By Graeme Rocher

Micronaut is a microservices and serverless focused framework which has been open sourced in May 2018. This session gave a short introduction to Micronaut but was mainly a live demo showing the features of Micronaut. Interesting to watch.

5. Friday, the 26th of June

5.1 Agility within a regulated environment

By Wouter Oet

Some companies (like banking, insurrance companies, etc.) have to abide to certain rules and regulations. This can slow down development. There are some things you can do in order to minimize the effect of those rules and regulations:

  • Let your platform take care of certain tasks, like runtime updates, logging, security scanning, certificates, etc
  • Config as Code, this way it is traceable who changed the configuration
  • Singular Pipeline (parameter driven)

5.2 Exclusive Q&A with the Founder of Java

This had to be a Q&A with James Gosling. We were looking forward to this session. Unfortunately, James Gosling could not be reached. The NLJUG promised to plan it at a later date. And so they did at the 10th of July. It was an interesting interview hosted by Bert Jan Schrijver. Some details were given for example how Java got its name. Initially, it was supposed to be named Oak, but due to trademark problems, the lawyers suggested to choose another name. And many other details concerning the way Java has evolved.

5.3 The Java Pub Quiz – The Corona Edition

The Java Pub Quiz was hosted by Ramon Wieleman and Vasco Veloso. We did not intend to participate the Java Pub Quiz, but since the Q&A with James Gosling was cancelled, we decided to take it a shot. And it was fun! It was a perfect end of the event. We are sure we are going to attend the Pub Quiz again when the opportunity passes by.

6. Conclusion

Thanks to the people of NLJUG for organizing this virtual edition of J-Spring. Although a real event is even better, this has been a good alternative and replacement for the physical event.