How to Build Java Applications Today: August 2, 2021
Stack Overflow “2021 Developer Survey”, fallacies of distributed computing, old COBOL works better with new COBOL, IntelliJ IDEA 2021.2, and Quarkus 2.1.
This is issue 47 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”.
Quote of the Week
Your margin is my opportunity.
In my current project, I wanted to start the App Store/Google Play Store review process for our iOS and Android app last week. Exciting — I’ve never done that! But then I needed to upgrade the Flutter framework to version 2.2. And that version has null safety — fewer “NullPointerExceptions in Dart”. Sounds good, right?
Yes, but it doesn’t come free: I had to upgrade every library I use, dragging in other changes. And then I had to declare for every variable, field, and parameter in my app whether it can be
null or not. I think I’m mostly done by now and hope that my app is better for it. I’ll keep you posted!
Issue 45 from July 26, 2021
Last week I wrote about the three Quarkus 2.0 bug-fix releases as a sign that the Quarkus 2.0 release was premature. That was wrong! A big “Thank you!” goes to Sanne Grinovero for sparking a discussion with me.
But “subatomic” still makes no sense to me: It means “sub-bit” for computer memory, which no software can do.
To add insult to injury, Quarkus 2.1 was released last week. Read all about it in the “Release” section at the end!
Stack Overflow “2021 Developer Survey”
After the JetBrains “State of Developer Ecosystem 2021” boasted nearly 32k developers (see issue #45), the “2021 Developer Survey” from Stack Overflow has more than 83k responses. The survey ran from May 25 to June 15. So, is Java declining here as well?
Yes. Compared to 2020, Java’s dropped from programming language #3 (with 38.4%) among professional developers to #4 (with 34.5%). TypeScript passed us by!
The good news: “Love” for Java has grown from 44.1% last year to 47.2%, while “dread” declined from 55.9% to 52.9%. Still, Java scores worse than most languages in “love/dread”: We’re even behind C++! And fewer people want to learn Java this year: 6.8% vs. 8.8%.
Worst of all: Nearly all other developers make more money than us Java guys, except for Delphi, PHP & Dart! The survey gives Java “only” a median yearly salary of 51,888 US dollars. But there’s good news for other JVM languages: Kotlin is at 55k, Groovy at 75k (#11), and Scala at nearly 78k (#6). And Clojure takes the top spot with 95k, way ahead of F# (81k), Erlang, Perl, and Ruby (all 80k)!
When it comes to IDEs, Visual Studio Code is most loved (79%). IntelliJ sits at a respectable 68%. The other Java IDEs take a beating: Eclipse is second-to-last with 31% love, while NetBeans is last with 22%. Strangely enough, last year’s survey didn’t include IDEs.
There’s much more in the survey — demographics, frameworks, databases, tools. And like the JetBrains survey, it’s a web page, not a PDF.
The Fallacies of Distributed Computing
Around 1992–93, L. Peter Deutsch presented these fallacies at Sun. For my younger readers: That’s the company that invented Java. Now with microservice gaining ground, it’s a good time to look at these wrong assumptions again. Mr. Deutsch was recently interviewed for a podcast and corrected the Wikipedia article about them.
Here are the fallacies:
- The network is reliable.
- Latency is zero.
- Bandwidth is infinite.
- The network is secure.
- Topology doesn’t change.
- There is one administrator.
- Transport cost is zero.
- The network is homogeneous.
- We all trust each other.
The first four already existed at Sun, but Peter added the second four (not three, as Wikipedia says). Rule #9 is attributed to the father of Java, James Gosling. It’s missing from Wikipedia but Mr. Deutsch thinks it belongs to the list.
When we see these fallacies, it’s not surprising that some people only have one rule for distributed computing: Don’t. 😁 But hey, most of us don’t have a choice here!
So if you want to hear Mr. Deutsch discuss how these fallacies came to be, what they mean, and how they’re holding up today, then listen to this podcast episode.
Over the Fence
Old COBOL Works Better With New COBOL
Java is often called “The new COBOL”. It’s easy to forget that the old COBOL is still around! Granted, the Stack Overflow “2021 Developer Survey” puts COBOL at the very bottom of the “Loved vs Dreaded” list: 16% love vs. 47% for Java. But according to that study, COBOL developers also earn a thousand US dollars more per year than us Java guys!
So it is good to see IBM officially blesses Java as the heir to the COBOL throne: Version 2.5 of the mainframe operating system z/OS will make COBOL work better with Java. More specifically, that release “extends existing application programming models with support for parallel 31-bit and 64-bit addressing, simplifying enterprise application modernization”.
z/OS 2.5 also contains more artificial intelligence and will work better with cloud storage and Linux applications.
Porting COBOL to Java may not be your cup of tea. But it’s good to know that this cup is there at all!
IntelliJ IDEA 2021.2
Last week brought a new release of the most popular Java IDE. What’s new?
It’s a long list, complete with a 25-minute video. JetBrains seriously calls that video a “short tour”. What would the long tour look like — two hours?!
I just used 2021.2 for a few days, and nothing has stood out for me so far. Well, one thing did: The update-in-place from 2021.1 failed for me. Version 2021.2 wouldn’t start, so I had to download a full copy from the JetBrains site again. That one greeted me with a message: “Plugin ‘com.intellij.bigdecimal-folding’ failed to initialize and will be disabled. Please restart IntelliJ IDEA.” 😩 But after that restart, I was back in business.
Talking about update grievances: Android Studio (which uses IntelliJ) also failed to update last week. Somehow, it picked up old IntelliJ 2019 settings and couldn’t start with Java 8. I had to completely uninstall and reinstall it.
Another week, another Quarkus release: Version 2.1 is here! The announcement highlights four features: Dev Services start test containers automatically and now support the identity server Keycloak, Microsoft SQL Server has a reactive driver, and Kotlin got bumped to version 1.5.21.
What’s more interesting is that the tagline changed again:
- As I wrote last week, the old tagline was “Supersonic subatomic Java”. And Quarkus was described as “A Kubernetes Native Java stack tailored for OpenJDK HotSpot and GraalVM, crafted from the best of breed Java libraries and standards”.
- On July 6, the tagline disappeared in favor of “QUARKUS 2.0 IS HERE!”. And Quarkus was described as follows: “Quarkus 2.0 continues the mission of making Java the preferred framework for Kubernetes-native development with new developer tools and improved performance”.
- As of August 2, Quarkus is back to “Supersonic subatomic Java” and the old description. I don’t know if that came with Quarkus 2.1 because the Internet Archive hasn’t picked up that changes yet on August 2.
Karsten Silz is the author of this newsletter. He is a full-stack web & mobile developer with 22 years of Java experience, author, speaker, and marathon runner. 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.