From 16 to 19 April took place the 8th edition of Devoxx France in Paris at the Palais des Congrés. It aimed to be the main event for passionate French developers. Indeed it is clearly « the place to be » during these 3 days: a unique opportunity to recharge your batteries, to meet interesting people, to get new ideas and inspiration …
Rather than a detailed feedback of the individual presentations I’ve attended, I prefer to share the highlights and the main trends in my opinion.
My experience a a speaker
This edition was a bit special for me, because I had been selected as a speaker. Being speaker at Devoxx was clearly on my professional wish list. To be honest, I couldn’t have imagined that 2 years ago!
This experience has been a challenge, an opportunity to improve my technical skills, to clarify my ideas and speech, it has also required self- discipline to be ready and comfortable the D-day. Fortunately, my company Worldline provides us many internal opportunities enabling us to improve our speaker skills. Hence, I was not totally lost even if speaking out is a whole other story.
My talk was entitled: “Forget Java EE, Jakarta EE is coming!”. I was lucky to have a great co-speaker: Sébastien Blanc from Red Hat. Together we made a status about the evolution of server-side Java. For the first time, I even made a live demo during a talk: I’ve decided to go beyond the traditional “Hello World” by proposing a (simplified) payment system based on a distributed architecture using Jakarta EE and MicroProfile.
The purpose of my demo was to demonstrate:
- the flexibility of application deployments: thin war, fat jar and hollow jar and how they differentiate,
- MicroProfile in action, in particular: Config, Health Check, Fault Tolerance, RestClient and OpenAPI,
- how to integrate a GraphQL API with just 1 line of code.
I’ve based my demo on Payara 5.191 (Server and Micro) which implement Java EE 8 and MicroPorofile 2 and KumuluzEE 3.2 which implements MicroProfile 2 and proposes a GraphQL extension (described in another blog post).
My next step is to run it on OpenLiberty, TomEE and Quarkus. Maybe for an other talk …
Sébastien has made an other demo using Quarkus. We’ve made a rather complete technical overview.
The Keynotes
The main theme of the Keynotes was “Happiness at work”.
Christian Fauré talk was entitled “Happiness at work, beyond the bullshit”. He spoke of restoring the meaning of work and gave an interesting definition of the proletariat: it’s not about poverty, it’s about the loss of knowledge. If you do not want to become a proletarian, keep and exercise your knowledge. I particularly appreciated another piece of advice from him: stay amateur, never professional! Oliver Lajous, a former admiral, spoke about kindness at work. It’s always interesting to hear a former officer talking about kindness at work.
The next day Valérie Haccart spoke about accessibility by leading a workshop on visual impairment. Then David Mytton shared his feedback on incident management. Finally Jérôme Petazzoni came to tell us about The most difficult refactoring in my career, and how he managed to overcome his depression.
Java: still innovative after 25 years!
It was amazing to see how innovative Java remains after 25 years of existence. Java SE 9, released in Sept 2017, has led to deep changes in the ecosystem. First, the number of distributions has increased. Gone is the time of the Oracle JDK monopoly: now there are other supported, production-ready, long-term supported Open JDK distributions: Red Hat, IBM, Azul Systems, AdoptOpenJDK and even Amazon recently. Some of them are free, others are commercial. Choosing the right one depends on your budget and your need for active support. But one thing remains true: Java is still free!
On the runtime front, the diversity is also there. Eclipse OpenJ9 is an alternative to the traditional HotSpot Java Virtual Machine (the runtime in charge of running the Java bytecode). It is an original IBM technology, Open Sourced in 2017 that offers improved performance in the cloud, thanks to a low memory footprint and fast startup mechanism based on pre-compiled classes. Without forgetting Graal VM, which is a game changer, and which I will talk about below.
Java: a good cloud citizen, finally!
Java has been designed at a time of « Enterprise Applications ». 25 years later, we’ve shift to « Cloud-native applications ». We no longer need heavy application servers to deploy monolithic applications. We need distributed microservices, we need lightweight runtimes with fast-startup, graceful shutdown and « container awareness ».
Despite its age, Java has been able to adapt to this new context: the JVM is now able to behave properly with containers. By default, it now detects that it is running in a container and takes that into account when sizing its internal resources: memory, threads … Until Java 10, the default sizing was based on the bare metal server capacity. The good news is that this behavior has even been back ported to Java 8 (with version 8u212).
In addition, modern application servers such as WildFly, Open Liberty, TomEE, Payara have become much lighter and support various deployment modes as illustrated by my demo It provides a great flexibility to build container images.
So yes, Java has become a good candidate to run in the cloud, making the most of container environments based on Docker and Kubernetes. However, it is not able to compete in the new Serverless (aka Function as a Service) arena. Java has been designed for long-running processes. It needs times to start and warm-up. It cannot compete with technologies such as Go Lang, JavaScript or Python to quickly instantiate a process to run a short-lived command. This is where Graal VM comes in …
Back to binary with Graal VM!
Graal VM is an Oracle experimental project. It aims to be «a universal multi-language virtual machine». At its heart is a modern compiler able to run either dynamically in JIT (dynamic Just In Time) mode or Ahead Of Time (static compilation). The second option enables to produce « binary images ». These images are run by a specific runtime called Substrate VM with fast startup and no warm-up.
So, is Graal VM a silver bullet? I would say: “Yes and no, it depends” … It makes Java a viable technology for Serverless. But the traditional JVM remains better for long-running processes.
The real question to make your decision is now: do I need a long or a short running process? If long: keep the traditional JVM; if short: switch to Graal VM.
Red Hat Quarkus
Quarkus is a disruptive new framework from Red Hat providing two main benefits:
- An improved developer experience thanks to a dynamic reload mechanism, no need to explicitly re-deploy or restart the application when developing,
- The ability to generate Graal VM binary images while keeping the standard Java EE and MicroProfile programming model. No need to learn another technology. Quarkus is also able to run on a traditional HotSpot JVM. Hence the same programming model can address both long and short running processes, from legacy Enterprise Applications to brand new Serverless.
Other topics
Of course, Java was not the only topic during this edition:
- programming languages such as Rust, Scala, Kotlin,
- front-end management in a microservice architecture,
- using Gradle,
- using Kubernetes,
- the benefits of ServiceMesh such as Istio,
- using Continuous Integration to improve testing,
- how to design a Restful API,
- developing API with GraphQL,
- alternative framework such as Micronaut,
- the evolution of the role of the Software Architect.
Final words
This was really a great Devoxx France edition. As explained in this feedback, what impressed me the most is how Java, despite its advanced age for IT, remains innovative and diversified. It was born 25 years ago and it is always present and very much alive. So, are you ready for another 25 years?
Leave a Reply