How to Build Java Applications Today: August 9, 2021
AdoptOpenJDK = Eclipse Adoptium, Java climbs to #2 in RedMonk rankings, Java drops to #3 in TIOBE Index, Hibernate 5.5.5/6, MicroProfile 4.1, Quarkus 2.1.1, Open Liberty 22.214.171.124, Apache Camel 3.11.1.
This is issue #48 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
7 Ps: Proper Planning and Preparation Prevents Piss Poor Performance.
This British army saying makes for pretty powerful project prolongation.
Spring One is just a few weeks away. And this is a “Spring One with a major new Spring release” - Spring 6.0. I’m looking forward to hearing what we’ll get. And how will “Spring + Spring Native” compare with Quarkus, Micronaut, and the other “challenger frameworks”?
On a sad note: Spring One is the only conference this year that declined all three of my proposed Java talks. I think Spring One was always a long shot, given that I just started conference talks in earnest this year. Still, rejection hurts! 😩
22 YEARS OF FULL-STACK JAVA FOR HIRE THIS DECEMBER
I’m a full-stack Java developer with 22 years of experience, looking for a project in December 2021, in Milton Keynes, London, or remote. I’ll work as a contractor or fixed-term employee but don’t take permanent positions.
Interested? Then check out my resume & work samples!
AdoptOpenJDK Is Now Eclipse Adoptium
It’s official now: The most popular OpenJDK distribution is open for business at the Eclipse Foundation! We can now get our JDKs for Windows, Mac & Linux at https://adoptium.net/releases. As of August 9, there are no Docker images yet, so the old AdoptOpenJDK images have to do. Azul was first out of the gate to offer commercial support.
There are five sub-projects under the Adoptium umbrella. The most interesting to us is “Temurin”, which produces the OpenJDK runtimes. “AQAvit” is the test suite.
And then we have “Mission Control”, which “enables you to monitor and manage Java applications without introducing the performance overhead normally associated with these types of tools”. This sounds an awful lot like the JDK Flight Recorder (JFR) I wrote about five weeks (see issue #43). Marcus Hirt, one of the key people behind that project, had sounded the alarm back then: “For JFR to remain the premium, best in class, production profiling platform, some investment will be needed. […] The OpenJDK community will need to be involved.” Seems like he got his wish: Markus is one of the three project leads of “Mission Control”.
Java wouldn’t be Java without Oracle lawyers making life harder: Because Adoptium uses the Oracle Java SE Test Compatibility Kit, it can’t release OpenJ9-based or GraalVM-based runtimes. OpenJ9 is the only non-Hotspot JVM in wide circulation. It originated at IBM and is now an Eclipse project. It typically starts faster and uses less memory than Hotspot (see my lightning talk from May 2020). IBM joined Adoptium in April (see issue #32) and now distributes the OpenJ9 builds as “IBM Semeru”.
As a “Man of the Pen”, I appreciate the care that Adoptium took to name its projects: “Adoptium” sounds Latin (for old folks like me) or like a spell from Harry Potter (for the younger folks). “AQAvit” sounds like the Scandinavian schnapps that’s also popular in my German home country. And “Temurin” is an anagram of “runtime”.
I don’t think that IBM’s “Semeru” is an anagram: “resume” is the only possible word. Or maybe that’s what you always keep up-to-date at IBM? And good for Oracle: There’s no anagram for “lawyerssuck”!
Java Climbs to #2 in RedMonk Ranking
“The language once created to run cable set top boxes continues to be a workhorse, and importantly one that has consistently been able to find new work to do. Java’s performance on these rankings continues to impress, all these years later, and as it’s shown a remarkable ability to adapt to a rapidly changing landscape it’s a language that would be difficult to bet against.”
Especially sweet is that the new kids on the block were stagnant - TypeScript, Go, Kotlin, and Rust. Only Dart moved up one place - and Dart is a lot like Java (see issue #45).
Java Drops to #3 in Tiobe Index
You win one, you lose one: After briefly ascending from #3 to #2 in the TIOBE index in July (see issue #44), Java’s now back at #3 in August behind Python and C at #1. TIOBE measures programming language popularity with search engine queries. At least that’s what I think - here’s what TIOBE writes:
“The ratings are based on the number of skilled engineers world-wide, courses and third party vendors. Popular search engines such as Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube and Baidu are used to calculate the ratings.”
Do you now know how TIOBE measures? Nope, didn’t either.
Hibernate 5.5.5.Final & 5.5.6.Final
The good thing about a software standard is that there can be many different implementations. The bad thing about a software standard is that there can be many different implementations! That’s why this release of the “Microservices with Java/Jakarta EE parts” framework MicroProfile now defines exactly which Test Compatibility Kits (TCKs) implementations have to pass: 8 MicroProfile Specification TCKs and 5 Jakarta Specification TCKs.
These are the projects that implement MicroProfile 4.1:
I was surprised to see Quarkus & Helidon on the list. I guess my enemy’s enemy is my friend…
The MicroProfile Working Group also forked the Eclipse Foundation Specification Process to release three times a year. I wonder how the new Eclipse IDE WG specifies things, given that it releases four times a year (see issue #41).
Another week, another Quarkus release. This looks substantial, with the changelog listing 117 fixes & improvements.
Open Liberty 126.96.36.199
Open Liberty is IBM’s “MicroProfile as an app server” implementation. This is a bug fix release, with a few notable bugs listed in the announcement. The “full list of bugs fixed in 188.8.131.52” is unknown - the provided link shows no issues. 😩
And what’s up with that version number “184.108.40.206”, IBM? Isn’t that one digit too many? Semantic versioning not working out for you?
Apache Camel 3.11.1
Apache Camel is an integration framework that implements the “Enterprise Integration Patterns” from the book of the same name. I admit that I copied this sentence from issue #43 because I think most people still don’t know what the heck Apache Camel is. Well, now you do.
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.