February 2nd, in snowy Stockholm, I found myself in an authentic Viking-themed restaurant, sitting at the table with Mark Reinhold, Java platform chief architect, and John Rose, Java VM architect, for the Jfokus 2015 speakers' dinner.
The last time we spoke was 10 years ago. Back then, I was lobbying for exposing internal JVM yield semantics so that continuations could become first-class citizens in the Java world. This hasn't happened, but fibers as concurrency primitives, possibly relying on continuations, are now vigorously being discussed and considered as a way forward. In the modern programming world, it has become important to look beyond threads. The increasing amount of parallelism might require behavior to be moved to the data, as opposed to the old-fashioned, thread-anchored execution model where data is passed around and shared.
This commitment is also clearly paying off: Java conferences are booming again, attendee numbers are on the rise, the topics are more diverse than ever and new JUGs are popping up all over the world.
Coming up with a better standard concurrency alternative to threads was only one of the topics of the VM Tech Summit that took place in the morning. Over dinner, John Rose was still buzzing from the community involvement at the summit, where he outlined the JVM's vision with an honest reality check of the current state and the challenges to keep it kicking for at least another 20 years. Even though many highly technical topics were outlined, it struck me as very characteristic of the Java platform that even deep down at the virtual-machine level, the primary keyword was simplicity for the developer, the product user.
So let's take a step back and look at the bigger picture, leaving behind the technical details like concurrency that we as developers have a tendency to gravitate towards.
Developing any product that lasts 20 years is an amazing feat, but developing a lasting platform, on which an entire industry relies, seems like witchcraft. To make this possible, it's critical to expertly balance out reliability with comprehensiveness without stifling innovation, all the while preventing to fall into the pits of obsolescence. This might seem obvious looking back, but given that Java has been the top programming and runtime platform for over a decade, it's clear that other solutions were not as successful at such a degree of pervasiveness. Yes, many programming languages offer more various advantages here and there, but the whole package of the Java platform is impossible to beat.
So how do we look to the future by ensuring robustness together with innovation? This is where Mark Reinhold's dinner observations filled in the pieces of the puzzle. When Oracle took over Java's stewardship from Sun, the Java platform team was tasked with figuring how to keep Java vibrant. At the time, everyone involved was obviously skeptical about such a fluffy goal; usually this gets replaced by business targets that are tied to numbers and sales after a short while. It turns out that for the Java platform team, keeping Java vibrant is still the primary concern after five years.
Hearing Mark and John talk about their work with such passion was the perfect proof that those at the helm were still having a blast and that everything was being done to nurture that. Imagine a whole team of the smartest engineers, dedicated to prototyping new ideas with honest assessments of their applicability to the industry as a whole; now that's commitment.
This commitment is also clearly paying off: Java conferences are booming again, attendee numbers are on the rise, the topics are more diverse than ever and new JUGs are popping up all over the world. With the Internet of Things making platform independence increasingly alluring and computers being gradually integrated into every aspect of our lives, it's even more important to have a robust and simple platform that is slowly, but surely, being pushed forward.
After 20 years, it feels like there was never a better and more exciting time to be part of the Java community.