Java Annotated Monthly – July 2021
Welcome to July’s roundup of Java and Java-developer-related news! This month, we actually have a surprising amount of Java news, covering versions 11 through to 18! Yes, I know, 17 isn’t even out yet, that’s the crazy world we live in now. There’s a good chunk of Spring and automated testing content too, as that’s where a lot of my research was this month. If you’re in the northern hemisphere and in holiday season, this should make excellent beach reading. Or, you could just save it until you come back to the office.
- JDK 17 is in rampdown phase one, so the list of features should be pretty much stable now.
- …which means we can start using JDK 18 Early-Access Builds. If we really want to!
- A peek into Java 17: Continuing the drive to encapsulate the Java runtime internals
- JVM Ecosystem Report 2021 – Snyk’s annual look at the ecosystem that we work in
- Happy anniversary! Celebrating 10 years of Java Magazine – as such, we have a bunch of Java Magazine articles, new and “classic”, featured in this month’s newsletter
- Everything you need to know about OpenJDK’s move to Git and GitHub
- JEP 406: Pattern Matching for switch (Preview)
- OpenJDK Discusses Post-SecurityManager Practices
- JEP 411: What it Means for Java’s Security Model and Why You Should Apply the Principle of Least Privilege – related to the previous link
Java Tutorials & Tips
- JavaFX, JLink and JPackage – I was looking into this given IntelliJ IDEA’s new support for JLink artifacts.
- The Impossible Java 11 – “The only difference between my approach and theirs was a lack of despair.” really liked this case study of migrating from Java 8 to 11 at Netflix.
- Is there any need to switch to modules when migrating to Java 9 or later? – No.
- Even more greatness packed into Java 16, including tools for improving future JVMs
- 4 Examples of Text Blocks in Java
- 5 Common mistakes in Java – even though you know all of these, it’s always valuable to remind yourself of the things that we trip up on when we first start programming with Java
- Java still rocks the finance industry. Here’s why Java 16 makes it even better.
- Exploring Joshua Bloch’s Builder design pattern in Java – one of those “simple” design patterns that one nevertheless always forgets the details of
- Annotations: An Inside Look – an older piece but still relevant
- Difference between Period and Duration class in Java 8? [Example]
- Digging in to a Java Puzzle – this is the threadreader version of the Tweet below
Languages, Frameworks, Libraries and Technologies
- Quick and Seamless Release Management for Java projects with JReleaser – “JReleaser intends to streamline the release and publishing process of Java binaries in such a way that these binaries may be consumed by platform-specific package managers”
- Eclipse Jakarta EE 9.1 aligns with Java 11 – “Jakarta Enterprise Edition 9.1 allows developers to use Java SE 11 features in Jakarta EE applications and migrate Jakarta EE apps to Java SE 11 without changes.”
- Java for the enterprise: What to expect in Jakarta EE 10
- You don’t always need an application server to run Jakarta EE applications
- How to Create an AWS ALB and ASG – I don’t know why AWS has an obsession with TLAs. Maybe to encourage you to read articles like this so you can understand what’s actually going on
- How to Create an AWS EC2 VM – another detailed walkthrough by the same author as the above
- How to program machine learning in Java with the Tribuo library
- Integration testing with Docker and Maven – I was investigating Spring integration testing and ran into a number of useful articles like this
- Guide to @DynamicPropertySource in Spring – I used the Test Fixtures approach in this blog to do something really helpful – tag test classes with the integration dependencies they need to run (e.g. starting a MongoDB container)
- Unit Testing in a non-perfect World – because real software development is messy
- Testing your REST controllers and clients with Spring
- Integration Testing with Testcontainers (video) – having just discovered Testcontainers in May, I’m now a huge fan
- CopyOnWriteArrayList and Collection#toArray() – “When is it safe for a CopyOnWriteArrayList to accept the result from a toArray() method? In the past, the only thing that mattered was that the type was Object. But this was changed in 2020 to only accept the array if the source was a java.util.ArrayList.”
- Advanced Kotlin Collection Functionality (video and blog) – I don’t like to read articles like this in case I discover features I wish Java Collections had
- Using Eclipse Collections – Eclipse collections is an option for Java developers who are looking for something more than what is provided by java.util.
- Using the Kotlin standard library in Java – I’m not sure I knew that you can use Kotlin features from inside Java, although I suppose it shouldn’t be a surprise
Conferences and Events
- 23 July: JBCNConf (free event) – our very own Mala Gupta will be presenting IntelliJ IDEA and Keeping Pace with the New Java Language Features
As usual, I ran across several articles that are personally interesting to me in this role. I’ve put them here in case others are similarly interested.
- Demystifying Developer Advocacy (Angie Jones) – aimed at aspiring (or existing!) developer advocates
- Lessons Learnt in Developer Relations (James Thomas) – aimed at organisations trying to grow developer advocacy
- How I Find Public Speaking Opportunities (Isabel Costa) – read this if you want to find out how to find conferences to speak at, but definitely read this if you are a conference wondering how to attract new speakers.
- Responding to a Developer Conference CFP (Helen Scott) – once you’ve found a conference, how to you get in?
Culture & Community
Surprise! This month there’s actually technical content in this section as well as the “softer” stuff.
- What is it like to design a programming language? – Quora
- The Myth of the Sufficiently Smart Engineer – “Embracing a different ideal, The Humble Learner, creates a more humane culture and better technology”
- The Art of Misdirection – “Where doesn’t the technique work? What else could you be doing instead? What are the trade-offs in choosing this over one of the alternatives?”. If you’re looking in one place, you might be missing something elsewhere.
- How to Spread Technical Practices Like TDD in an Organization – might be interesting to balance this with the above article
- The Engineer’s Guide to Writing Meaningful Code Comments – I agree with this guide to writing comments, if we need to write comments
- Giant Leaps Rarely Happen – “Going in Circles Isn’t All Bad” – it’s about iterating and feedback
- How to Improve your Team’s Communication and Psychological Safety
- Episode 465: Kevlin Henney and Trisha Gee on 97 Things Every Java Programmer Should Know (podcast) – yes, gratuitous plug for the book I helped to edit.
- Netflix Executives Discuss Authenticity in the Workplace and Imposter Syndrome (video)
- Where Do The Software Bugs Come From? (video) – By Continuous Delivery author Dave Farley
- Two pieces based off the content in Help Your Boss Help You, which I had the privilege to review early, and recommend you read wherever you are in your career:
- It’s a total myth that women are better at keeping track of household chores – read this
- As Google makes a permanent move to hybrid working, what can we learn from it? – all fair points, although I think “Meet in person, early and often” is not a requirement. Dalia’s been working with us for a year and she’s never met any of us in person. You can get around this by having very frequent calls (daily, at the start) with colleagues. All teams will be different, and depends on how you’re going to work going forward.
- How to stay productive while working at home with your partner – I’ve been working at home with my partner for eight years, always in the same room, our dedicated office. These tips are good, but I would also add/emphasise communication and up-front plans (a standup for you and your partner might work). For example, if I’m going to be recording the narration for the What’s New video, which requires me to be at my desk with my equipment, my husband and I need to discuss when he has his meetings, when he needs to be at his desk, and how we can be flexible around each-other’s deadlines (yes, it’s his keyboard you can hear clacking in the background – I’m not going to kick him out of his office because I need to record a video, but I will ask him not to have music or a call at the same time).
A round up of blog posts and videos from IntelliJ IDEA and JetBrains:
- IntelliJ IDEA 2021.2 is now in Beta! Take a look at my What’s New video for a tour of just some of the features.
- IntelliJ IDEA’s Feature Trainer –blog post and video
- Getting Started with Spring Data JPA (IntelliJ IDEA Guide Tutorial). You might also be interested in Working with Hibernate/JPA (video)
- Kotlin 1.5.20 Released!
- Answering the Top 10 Questions About Kotlin’s Future
- LiveStream Summary: Fixing Security Flaws in Spring Boot Applications Using IntelliJ IDEA and Snyk – video and more information
- 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).