25 Hours of Java—May 23rd, 2020

On May 23rd 2020, Java turns 25 🥳 and what better way to celebrate its birthday than with a 25-hour live stream? (On Twitch.) Yes, 25 hours of Java! There will be technical deep dives, interviews, discussions, cake, code, more cake, and even more code! Most importantly, it will be a lot of fun and I hope you join me on that fine Saturday in May.

I’m still putting everything together and will update this site as I go. For breaking news as they happen follow me on Twitter; for regular summaries, subscribe to my newsletter. Here’s what I know so far…


Sun Microsystems had their headquarter in California and so we’ll pin May 23rd to Pacific Daylight Time (PDT):

  • where Java was born: 11 PM (22nd) to 12 PM (23rd) PDT
  • where the clock lives: 0600 (23rd) to 0700 (24th) UTC
  • where I live: 0800 (23rd) to 0900 (24th) CEST

Location: twitch.tv/nipafx


It takes a village to raise a child and it takes plenty of talented people to keep the Java train moving – I’ll be talking to a few of them.

Kevlin Henney

Kevlin is an independent consultant, speaker, writer and trainer with interests in patterns, programming, practice and process. He also writes flash fiction!

We’ll discuss 97 Things Every Java Programmer Should Know and Java’s place in history.

Trisha Gee

Trisha has expertise in Java high performance systems, is passionate about community in tech, and dabbles with Open Source development. She’s a leader of the Sevilla JUG, a Java Champion, and as a developer advocate for JetBrains, she gets to share all the interesting things she’s constantly discovering.

We can discuss a few more of the 97 things every Java developer should know (Trisha co-edited the book) and then segue into Java career advice. Bring your questions!

Martijn Verburg

Also known as the the Diabolical Developer, Martijn is Principal Software Engineering Group Manager (Java) at Microsoft, ex-CEO of jClarity, co-orgianizer of the London Java Community, and director at AdoptOpenJDK.

We’ll talk about Java distributions, AdoptOpenJDK, and how Microsoft contributes to the Java ecosystem.

Brian Goetz

Brian is Java Language Architect at Oracle; creator of lambdas and streams; bringer of var, switch expressions, and records; harbinger of pattern matching, reinvented serialization, and value types.

Under the headline “today’s problems come from yesterday’s solutions” we’ll talk about a few things that annoy Java developers today (who said null?). Also: projects Amber and Valhalla.

Christian Stein

JUnit 5 core committer, Apache Maven developer, OpenJDK Author, and tinkerer with modern Java versions.

Christian will give us a quick intro to his build tool Bach.

Venkat Subramaniam

Venkat is a polyglot programmer, award-winning author, rockstar speaker, instructional professor at the University of Houston, and founder of Agile Developer, Inc.

We’ll discuss Java’s place in today’s software development landscape.

Sharat Chander

Sharat is developer relationship expert at Oracle. He’ll join us on the last hour to chat a bit about Java’s community.


Here’s what I plan to dissect and discuss with you. I will have slides, repos, and a rough idea where we’re going, but the cool thing about a stream is that you’re there with me, so you can ask questions, decide what to emphasize, and tell me where to go next. That also means that the timeline may not be strictly adhered to. 😁

0600 UTC — Java 9-14 questions from StackOverflow
We’ll warm up with answering a few StackOverflow questions from this filter. And in case we ever need to fill a little time, we can always come back to this.
0700 UTC — Birthday 🥳, Cake 🎂, and Java Q&A 🙋🏽‍♀️
This is when, over in California where Java was released, the 23rd starts, so we’ll have some cake and chat about Java. Bring your opinions and questions!
0800 UTC — Stream Exception Handling
Handling (checked) exceptions in stream pipelines is not trivial. Let’s explore and discuss the options. (I explained some in this post about repackaging exceptions in stream.)
0900 UTC — Kevlin Henney
Apparently, there are 97 things every Java programmer should know and Kevlin collected all of them (online and in a book). 😉 We’ll discuss a few as well as draw from Kevlin’s extensive experience in software development to learn about Java’s place in history.
1100 UTC — The Java Module System
First a quick ride through the module system basics before we take a closer look at a two or three more advanced features. (Could be jlink, services, versioning, or something else – if you want to request a topic, ping me on Twitter.)
1300 UTC — Trisha Gee
What does it take to have a career as a software developer? Which skills do you need and what should you look out for? We’ll talk about what’s really important to developers when thinking about their careers, and discuss tools for working out what your next steps are.
1500 UTC — JUnit 5 Extension
JUnit 5 is pretty cool in many regards. Maybe the coolest thing is its extensibility and we can dive deep into that. I’ll show you theory and practice of writing your own extensions.
1700 UTC — Java Releases and Distributions
The switch to the six-month release cadence as well as the commercialization of Oracle JDK changed the ecosystem quite a lot. Let’s dive into this topic, so we’re ready to discuss it with…
1800 UTC — Martijn Verburg
Martijn is here to help us sort out the new release cadence and different Java distributions. We’ll also talk about what AdoptOpenJDK can do for us and how Microsoft contributes to the Java ecosystem.
1900 UTC — Projects Amber, Valhalla, Loom, and Leyden
There are quite a few very interesting OpenJDK projects being worked on. We’ll shortly summarize each of them and then take a closer look at one (Loom?).
2000 UTC — Brian Goetz
There are a few aspects of Java that aren’t necessarily the way “things are done today” (mutability/nullability by default, serialization, primitives, etc.), but I keep wondering whether Java would have made it to 25 years without them. Brian is here to discuss this with us: Why is Java the way it is, what could have been done differently, and what can be done now? During the latter, we can take a peek into the future and discuss projects Amber and Valhalla.
2200 UTC — Going to Java 9
Enough talk about Java’s past, presence, and future – let’s get moving! I’ll show you how to upgrade your code base from Java 8 to 9 and which new features Java’s last three-years-in-the-making release has to offer (besides the module system). We’ll also turn to an existing code base to check which features we can apply.
2330 UTC — Christian Stein
Christian wrote Bach, a JShell-based build tool that uses the power of the Java module system to build your Java project.
0000 UTC on the 24th — Going to Java 10 and 11
Java 10 and 11 come with a bunch of API and JVM improvements that we can take a look at. Once again, we will apply some of those in practice.
0200 UTC — Venkat Subramaniam
Java is not an island, it doesn’t exist in isolation. Not only is it related to other JVM languages, it also impacts and is impacted by other programming languages, chief among them C/C++. Venkat is a true polyglot programmer and will help us place Java into the larger software development landscape.
0400 UTC — Fun with var
There’s so much fun to be had with var! Mixing it with generics we can recreate intersection types and traits – be careful, though, these tricks may blow up in unexpected ways.
0500 UTC — Going to Java 12 to 14
Switch expressions, text blocks, pattern matching, records – the new releases offer a plethora of new language features that we can study and apply.
0600 UTC — Sharat Chander
Talking about the community, hanging out, cleaning up, munching cake.