How to Build Java Applications Today: February 22, 2021
I'll present "Front-Ends for Java Developers" at the LJC, concurrency stress test tool JCStress, JakartaOne Livestream 2020, SolarWinds hack for Java devs, Java on ARM, Spring Boot 2.4.3 & 2.3.9.
Introduction
This is issue #23 of my weekly newsletter “How To Build Java Applications Today” - for Java developers by a Java developer. The newsletter complements my site betterprojectsfaster.com. There you can find my tutorials, conference talks, JUG talks, articles I wrote for other sites, and blog posts.
Last week, some of my time went into my new project. But I spent most of it on my upcoming LJC talk, “How Should Java Developers Build Front-Ends for Web, Mobile & Desktop Today?“. It’s the last test before I present the same topic at JavaLand (but in German)!
I'll Present "Front-Ends for Java Developers" to the LJC on Feb 25, 2021
On Thursday, February 25, 2021, I will present “How Should Java Developers Build Front-Ends for Web, Mobile & Desktop Today?” at the London Java Community (LJC). In my 30-minute talk, I will look at various frameworks from a Java developer's perspective and suggest which toolkits to use in typical scenarios.
Sure, you can view it soon afterward on YouTube at double speed. But if you want to ask me questions, you have to be there live! So sign up and join on Feb 25 at 6 pm UTC!
Weekly Links
Java
Concurrency Stress Test Tool JCStress
So, which part of a Java application is the hardest one to test? Hm… Whether our users actually like the application? Well, that’s not a test. That’s an automatic fail! Users may not know what they want, but they do know that it’s not the application we just gave them. 😏
Anyhow, I suppose “concurrency” is high up in that ranking. That’s true even for the JVM developers at Oracle! So they created JCStress to find concurrency bugs. This tool, or at least the example chosen in this article, does look more complicated than your average JUnit test. But then concurrency is hard. And where else in JUnit land can we label a result as Expect.ACCEPTABLE_INTERESTING
!?
JakartaOne Livestream 2020
Late last year, Eclipse released MicroProfile 4.0 and Jakarta EE 9. MicroProfile is “Spring Boot with Java/Jakarta EE parts plus new stuff”. Jakarta EE 9 is already the third outing of Java EE 8 (from 2017): Jakarta EE 8 was “Java EE 8, built by Eclipse”, Jakarta EE 9 is “Java EE 8, with packages renamed from javax
to jakarta
“. But this means that the Eclipse is now the place for the two standards-based competitors to Spring & Spring Boot.
That’s why the “JakartaOne Livestream 2020” on December 8 last year was all about MicroProfile & Jakarta EE. The talks & sessions are also on YouTube. I only watched the “Jakarta EE 10 Round Table”. I learned two things there: At least last December, it wasn’t clear what would be in Jakarta EE 10 or when it will be ready. And the MicroProfile guys do want to stay separate from Jakarta EE.
The SolarWinds Hack for Java Developers
In early January, I wrote about the SolarWinds hack. It’s one of those hacks that got mainstream attention. What happened? In March 2020, the United States government and 200 organizations worldwide were the targets of a cyberattack. The unwilling “carrier” of that attack was the network monitoring tool SolarWinds. And the attackers ran a so-called “supply chain attack,” infecting SolarWinds during its build process.
So why do we Java developers care? Because of DevOps: If we now test, run & support our Java applications, then we do worry about such attacks against our applications. This article details three countermeasures available in the standard JDK: Monitoring IO and network traffic with the JDK Flight Recorder, monitoring method entry/exit with instrumentation, and using signed JARs.
Java on ARM Processors
Nearly all the PC and servers we use run on Intel’s x86 CPU architecture. That’s about to change because of ARM. That’s the CPU architecture that powers our smartphones. Cloud providers like Amazon now use ARM to build their own data center CPUs. And Apple will switch all Macs to ARM by mid-2022 and is already off to a great start.
So what does that mean for us Java developers? It means that the puns practically write themselves: “Intel embroiled in ARMs race”. “Intel tries to keep competitors at ARMs length”. “Intel tries to stay out of H-ARMs way”.
But seriously now: What does that mean for us Java developers? For most of us, nothing changes - we write Java code, the JVM executes it on x86 and ARM. Write once, run anywhere! Java 15 already runs on ARM Linux, Java 16 will run on ARM Windows, and Java 17 will hopefully broadly run on ARM macOS. But if our Java applications contain native x86 code, then we have to port that. And if we buy one of these fancy new ARM Macs, we have to get the special OpenJDK ARM builds from Azul.
Releases
Spring Boot 2.4.3 and 2.3.9
Two run-of-the-mill maintenance releases are here. Spring Boot 2.4.3 has 75 bug fixes, documentation improvements, and dependency upgrades, and Spring Boot 2.3.9 has 47 of them. Enough said.