Java, Microsoft & Pizza: 10 Take-aways from JAX London 2019
What did we learn at JAX London 2019? The answer is obviously different for each visitor, as many paths lead through the JAX programme. We summarised some of OUR personal highlights from the big Java conference – of course without claiming to be complete.
Take-away #1: Microsoft is a Java shop
JAX London was opened by Program Chair Sebastian Meyen who pointed out one interesting fact: Microsoft is getting deeper and deeper into Java. Meanwhile, numerous well-known Java developers and Java champions earn their living at Microsoft. Open source technologies like GitHub belong to Microsoft and point to the new direction of offering solutions for ALL developers – e.g. also for Java developers in the Azure Cloud.
Even the strong company behind the AdoptOpenJDK project, jClarity, was recently acquired by Microsoft. “Microsoft is a Java shop now”, comments Sebastian Meyen, and evaluates the whole thing positively:
“It is always good when industry giants stand behind Java.”
Take-away #2: Which Java? You have the choice!
We also had jClarity’s CEO Martijn Verburg at JAX London. His question: Which Java distribution should I use? Martijn presented the different options that are currently available to us. And, as so often, the answer is: It all depends on the respective use case! His advice: Take a close look at which Java version(s) are supported by the respective provider, which support services are available and who is behind it.
In any case, it should be noted that the new release cadence and the shortening of Oracle’s free support line to (only) 6 months has created a market of alternative distributions. And diversity is not a bad thing.
However biased, Verburg sees a special role in the AdoptOpenJDK project, as this is a vendor-neutral distribution that is not driven by a single company. And indeed: The bandwidth of the parties involved reads like the Who’s Who of the IT world. Are we perhaps on the way to an independent Java Foundation here?
But another reading is also possible. Microsoft Azure is also among the supporters of AdoptOpenJDK – which is not surprising, since Microsoft recently bought Martijn Verburg’s company jClarity. And doesn’t the AdoptOpenJDK logo somehow resemble that of the giant from Redmond?
Take-away #3: Microsoft gives back to Java
One last thing about Microsoft: The Java Champion Monica Beckwith, who is currently working in Microsoft’s JVM performance team, led us into the new world of OpenJDK’s concurrent garbage collectors in her session. The good old G1 garbage collector has received companions in the form of alternative solutions like ZGC and Shenandoah that take a concurrent approach. We caught up with her after her session for an interview where she explains what the design goals of these new garbage collectors are and in which situations it is beneficial to use them.
In the end, we asked her about Microsoft’s involvement in all of this:
Microsoft definitely invests. The Azure Stack is heavily Java based already. This was bound to happen. Even if Microsoft has the best .NET engineers it still needs the Java perspective, it still needs the community perspective and seeing where the community is going and how Microsoft can be a part of it. Microsoft has a lot of open source initiatives already, and this is one of the ways, Microsoft is helping, giving back to Java as well, in putting an effort in in developing OpenJDK.
Take-away #4: Listen to your software and consider side effects
In her keynote “Breaking Illusions with Testing”, Maaret Pyhäjärvi (F-Secure) addressed how testers don’t break code, but rather the illusions surrounding it. Among these illusions is the perception that the code does what it is supposed to do. Another illusion is that the product does what it needs to do. While it may be doing exactly what it is specified to do, that may not be what is needed. It is also an illusion that a product does only what it is supposed to do. Especially keeping data privacy laws like GDPR in mind, side effects of the product must be taken into consideration and choices must be made.
— JAX London (@jaxlondon) October 9, 2019
And lastly, testers should listen closely: Is the software speaking to you? According to Maaret Pyhäjärvi, it speaks to all of us, and we just need to tune in to hear it.
Take-away #5: Quarkus makes Java cool again
Quarkus is the new container-first framework for Java developers. The focus is on supporting containerized cloud applications and on increasing developer productivity, as Alex Soto from Red Hat emphasized in his presentation. Quarkus provides a way to compile a Java application into native code. Using GraalVM, it creates a native executable to achieve a similar behaviour in containers as any other natively compiled program, e.g. written in Go or C++.
Developer productivity is improved by Quarkus in many ways, for example by the Live Reload feature. After changing the source code, the change is immediately reflected in the running instance. Performance? Boot-up time, memory consumption? “Even miracles take a little time”, Alex says, but with Quarkus it’s not much. Faster than Node.js, much faster than traditional cloud Java stacks. Alex’ benchmarks are impressive, indeed.
— Andrew Buttery (@andrew_buttery) October 9, 2019
Take-away here: Quarkus is definitely worth a try. For those who want to play around with it: At code.quarkus.io you can click together a distributed application and get a feel for how the “Supersonic Subatomic Java Framework” works. And take a look at our Quarkus Cheat Sheet!
Take-away #6: Moving to the cloud is like ordering pizza
Are you thinking about migrating an existing Java application to the cloud? Laura Morillo-Velarde (seedtag) showed how to do that using Google Cloud – and compared the process to making pizza. You can choose to make your pizza from scratch, which requires more effort than buying a frozen pizza or ordering at a restaurant. Google Cloud offers the same range of options. As Laura explained, you can configure anything you want – that’s like making your pizza from scratch. With other options, you don’t have to do any work yourself but must stick to the menu. So – it’s up to you, which option best suits your needs!
Take-away #7: Be aware of how wasteful our industry is
As developers, are we aware of the impact we have? If you look at the energy consumption of Bitcoin mining, the answer is clearly no! Legendary Bitcoin founder Satoshi Nakamoto probably had no idea that mining a crypto currency would consume the energy of a country like Chile.
In his keynote “Re-thinking Performance in a shiny Cloud World“, Chris Thalinger (Twitter) gave the term performance a new meaning by placing performance optimisations in the context of the achievable energy savings. Already today, 2% of the world’s energy consumption is accounted for by data centers – and the trend is rising.
The gobsmacking effects of software performance on global energy usage highlighted by @christhalinger here at #JAXLondon #softwareperformancematters #whatimpactareyouhaving?! pic.twitter.com/tzBuYGShQu
— Grace Jansen (@gracejansen27) October 8, 2019
But it is not only the obvious imbalances that should make us think – even smaller performance optimisations can lead to a more sustainable and inclusive world. As an example, Thalinger mentioned Twitter’s “Twitter Lite” service, which provides access to the global Twitter community for populations with slow Internet connections.
Also the power of the gaming industry can be used to raise awareness, for example by addressing ecological issues inside of games:
With more than 2 billion video game players globally, "this is the most powerful mobilization channel in the world," David Paul told the gaming CEOs. His low-lying Pacific island homeland faces an existential threat from rising seas as the planet warms.
— RMIClimateEnvoy (@EnvoyRmi) September 25, 2019
Chris Thalinger’s take-away: “We should be aware of how wasteful our industry sometimes is and think about how to avoid it.”
Take-away #8: Take a look at the code that wasn’t written
Independent consultant Michiel Rook offered a real-life example in his session from the track “DevOps and Continuous Delivery”. In a recent project, he worked on transitioning a large semi-government organisation from a monolithic application to continuous delivery. The goals were cost and risk reduction, as small steps mean smaller potential failures with issues that tend to be easier to fix.
Different changes were made to the team during the process. One of the most important, as Michiel emphasized, was pair programming. Asynchronous code reviews don’t let you see the code that wasn’t written – although that may prove to be the most interesting code. Pair programming addresses this issue, as thoughts can be shared during the process. This higher quality transfer of knowledge improves the quality of the system. And it even reduces the need for asynchronous code reviews.
Take-away #9: Best practices keep your technical debt low
What is technical debt, how does it arise and how can we deal with it? Is it possible to avoid it altogether? In her talk at JAX London, Dr. Carola Lilienthal, managing director at WPS – Workplace Solutions, addressed this issue and offered insight into how to resolve it. We caught up with her and interviewed her on the topic.
Hear what she has to say about different methods for keeping your technical debt low, what to look out for when starting a new project, and why it still makes sense to maintain software that has accumulated a large amount of technical debt over the years. While technical debt is a recurring issue, Dr. Carola Lilienthal gave some advice on how to keep working on it. The methods are known to developers already, e.g. keeping up with your documentation or implementing good architectural design.
All these very old best practices that we have in software development – if you can follow them, and if you have time to refactor your system every now and then, the technical debt will be low.
Take-away #10: Trust starts with trusting
In his keynote, Agile Coach Marc Burgauer asked the question about the cohesion in a development team. For him, everything revolves around trust. “Trust is the metric that best reflects the quality of our relationships and our social relationships”, he stated. It is in an environment of trust where individuals can open up, discuss their own mistakes and learn from each other.
But how can we create an environment of trust?
Trust begins with trusting, says Burgauer. If you do not give a leap of faith, if you do not run the risk of disappointment, it will be difficult to gain trust from the other side.
What is trust? “Choosing to make something important to you vulnerable to the action of someone else”, was Burgauer’s message to take away from his inspiring opening keynote.
Here are some additional voices from JAX London:
— JAX London (@jaxlondon) October 9, 2019
— JAX London (@jaxlondon) October 8, 2019
— JAX London (@jaxlondon) October 8, 2019