Java applications in Windows 11 app store, Scala 3, Jakarta EE 10, Kotlin 1.5.20, Eclipse GlassFish 9.2, a lot of Spring releases, Iron Cowboy.
This is issue 42 of my weekly newsletter, “How To Build Java Applications Today”. I read all the Java newsletters, so you don’t have to! And it’s “Java news with a smile”.
At the ripe age of 50, I ran my first marathon yesterday: 3:53:38h. I had near-ideal conditions with a flat course and “British sunshine” (>10 degrees Celsius/50 degrees Fahrenheit, cloudy, no rain). Honestly, I couldn’t do this again today. Why? Because I turned 51 today! That, and I can’t run two marathons back-to-back.
Why do I run marathons? I did track & field while in school, though no running. A couple of years ago, I pondered running as a sport. So I asked my wife: “Honey, it’s either running, a motorbike, or an affair”. Of course, I was just kidding about one of these options: A motorbike?! What am I - a dentist in a midlife crisis?! An organ donor on wheels? So we settled on running.
Now before I get too chuffed with myself: Check out the new “And Now for Something Completely Different” section at the end for some truly spectacular achievements.
Last week I wrote about the Snyk study that’s based on a developer survey. Now Snyk has an open-source tool that scans our build files for security vulnerabilities. So
I asked Snyk to use data collected by that tool instead of a survey to tell us what frameworks and build tools we use.
That was 50% percent stupid of me, as Brian Vermeer, developer advocate at Snyk, pointed out: The study has that data already for build tools (page 21 in the PDF). I’m sorry for this mistake!
I also think that this comment on the study was a cheap shot: “Don’t ask me why it took three months to publish”. It took JRebel also three months to publish their study. And this is probably a side project for Brian, with two articles from other companies (meaning more coordination). I’m sorry again for being a jerk here.
Spring Native uses GraalVM to turn Spring Boot applications into native images. My report about the release included a video from the Quarkus team. It showed how Spring Boot used 126 MB in a test when compiled natively - vs. 15 MB for Quarkus.
It looks like the Spring team is aware of these deficiencies: They’re hiring a developer to work on Spring Native. Better late than never, I guess! Let’s see what results Spring Native will achieve with Spring Boot 3 (???) this fall. I’m sure the Quarkus guys will check that!
Last week, Microsoft announced Windows 11. It’s a 64-Bit only UI refresh with enhancements for the app store & gaming that can also run Android apps (from the Amazon app store, not the Google one). The Verge has the details.
Here’s what’s interesting to us Java developers: We can put our Java applications into the Windows 11 app store! Now before we get too excited, let’s remember that we mostly build business applications. And business PCs are typically locked down so that users can’t install applications, app store or not. Still, we appreciate the gesture from the company that once built “Visual J++”!
When will Windows 11 ship?
According to Microsoft, new PCs with Windows 11 will ship “later this year” (read: holiday season). And we can upgrade from Windows 10 to 11 “sometime in early 2022” if our PC is up for that (this Microsoft tool checks that).
Arguably, many of us still struggle with object-oriented programming. No wonder that functional programming hasn’t gone mainstream! But if you’re into functional programming, then Scala is your language of choice on the JVM. And after eight years of work, the Scala team released version 3.0: A "game changer [...] that will greatly improve the day-to-day experience of every Scala programmer".
I’ve never used Scala, so I can’t appraise these modest claims. Here’s what’s new: The syntax is more concise, the language has new features, they improved the type system and object-oriented programming, added metaprogramming tools and compiler options.
More details are in my InfoQ article. Yep, this is another case I where rip-off myself. Although I prefer the term “recycle”.
Jakarta EE 9.1 (Jakarta 9 + Java 11) was released a month ago (see section “Jakarta EE 9.1” in issue 38). I completely missed that three months ago, a member of the Jakarta EE team already spilled the beans on what to expect for Jakarta EE 10. A fellow writer at InfoQ reminded me. So here are the plans for Jakarta EE 10.
All parts of Jakarta will use a unified dependency injection component, which will also change many existing annotations. Jakarta Server Faces 4.0 will drop already deprecated legacy functionality and may get a simple REST lifecycle. The Jakarta Security API will get new authentication mechanisms (possibly
Digest) and may get custom authorization rules. The Jakarta REST API will deprecate the Java Architecture for XML Binding (JAXB). The configuration of the Jakarta Concurrency API will become standardized (it currently is container-specific).
It’s uclear whether pending changes from other APIs will make it into Jakarta EE 10 (Jakarta Persistence and Jakarta Messaging are examples). Also unknown: Will new APIs make it, such as NoSQL, Model View Controller, caching, or configuration?
Jakarta 10 is currently planned for Q1/2022. It will use Java 11 as the source & binary level, though implementations are free to support more recent Java versions (such as the upcoming Java 17).
Kotlin 1.5, the first major release this year, got out eight weeks ago (see issue 35). It now has its first maintenance release: On the JVM, string concatenation is faster, and there is experimental support for calling Lombok-generated methods. Gradle executes parallel Kotlin tasks better and has faster builds in some cases.
Kotlin/Native and Kotlin/JS also got better, but those are niche topics (read the announcement if you’re interested).
GlassFish is a Jakarta EE 9.1 compatible application container. Oracle donated it to Eclipse in 2017. It now runs on Java 16, but that’s “not fully tested”; Java 11 is officially supported. The one new feature is Jakarta MVC (Eclipse Krazo, according to InfoQ).
This pair of maintenance releases has 53 bug fixes, documentation improvements, and dependency upgrades for version 2.5.2 and 33 for 2.4.8.
The announcement lists the changelogs for the 15 (2021.0.2) / 16 (2020.0.10) sub-projects.
A triathlon is swimming, biking, and running. For an “Ironman Triathlon”, that’s 3.9 km (2.4 mi) swimming, 181 km (112 mi) biking, and a full marathon of 42.2 km (26.2 mi). Just finishing this is an enormous accomplishment that I’ll probably never reach.
James “Iron Cowboy” Lawrence is a Canadian triathlete. In 2012, he got a world record for completing 30 Ironman triathlons in 11 countries. That’s more than one race every two weeks! He outdid himself in 2015: He ran 50 Ironman triathlons. On 50 consecutive days. In 50 different US states. And he succeeded! You can watch a documentary about this.
And he did it again: 100 Ironman triathlons in 100 consecutive days! He gave an encore, so it’s 101 triathlons. Ok, he stayed at home in Utah this time, but come on! I want to say that this is the greatest sports accomplishment I’ll ever see in my entire life, but who knows what he’s up to next. He’s 45, so I hope he takes it easy now and stops making everybody else look so weak.
Karsten Silz is the author of this newsletter. He is a full-stack web & mobile developer with 22 years of Java experience, author, and speaker. Karsten got a Master's degree in Computer Science at the Dresden University of Technology (Germany) in 1996.
Karsten has worked in Europe and the US. He co-founded a software start-up in the US in 2004. Karsten led product development for 13 years and left after the company was sold successfully. He co-founded the UK SaaS start-up "Your Home in Good Hands" as CTO in 2020. Since 2019, Karsten also works as a contractor in the UK.