Java Annotated Monthly – January 2021
Well 2020 is over, phew! And holy cow, I know I’m late with this month’s Annotated (because I’m a real human being and like to take vacation) but even so there’s a lot of stuff in this month’s edition! There’s more Java and Tech articles than usual and a bunch of Java news.
Hang on in there for 2021, remember to continue being kind to each other, and to yourself.
- What’s New in Maven 4 – I’ve been working with both Maven and Gradle this month, and I have to say I’m impressed with how seamlessly Maven works with recent releases of Java.
- JetBrains Connect, Ep. 1 – "Moving Java Forward" with Brian Goetz and Trisha Gee – a really fun session where Brian and I get to have a conversation about the modern challenges facing Java. Learn more about JetBrains Connect
- Metaspace in OpenJDK 16 – "When you start using Java 16, you will benefit from the new Metaspace — without doing anything." sounds intriguing
- JDK 16: Stream to List In One Easy Call – useful
- Staring Into My Java Snow Globe 2021 – Simon Ritter usually writes a look forward to the coming year, this one doesn’t have anything too controversial
- Top 10 Most Promising Programming Languages for 2021 – Did I include this because it contains both Java and Kotlin? Yes, yes I did
- When you click on a link to see your colleague Dalia’s interview, and then see that apparently you’re going to be interviewed live in 11 days…
— VMware Tanzu UK (@VMwareTanzuUK) December 24, 2020
Java Tutorials & Tips
- Do Loom’s Claims Stack Up? Part 1: Millions of Threads? and Do Looms Claims Stack Up? Part 2: Thread Pools? – Project Loom is "lightweight threads" for the JVM, really interesting for both old and new Java projects. Well worth reading these articles if you want to understand more about the potential benefits (and drawbacks)
- Smaller, Faster-starting Container Images With jlink and AppCDS – jlink is an interesting new tool, and understanding more about it may be helpful to understand how it might benefit your application
- Towards Continuous Performance Regression Testing – I’ve seen automated performance tests used very effectively to monitor an application’s performance over a number of commits, and it’s a very useful tool in performance sensitive systems
- The JVM Programming Advent Calendar – if you want more great Java content, check out December’s JVM advent articles
- Serialization and deserialization in Java: explaining the Java deserialize vulnerability – it’s important to understand this
- Creating a Java off-heap in-memory database
- What are Hidden Classes in Java 15? – I haven’t found much on Hidden Classes yet so it’s great to see something on the topic
- ByteBuffer and the Dreaded NoSuchMethodError
- Refactoring Java, Part 3: Regaining business agility by simplifying legacy code – I love tutorials that show how IntelliJ IDEA’s refactoring helps in real code, refactoring is what sold me on the IDE in the first place
- Java Syntax Puzzlers – I freaking hate syntax puzzlers cos I hate stuff that behaves in a surprising or unexpected way. Which is actually a good argument for learning some examples of them
- Infinite Precision – if you work on performance sensitive code you probably know a lot of this, but it’s still interesting to read
- HotSpot Intrinsics – "…how the JVM may replace some critical Java methods with more efficient implementations at runtime."
- Thread Local Randoms in Java – I recognise that cache line padding trick to combat False Sharing.
- Using JDK FlightRecorder and JDK Mission Control
- Embracing JVM unified logging (JEP-158 / JEP-271) – finally! I was looking for an article on this back in 2017 when I was demoing Java 9
- Off-Heap memory reconnaissance – this is long!
- Local Variable Type Inference: Declare Var, Not War – overview of var
- Investigating MD5 overheads – it’s always interesting to see how people investigate performance
Languages, Frameworks, Libraries and Technologies
- Fast and stable MongoDB-based tests in Spring – shows a different, and seemingly better, approach to testing MongoDB with Spring applications
- Spring dependencies in Gradle can be tricky – if you are using Gradle for your Spring app you should probably read this
- How do you test your tests? – whether you care about Facebook Engineering (who wrote this) or the specific solutions discussed here, it’s worth reading and having a think about how flaky your tests are, and what you should do about it
- How to Create an AWS Continuous Deployment Pipeline Cont’d
- IntelliJ IDEA: Beyond The Basics – some great tips here
- Don’t use Protobuf for Telemetry – " If you have a low latency or low overhead use case, Protobuf may not be the right choice"
- Apache Kafka® Event Streaming Platform For Kotlin Developers (video) – recording of a JetBrains live stream
- Running Kotlin on Google Cloud (video) – from Google’s James Ward
- Extracting an Extension Function from a Call Chain – this is a really interesting approach (at least for a Java programmer like me who’s never seen this before) to making Kotlin chained operations more readable
- Backend for mobile engineers with Kotlin and Ktor – if you haven’t heard of Ktor yet this is quite a good overview
- Announcing gRPC Kotlin 1.0 for Android and Cloud – "we needed an idiomatic way to do gRPC with Kotlin"
- The JVM is a Multiparadigm Platform: Use this to Improve your Programming – why do I post Kotlin (and other languages) stuff in "Java" Annotated Monthly? This article gives one argument for understanding more about other JVM languages
- 10 Strategies for Developing Reliable Jakarta EE Applications for the Cloud
- Eclipse Collections – 2020 retrospective and The next 5 years for Eclipse Collections – of course it’s useful to read if you use Eclipse collections, but I also find that reading the journeys and future plans for other software gives me ideas for my own systems
- Spring boot 2 with ehcache 3 (jcache) using h2 Database
- Migrating SpringBoot PetClinic REST to Quarkus – this was interesting, particularly the performance numbers
- End2End test with Testcontainers…. and a lot of patience – tectcontainers is definitely in my backlog of "technologies I should learn when I get the time"
- The Problem with Gradle – a detailed and interesting article by the author of "Thinking in Java" about the mindsets that might or might not help when working with Gradle. While I’m not sure I 100% agree with the "all or nothing" conclusion, it’s definitely true (especially given I’ve been working hard with Gradle this week) that an understanding of what it is, and is not, is important to getting it to do anything beyond the basics.
- The problem with Gradle: really? – a counterpoint. If you work with Gradle I recommend reading both and forming your own opinions
- Why I Prefer Flutter Over React Native for App Development – This isn’t a Java, or even a JVM, piece, but it’s relevant to Android developers. I work closely with a startup that recently switched to Flutter after multiple apps with Android (Java) and the developers are really happy with it
- Git Archeology – featuring some nice IntelliJ IDEA tips
- Life as a Developer Advocate, nine months into a pandemic – some definitely resonates with me
- The Perils of Advocacy – I wanted to violently disagree with this, but I also sort of agree. I also forgot that I meant to write a blog post (or two) in response. Add it to my todo list…
- The Rise of the Developer Advocate (same author as above) – an interesting take, and worth reading if you want to understand a little more about the role, but also about the changes in our industry.
Culture & Community
- Continuous Adoption – definitely something to consider with a) security updates for all libraries and b) the fast pace of Java releases
- A bumpy road journey to become a programmer – really liked this honest and personal story.
- The Ultimate Skip Level Meeting Guide for Leaders – extremely interesting read about management – helpful I think for all leaders to read
- InfoQ Live Roundtable: Recruiting, Interviewing, and Hiring Senior Developer Talent – I was on a panel talking about one of my favourite topics
- Deliberate Discovery – a “Sonnet” – I absolutely loved Liz’s piece in 97 Things Every Java Programmer Should Know, she proves that technical writing doesn’t need to be dry
- The Why and How of Building Workforce Diversity – regular readers of this newsletter will already have a handle on these, but it’s always worth adding more articles to the backlog of resources when having these sorts of conversations with your organisation
A new episode is live with @trisha_gee of @jetbrains! Robby and Trisha discuss why developers should spend more time proactively learning, how open source maintainers are under-appreciated, and more. https://t.co/OB0p8ZhGaU #legacycode #technicaldebt pic.twitter.com/LY28r20lCo
— Maintainable Software Podcast (@_maintainable) April 21, 2020
A round up of blog posts and videos from IntelliJ IDEA and JetBrains:
- 2020.3 was released, it’s a big one, as you can see from a huge 20+ min video summary. Also 2020.3.1 (with Apple Silicon Support) was released. How long is it since the last newsletter??
- IntelliJ IDEA how2pro 2020: Putting It All Together – if you haven’t read any How2Pro articles yet, then just read this one, it summarises the most useful bits covered over the rest of last year
- Creating a New Project in IntelliJ IDEA (video and blog)
- 3 Ways to Refactor Your Code in IntelliJ IDEA (video and blog)
- Writing Tests with Spock (video)
- Webinar Summary: Java, Containers and IntelliJ IDEA – video, written summary and code/commands that you can run for yourself
- Join us for this month’s Live Streams:
- Cross-platform UI development in Java using JavaFX – I’ve been brushing up on my JavaFX skills this week and I’m looking forward to this
- Developing Backends with Kotlin and Spring Boot on Google Cloud
If you have any interesting or useful Java / JVM news to share via Java Annotated Monthly, leave a comment or drop me a message via Twitter.