Java Annotated Monthly – December 2021
It’s the last Java Annotated Monthly of 2021, and the last Java Annotated Monthly that I, Trisha, will personally produce. But never fear, as you’ve seen this year there are others in JetBrains who have already given their own voices to Annotated Monthly, I know I am leaving it in more than capable hands. I have been the caretaker of this newsletter for over five years, and this is my 56th issue!! It’s time for others to make it their own, and I look forward to seeing that.
- Microsoft Deepens Its Investments in Java – I’m a fan of having multiple big players in the OpenJDK space, and I think it reduces the risk of a single viewpoint directing the future of Java.
- JDK 18 Features – the list of JEPs (changes) for Java 18 is nearly complete.
- Project Loom Early-Access Builds – if you’re disappointed Loom isn’t in 18, you can still get an early access build with Loom.
- Java LTS – perspective of a library author – there’s a lot of conversation around at the moment, especially from library maintainers, about the proposal to move to a two-year cadence for Long Term Support releases. This article is one point of view.
- Is Java SE open source software? The short answer is ‘yes.’
- 2022 Java Developer Productivity Survey – Feel free to complete JRebel’s Developer Productivity Survey.
- Spring Boot 2.6 is now available.
- 2021 Executive Committee (EC) Election Results – I’m happy to see Azul Systems back, but really sad to see Tomitribe leave. David and Amelia have been tireless in their efforts to humanize the JCP and the developers it serves.
Java Tutorials & Tips
- Fight ambiguity and improve your code with Java 17’s sealed classes – from our own Mala Gupta.
- Quarkus and the Google Cloud Functions.
- Hibernate goes Reactive – What Does That Mean? – “Hibernate Reactive Version 1.00 fosters non-blocking I/O access to the database plus reactive extensions”. This article gets under the covers to find out why this helps.
- How to sign up for an Oracle Java Certification exam – “Oracle changed the process for signing up for a test in person.”
- Keeping Pace with Java (video with transcript) – Marc Hoffmann attempts to answer what the important aspects of the new Java release schedule are, and what a pragmatic and sustainable update strategy looks like.
- 5 Mundane Java Performance Tips – good tips here. I’m surprised not to see anything about String concatenation – when I was working on a lightweight library, we got a huge performance improvement by using StringBuilder instead of String concatenation to create our logged Strings.
- GC progress from JDK 8 to JDK 17 – there have been a lot of changes to Garbage Collection, and new Garbage Collectors added to Java since Java 8. Understanding GC is still a key part of getting the best performance out of your application.
Languages, Frameworks, Libraries and Technologies
- Gradle Release Notes – this release adds support for building projects with Java 17, and updates the Scala plugin to support Scala 3.
- The Eclipse Collections Code Katas – code katas are a really nice way to grow your coding skills, and develop muscle memory with the IDE.
- Migrating from Java to Kotlin: Collections and iterating through them – even if you don’t intend to use Kotlin, this may be interesting and helpful. I found that understanding something about Groovy collections helped me to understand Kotlin ones, and understanding how to work with Kotlin collections helped me when Java 8 added the Streams API.
- Implementing a Dynamic REST Query Language in Micronaut with JPA and QueryDSL.
- Pants Build System Adds Support for Java, Scala, and Go – not sure if the authors are aware that Pants doesn’t mean the same thing to Brits as to Americans.
- How to Use Amazon SQS in a Spring Boot App – “In this blog, you will learn how to use Amazon Simple Queue Service (SQS) in a Spring Boot App”.
- Advent of Code 2021 in Kotlin – Win Prizes, Solve Problems, Have Fun!
- Announcing Kotlin support for protocol buffers – I think a lot of people will be happy to see this.
- Kotlin 1.6.0 Released – detailed blog post, plus videos.
- Merry Christmas And Happy Fallback With Microprofile.
- MongoDB with Docker in IntelliJ IDEA (video) – Dalia and I had fun recording a pair-programming-style video on getting started with MongoDB, Docker, and IntelliJ IDEA.
Playing with Spring Boot 2.6.0 on Azure Functions, I now have around 5 seconds cold starts with the JVM, and 2 seconds cold starts with GraalVM, here are some details ⬇️ (1/6)— Julien Dubois (@juliendubois) November 30, 2021
Conferences and Events
In-person events have been tentatively happening; in fact, we had developer advocates at AWS re:Invent and NDC Oslo this week. Who knows what 2022 holds? Hopefully some chances to meet (safely) in person.
Software Engineering, People and Process
- On parallelism and concurrency – It’s really common to mix up these two concepts, and many of us don’t even realize they’re different. Ron Pressler, who’s leading Project Loom, explains what the terms mean and what sort of problems they solve.
- Agility ≠ Speed – Kevlin Henney always writes thought-provoking pieces. In this one he covers topics like how naming matters, and how what we measure impacts what we do.
- Patterns of Effective Teams (video) – this older talk (2017) from Dan North has interesting observations on how to work more effectively.
- How To Build Quality Software Fast (video) – Dave Farley’s argument is how focusing on quality, far from slowing you down, actually speeds you up. And I agree.
- How To Be A GREAT Programmer (video) – another video from Dave Farley that I violently agree with.
- By the way, since I’ve already mentioned Dave a bunch, I want to mention his new book Modern Software Engineering. I was very fortunate to be able to read an early access version of it (which I devoured over a weekend in summer). I loved it so much that Dave honored me by asking me to write the Foreword (and no, I don’t get any royalties if you buy it!!).
- Keep an eye out on Dave’s YouTube channel, he’s got some great guest coming up in a new series of casual chats. You might recognize a face or two…
Revealing the first guest on my new series ‘The Engineering Room’ tomorrow 👀
Discussions with a few of the most influential people in our industry!
Any guesses as to who’s joining me over the next month? 🤔#softwareengineer pic.twitter.com/q4zvZ8yGNE— Dave Farley (@davefarley77) December 2, 2021
Culture & Community
Time to rethink the live coding interview for any company wanting to hire women, from underrepresented groups and those with performance anxiety.
Don’t take it from me. Take it from @cherthedev, @gurlcode, @erinfoox, and dozens of other engineers who shared the same in private. pic.twitter.com/COO5KnSiNJ— Gergely Orosz (@GergelyOrosz) November 26, 2021
- I came across several articles about technical interviews this month:
- Debugging the Technical Interview. Methods and Cheating – this was actually my favorite of all the articles, and it challenged me to rethink my own opinions.
- Software Interviews Suck – Here is How to Fix Them.
- How to be a Great Technical Interviewer.
- I wrote two pieces on a related topic quite a while back. My ideas have evolved from then (even just from reading the articles above!) but there are still valid points: part 1 and part 2.
- C Is The Greenest Programming Language – some time ago, when I was working with the Disruptor, I tried to do some research to argue that writing high performance code was a “green” matter, a way to help the environment. This article has done some research on the topic, but I feel like there’s an awful lot of “it depends” here – the JVM does a lot of helpful stuff while code is running, I wonder if that was taken into account? What about the cost of producing an application in a given language? If it’s faster/easier to run/test/debug, that surely also has an impact on the carbon footprint of the application? Anyway, I think it’s interesting to consider our impact on the environment when we’re writing and running code.
- 14 Ways to Eliminate ADHD Afternoon Crashes – contains helpful tips even if you’re not struggling with ADHD.
- Avoiding burnout as an ambitious developer – I have not succeeded.
- Helen Scott: It’s My Last Day at JetBrains – 😭 I’m so sad that Helen’s leaving! She’s been a key part of the Java Advocacy team, she launched and nurtured the IntelliJ IDEA Guide, she created a completely new style of YouTube video (Helen’s Take On…) for IntelliJ IDEA which inspired me to try new things, she’s been the rock that I lean on (and throw work at when I’m too overloaded to do it myself), and she’s been the voice that always reminds us to consider new users or those unfamiliar with the tools or technology. Goodbye Helen, you will be missed!
Helen is leaving me… I mean, us! I am SO SAD 😭😭😭@HelenJoScott, you have been an amazing team member, a brilliant advocate, and an inspiration to me. THANK YOU for giving @jetbrains and @intellijidea your time, expertise, and blood sweat and tears.https://t.co/VkNKGJzoe9— Trisha Gee (@trisha_gee) December 3, 2021
As well as the usual great stuff on our blogs and YouTube channels, there were two huge announcements from JetBrains this week – Remote Development and Fleet:
This is big! We’re introducing remote development in the 2021.3 JetBrains release wave:
– Run your IDE on a remote server
– Work from any laptop, anywhere
– Manage dev environments with @JetBrains_Space
Bonus: check out @JetBrains_Fleet
Find out more https://t.co/AbdYkaItlX pic.twitter.com/YuYu5JrA8b— JetBrains (@jetbrains) November 29, 2021
Fleet is an IDE and a lightweight editor. It’s flexible and polyglot, with support for collaboration and remote workflows. It’s built from scratch but uses the @intellijidea code-processing engine for smart code editing. Read more and join the Preview https://t.co/pbERl3NvV7 pic.twitter.com/5MZEwAWo8Q— JetBrains Fleet (@JetBrains_Fleet) November 29, 2021
- Remote Development – supported in the latest releases of IntelliJ IDEA Ultimate, PyCharm, GoLand, PhpStorm, and RubyMine.
- IntelliJ IDEA 2021.3 Is Out!
- Teaching Introductory Computer Science in Kotlin (video).
- Live Stream Recording – IntelliJ IDEA and JUnit: Writing, Finding, and Running Tests (blog and video).
- Join us for this month’s Live Streams:
If you have any interesting or useful Java / JVM news to share via Java Annotated Monthly, leave a comment or email us (email@example.com).