IntelliJ IDEA
IntelliJ IDEA – the Leading Java and Kotlin IDE, by JetBrains
Java Annotated Monthly – April 2021
Wow what a big month! Java 16 is out, IntelliJ IDEA 2021.1 is out, we had Internation Women’s Day, the equinox, Passover and Easter and other holidays. On top of that, it’s a year since Europe went into first lockdown. I’ve been wondering why I’m so exhausted and now I understand – it’s not just the last month or two, it’s the last year. It’s now the 65467543985th day of March 2020, as far as I’m concerned, and it’s still not over.
Related: this month’s Java Annotated Monthly is HUGE, so there are more links and fewer "annotations" this month.
Be kind to each other, and be kind to yourself.
Java News
Java 16 was released in March. This is a particularly exciting release as records are now a standard feature, ready for use in production code.
- And the Winner Is? Meet the 2020 DZone Award Winners From Java To John Vester – IntelliJ IDEA and Java are both winners
- You can’t afford to run Java 8
- JDK 16 General-Availability Release
- The Arrival of Java 16
- Definitive Guide To Java 16
- Java 16 and IntelliJ IDEA
- From the vector API to records to elastic metaspace, there’s a lot packed into Java 16
- JDK 16 Security Enhancements
- 67 New Features in JDK 16
- Call for Discussion: New Project: Lilliput – "We would like to propose a new project called Lilliput, with the goal of exploring ways to shrink the object header."
- Quiz yourself: Say “hello” to the 1Z0-819 Java SE 11 certification exam
- JEP 392: Packaging Tool – released in Java 16 (docs)
- Oracle Developer Live—Java Innovations (videos) – all the videos from Oracle’s Java 16 online event, including my Learn Java 16 with IntelliJ IDEA.
- Transition to Eclipse – An Update from AdoptOpenJDK
TIL, you get automated helpers to generate #java getters and setters straight from your completion options in @intellijidea and that made me happy :). pic.twitter.com/aB3rBvWfca
— Julien Lengrand-Lambert (@jlengrand) March 9, 2021
Java Tutorials & Tips
- Working and unit testing with temporary files in Java
- Mastering the mechanics of Java method invocation – "Java Magazine is pleased to republish this article from Ben Evans, published in 2017, about Java Virtual Machine internals."
- A practical look at JEP-389 (Foreign Linker API) in JDK16 with libsodium – "JEP-389 looks like solid replacement of JNI or JNA. I can only applaud the work done! My only regret is it’s not yet already available. That said as a developer I support the idea to not ship until ready." This is a long and detailed blog post and well worth a read if this topic is of interest
- Java configuration: how to prevent security misconfigurations
- Project Valhalla: Bringing Performance to Java Developers (video)
- Java Memory Model
- Stranger Things in Java: Constants
- Java Getter and Setter Tutorial – from Basics to Best Practices – thought it might be worth revisiting our assumptions of getters and setters given that Records (new in Java 16) don’t use the "get" or "set" prefix
- Java Joy: Merge Maps Using Stream API
- Transforming Data Transformation in Java with Local Records – Records are new in Java 16 of course
- Faster
flatMap
s withStream::mapMulti
in Java 16 - Java 16 Pattern Matching Fun
- 10 best practices to build a Java container with Docker
- Talking to Postgres Through Java 16 Unix-Domain Socket Channels
- FizzBuzz – SIMD Style! – looking at the incubating Vector API
- What is the point of extending a sealed class with a non-sealed class?
- 289MergingSortedSpliterator
Languages, Frameworks, Libraries and Technologies
- Improving the symmetry of converter methods in Eclipse Collections
- Test Scorer – "test-scorer is inspired by the closed-source AutoTrish tool built by LMAX c2009, which was an attempt to automate the hard work of Trisha Gee on intermittent acceptance tests. Dave Farley has described it in several public talks on Continuous Delivery at LMAX, including ‘The process, technology and practice of Continuous Delivery‘". See also testnark
- A Little Tense – about tenses to use in "Given/When/Then" tests. This is from 2014, not sure how it popped up on my radar this month but it’s really helpful all the same
- From Java to Kotlin and back (II): Calling Kotlin from Java
- How to program machine learning in Java with the Tribuo library
- Deploy a Web Application on EC2 in 1 hour
- Part of speech tagging with Hidden Markov Model in Kotlin
- Enhancing the development loop with Quarkus remote development
- Java 2021: What Frameworks and Trends for This New Year?
- From Java to Kotlin and back (III): Calling Java from Kotlin
- How to Set Code Coverage Goals and Interpret Results
- Introduction to Quickperf
- My tips for using IntelliJ IDEA effectively (Video)
- Mirroring an External Git Repository in Space – needed to do this this week.
- My 25 favorite Eclipse Collections APIs
- Demystifying Google Container Tool, Jib: Java Image Builder
- Containerizing Spring Boot Application with Jib
- CI/CD Workflow for Spring Boot Applications on Kubernetes via Skaffold
- Why Your JUnit 5 Tests Are Not Running Under Maven – I had a problem running tests this week, and came across this post. It wasn’t my specific problem, but it might help someone.
Well fine. I give up. Can anyone suggest why Maven might not be running all my JUnit 5 tests? And when it does actually see the test class (which it doesn't always) it claims there are no tests to run? pic.twitter.com/0G1btKhzSG
— Trisha Gee (@trisha_gee) April 7, 2021
Spring and Spring Boot
The Java developer advocates are just starting to develop a new application with Spring Boot, so expect to see a bit more content around Spring and Spring Boot for the next few months as we Google a lot of stuff.
- Deploying Spring Boot Application on Kubernetes
- Spring Boot – Profiles
- Reactive Java Microservices with Spring Boot and JHipster
- Announcing Spring Native Beta!
- Solving Java security issues in my Spring MVC application
- Spring Boot and Java 16 Records
- How to Monitor a Spring Boot App
Check out the latest installment of Spring Time in Kotlin! 🤩
In this episode, @antonarhipov provides an overview of the new tutorial about Spring Boot with Kotlin and RSocket. https://t.co/Ml9YP29Adr
— Kotlin (@kotlin) March 9, 2021
Design & Architecture
- Design Patterns: The Builder Pattern
- Development in 100 Years Time • Dave Farley (video)
- Cloud-Native Is about Culture, Not Containers
- The Evolution of Distributed Systems on Kubernetes
- Bitemporal History – "Bitemporal history treats time as two dimensions: actual history records what history should be given perfect transmission of information, while record history captures how our knowledge of history changes. "
- But forget all that. The most important thing that happened this week was The Battle Between Java 16 (me) and Java 11 (Dalia) on Twitter. Helen accurately documents the original discussion, and the thought process that goes into making these sorts of architectural decisions: Latest Version or Stable Version?.
Our team is building an app and we were arguing which version of Java we should use.
Trisha: latest (Java 16) and take advantage of useful features like records.
Dalia: LTS (Java 11) and avoid incompatibility issues with frameworks/tools.
— Dalia (@DaliaShea) April 8, 2021
Code Reviews
Code Reviews are a favourite topic of mine.
- How to Make Your Code Reviewer Fall in Love with You – great advice
- Humanizing Peer Reviews (pdf)
- Stop Nitpicking in Code Reviews
- To the brain, reading computer code is not the same as reading language
- Guide to Conducting Test Automation Code Reviews
- Mistakes I’ve Made as an Engineering Manager
- Space Code Reviews in IntelliJ IDEA 2021.1
DevRel
Our occasional section on developer relations/advocacy content.
- My Top Ten Tips for Surviving and Thriving in Developer Relations – good tips
- A Guide to Technical Writing and Content Creation (podcast) – with our very own Helen Scott
- An Interview With Two Aspiring Speakers – Helen Scott and Peter Hicks
- The documentation system — Documentation system documentation – "there isn’t one thing called documentation, there are four. They are: tutorials, how-to guides, technical reference and explanation" – Mind. Blown.
- How to Give Talks as a Software Developer
- Pursuing Passive Learning
- Why Start a Technical Blog
Culture & Community
One of the nice things about March is the spotlight being placed on women and women’s contributions (of course, would be lovely to see that all year round).
For Women's History Month, it seems my tech brethren have revisited the subject that "women just don't like tech".
I encourage you to watch my talk Coding Future Coders. It's <30 mins and you'll get credit for doing something to observe the monthhttps://t.co/zns4rSA0LA
— Angie Jones (@techgirl1908) March 3, 2021
- Coding the Future Coders (video) and slides – by the always wonderful Angie Jones.
- ‘A gender equality paradox’: Countries with more gender equality have fewer female STEM grads
- The biggest myth about our brains is that they are “male” or “female”
- Half of women in UK fear equality is going back to 1970s – survey
- International Women’s Day: experts discuss Covid’s impact on gender equality
- Chiamaka Okenwa – Why Diversity Matters in Tech (video)
- BioNTech co-founder says gender equality made vaccine possible
- A third of women hide menopause symptoms at work – report – what fresh hell is this?? I hadn’t even thought about this yet
- JavaLand WomenInTech 2021 (video)
- Let’s not ever celebrate International Women’s Day again.
Want to celebrate #InternationalWomensDay and do right by women in your actions not just your tweets, here’s a thread of things you can do #IWD2021 🧵
— Obiageli ✨ (@AdoraNwodo) March 8, 2021
- Privilege—I’ve got it. – understanding your privilege is important for empathy
- What do fashion and programming have to do with one another? – think this is my favourite blog post of 2021.
- Making accessibility in tech the rule, not the exception
- How Facebook got addicted to spreading misinformation – long, but important to understand
- Code Reading Club – "A small group meet regularly to read and discuss short pieces of code. Each session is facilitated by a member of the group… who guides the group through a series of exploratory exercises." – love this idea
- THE TYRANNY of STRUCTURELESSNESS – found a reference to this in The Manager’s Path (which is excellent, although I still haven’t finished it yet), it’s about feminism but actually applies to startup organisations
- Managing technical risk
- Roadmap for aspiring web developers
- If Your Tech Interview is Three Tech Interviews in a Trench Coat and I Do Five is It Additive or Exponential
- Know your “One Job” and do it first
- Know your “One Job”, continued – follow up.
- Being Glue – I’ve posted it before but it bears repeating
new blog post up on why you don't get credit for extracurricular helpfulness at work unless your core responsibilities are taken care of first.https://t.co/UNSbrjHy2L
— Charity Majors (@mipsytipsy) March 7, 2021
Book Suggestions
- Hidden Figures: The American Dream and the Untold Story of the Black Women Mathematicians Who Helped Win the Space Race
- Programmed Inequality: How Britain Discarded Women Technologists and Lost Its Edge in Computing – this book made me so angry
- Invisible Women: Data Bias in a World Designed for Men – mandatory reading for all technologists.
- Delusions of Gender: How Our Minds, Society, and Neurosexism Create Difference
The "Current Situation"
It’s over a year since the first lockdowns started in Europe, even longer since this all began for our friends in Asia. Some countries are starting to come out of the other side of it, some are bracing for the fourth wave. All of us want to get back to "normal", but the pandemic has exacerbated inequalities and created new ones. We can’t get back to where we were before, and many don’t want to – remote working can be lonely, for sure, but losing that commute, or living somewhere different, appeals to many. Things will change. Things will have to change. And technology, and technologists like us, have the opportunity to try to drive that will help more people, like ethical restaurant delivery firms (Spanish, sorry) or Bias identification & Remediation tools.
- How to stay productive while working at home with your partner – "Create an end-of-day ritual" – I am consistently failing at this. Resolution: succeed in April.
- Five predictions for the future of commuting
- The five soft skills that will set you apart in today’s job market
- Stanford researchers identify four causes for ‘Zoom fatigue’ and their simple fixes
- Raising The Bar On Grief – many of us are dealing with grief in one form or another right now
- How we’ve changed after one year of the coronavirus pandemic
And Finally
A round up of blog posts and videos from IntelliJ IDEA and JetBrains:
- What’s New in IntelliJ IDEA 2020.1 – huge release! Also, take a look at the video.
- Docker and Kubernetes Updates in IntelliJ IDEA 2021.1
- Meet the Java Developer Advocacy Team and the .NET Developer Advocates
- Access Your IDE Remotely With Projector
- New Live Stream: Spring Boot Loves K8s
And please, take part in the Developer Ecosystem 2021 survey!
The Developer Ecosystem Survey 2021 is waiting for you!
Take part in this research about the developer community and help us reveal the latest tech trends. You’ll receive personalized results, and you could even win a cool prize.#DevEcosystem21https://t.co/JXY6Sdj8me pic.twitter.com/kIV7WDVq1b
— JetBrains (@jetbrains) January 27, 2021
If you have any interesting or useful Java / JVM news to share via Java Annotated Monthly, leave a comment or email us (java-advocates@jetbrains.com).