Reflections and predictions on how Java will evolve in 2020, by Alexander Nozdryn-Platniski, Principal Software Engineer at Godel Technologies.
1. What have been the biggest milestones involving the Java programming language since 2010?
There have been fundamental shifts in how we develop software, that have dictated the ways Java has changed over the last ten years. We can be sure that agile has been the main factor in driving this; where we used to wait years for updates to Java, we now see versions released twice a year.
When we look at why agile is so effective for building modern applications, it comes down to the rise of microservices which has soared in the 2010s – building cloud-native containerised applications is achieved most successfully through an agile approach to development. So, Java evolved into an ever-changing fast-moving language which is today adapted to delivering this kind of application.
Also stemming from this is the mindset-shift we’ve seen more recently towards embracing open source. The biggest tech companies are embracing open-source as a strategic decision; it’s fact that technology moves fast and so having communities of developers continuously improving languages in adaption to changes in requirements is simply a more efficient approach to change.
Change is driven by what works best in developing effective applications – and Java’s evolution is a good way to view how this has happened in the 2010s. Enterprise Java is being deprecated because it is difficult to maintain; on the other hand, the open-source OpenJDK’s lifecycle is extended into the 2020s. OpenJDK is becoming the main branch for the Oracle JDK – with a lot of features such as Flight Recorder, Java Mission Control and Application Class-Data sharing features.
2. What should developers that specialise in Java do to stay ahead of the curve?
Open source systems like Linux, PostGRES and MySQL changed the way we develop applications – now, we don’t need to splash large budgets on licencing when it comes to scaling applications – we can simply focus on adding business value for our end users.
Developers should take on the examples being set by open source contributors and be involved in these contributions when they can. Microsoft, for example, now has people contributing to the OpenJDK which is a complete turnaround from where they were as a company even ten years ago.
3. What’s your biggest prediction for where Java is heading in the 2020s?
I’m confident that microservices will pave the road for the future of application development – it’s just a question of what it will take to drive innovation forward. Kubernetes will be central to this – I think it’s safe to say that Kubernetes will continue to be the de-facto standard for containerisation; it’s getting major updates very regularly by the open source community in which it was born.
Also, let’s keep an eye on Microprofile by Eclipse – it is currently supported by a handful of frameworks, but I think will gain more traction for Java development in the near future. The value of this solution lies in its effort to standardise approaches to microservices development, something which is lacking across different stacks at the minute.
From an architectural perspective, it’s important to build applications that support their evolution from their very foundations – nobody can predict what’s really ahead of us so applications should be able to adapt to drastic change without impact on their core characteristics such as code quality, maintainability and service-level agreements.
In terms of other rising technologies, I predict that GraalVM will be the de-facto virtual machine for the Java ecosystem. The cloud-native application approach will really start to dominate the market I the near feature, as serverless tech like AWS Lambda, Azure Functions and Google Cloud Function mature quickly. Overall, look to how Kubernetes was born and is being maintained – in and by an open-source community – to predict where the future of Java application development lies.