How to Build Java Applications Today: March 29, 2021
My “IT-Tage 365” talk, AdoptOpenJDK gets Eclipse working group and TCK, JRebel’s 2021 Microservices Developer Report, Spring turns 17, IntelliJ IDEA 2020.3.3, Jetty 11, and Open Liberty 18.104.22.168.
This is issue #29 of my weekly newsletter, “How To Build Java Applications Today”. I read all the Java newsletters, so you don’t have to!
Quote of the Week
Happiness is having a large, loving, caring, close-knit family in another city.
My “IT-Tage 365” Talk
The conference was well-organized and ran over Zoom. My talk was the last one of the day, so my audience’s enthusiasm was noticeably dampened - I got no questions! Either that or I gave a really boring presentation.
AdoptOpenJDK Gets Eclipse Working Group and Access to TCK
At least, I think it’s another step on the road there. But I’m not sure: The project downloads page is still empty, but the press release is sufficiently vague, and it’s Eclipse. These guys couldn’t write decent release notes for their own IDE if their life depended on it! 😒
One interesting piece of news was that Adoptium now can use the official JDK tests (the so-called TCK suite). This will lead to better Java releases from AdoptOpenJDK/Adoptium! So Eclipse managed to twist Oracle’s arm here in a way AdoptOpenJDK never could. Kudos!
JRebel’s 2021 Microservices Developer Report
This report is old news from February 18 this year. But it still has some juicy bits. For instance, it claims that microservices adoption stalls at 49% (vs. 50% last year), while monolith adoption surged from 27% last year to 42% this year. Did they maybe just ask a more conservative bunch of developers this year? Or are microservices really in the “Trough of Disillusionment” from Gartner’s hype cycle?
I personally believe microservices help you solve organizational and technical challenges at the cost of increased complexity. What challenges? You know, like the inability to coordinate code releases across your organization, or vastly different scaling needs. And what complexity? Well, microservices are distributed computing - and the first rule of distributed computing is: “Don’t!” 😌
So, go for microservices if you have these organizational and/or technical challenges. If you don’t, then stay away and keep your monolith. A well-structured one, of course!
Spring Turns 17
Has it really been 17 years? And is that the original Spring 1.0 blog post from 2004? “Yes” is the answer to both questions. Time wasn’t kind to the blog post, though: It had at least one Content Management System (CMS) migration too many. The hard-coded line breaks look wrong even on a phone today…
Time was much kinder to Spring itself: At age 17, it still rules the Java world (see “JRebel 2021 Java Technology Report“ in issue 27). And with Spring Native looking quite promising (see “Kicking Spring Native's Tires“ in last week’s issue), chances are that Spring can fend off competitors old and new for a couple more years.
Spring ushered in an era of simpler enterprise Java. Now whether you use the Spring or one of its competitors, you reap the benefits of those advances either way. Thank you, Spring!
IntelliJ IDEA 2020.3.3
“Do you trust this project?” - “Hell no, I wrote it six months ago!”
Apparently, I’m not alone here: IntelliJ IDEA now asks us if we trust the project we’re about to open. Why? Just opening a project in IntelliJ already triggers build scripts - and they could be malicious! And “malicious” can mean “bad guys steal our data” - or “doing what I programmed it to do six months ago”… 🤣
Anyhow, IntelliJ now lets us open the project, keep it closed, or preview it in safe mode (where no project code is executed).
I don’t know whether throwing another “Are you sure?” dialogue our way solves this problem. I think usability research shows that most people happily “click away” this kind of dialogue without thinking much about it. It’s better to give us users a chance to undo a dangerous action instead, after realizing our mistake. That’s what the recycle bin for deleted files is - an undo.
Unlike pulling deleted files out of the recycle bin, we can’t easily undo the damage of running malicious build scripts. So I see where IntelliJ’s in a pickle here. And I applaud them for taking the first step to fix this. To be continued, I’m sure.
“One of the world’s most widely deployed web server and servlet containers“ just released version 11: Jetty. Or as it’s also known: “One of these other servlet containers in Spring Boot when you don’t want Tomcat”.
The headline feature is that it’s “fully compatible with the Jakarta EE 9 Servlet specifications“. In other words: It’s Servlets 4.0 from September 2017, repackaged once as “Jakarta EE 8” and repackaged once more as “Jakarta EE 9” late last year. To be fair, the “javax.*” in Jakarta EE 8 were renamed to “jakarta.*” in Jakarta EE 9. Progress!
Open Liberty 22.214.171.124
At least Jetty’s an option in Spring Boot. IBM’s Open Liberty wishes it was! Instead, all it can tout in its latest release is support for MicroProfile 4.0, bug fixes - and a version number that violates semantic versioning. Really, IBM, a minor version and a patch version weren’t enough for you, and you had to add a “third dot“ there?!
Well, the punishment for such gross version negligence seems to be non-adoption: JRebel’s application server market share survey puts you in the “Other” category with a combined 6% (see “JRebel 2021 Java Technology Report“ in issue #27). If it’s any consolation: Big brother WebSphere’s at 14% application server market share. And little brother Quarkus has 6% in Java Application Frameworks.
Karsten Silz is the author of this newsletter. He has been a Java developer for 22 years.
He grew up in East Germany, behind the Iron Curtain. He wrote his first BASIC program on a Sinclair Spectrum ZX81 in 1984 and never looked back. He got a Master's degree in Computer Science from the Dresden University of Technology in 1996.
Karsten has developed software in five European countries and the U.S. since 1996. In 2004, he co-founded a software product start-up in the U.S. The product reached an 80% market share in the North American cable TV industry. During power outages, it protected TV, Internet, and phone services for 50 million households. Karsten led product development for 13 years and left after the company was sold successfully.
Since 2017, he has worked as a full-stack Java contractor for web (Angular) and mobile (Flutter) in Germany and the U.K. He co-founded the SaaS start-up "Your Home in Good Hands" as CTO in the U.K. in 2020.