Java Annotated Monthly – March 2021
You know about pair programming, right? Well this month we decided to triple on creating Java Annotated Monthly. So this month we have a different approach to the newsletter, where the "annotations" are provided by three different people: me (Trisha), Dalia and Helen. So, bear in mind that "I" is going to refer to more than one person! However, the quality remains the same as usual, expect the same mix of Java and (mostly) related news and articles, but the addition of more experiences and viewpoints.
Java 16 will be released in March.
- JDK 16: Second Release Candidate
- GraalVM 21.0 Introduces a JVM Written in Java – introduces Java on Truffle (espresso), how to use it and major features you get with it. Currently experimental – not ready for production yet.
- JakartaOne Livestream 2020: Conference Summary – Summary of all the JakartaOne sessions from December 2020 including the Jakarta EE 9 release – the main change is the migration from the javax to jakarta namespace (btw we have a tutorial on creating a Jakarta EE 9 application). Main themes for the live stream were cloud development and the namespace migration.
- GraalVM Inside Oracle Database – "Oracle has added support for GraalVM-based stored procedures that run inside the database".
- JEP draft: Primitive Objects (Preview) – quoting InfoQ: "covers the basic semantics of identify-free primitive objects (previously known as inline classes, previously known as value types)."
- JEP draft: Unify the Basic Primitives with Objects (Preview) – "As a result of this change, all Java values are objects." – retrofitting primitive types into the above JEP, Primitive Objects.
- Nested Record and Array Patterns (Preview) – Building on JEP 394 (pattern matching for instanceof), this will give us record and array patterns to extend pattern matching capabilities.
- Pattern Matching for switch (Preview) – you can see pattern matching is going to be a theme in Future Java.
We just launched the new @snyksec #Java ecosystem survey 2021. This year we partner with @AzulSystems and the final report will be different from previous years.
Read all about it and take the survey. It is super short, only 10 questions 🙂https://t.co/lCBQxfra0a pic.twitter.com/sKd6xEuv6k
— 🧑🏼💻 Brian Vermeer (@BrianVerm) February 15, 2021
Java Tutorials & Tips
- Faster Charset Decoding – a deep dive on performance improvements related to charset decoders expected in JDK 17.
- Hash ordering and Hyrum’s Law – We’ve all honestly done this and been bitten by it in tests. Ordering isn’t guaranteed and the tests don’t fail so you assume there are no issues.
- Building a layered modular Java application? Watch out for these! – covers some pitfalls Andres ran into while porting a JavaFX application to a layered modular application.
- The best of 2020 : The 10 most popular Java Magazine articles – did I include this because it contains my (Trisha’s) Code Review Antipatterns article? Yes, yes I did.
- 5 Ways to Improve Your Code (video) – from Dave Farley, including a section on refactoring which should have every IntelliJ IDEA user thinking about how to use the automatic refactoring tools to improve their code.
- The Unsafe Class: Unsafe at Any Speed – Unsafe is one of those things the language developers desperately want us not to use, and yet it’s also one of those things that is very handy for extremely niche, but important, cases. Eventually the use cases should be covered by not-unsafe APIs.
Languages, Frameworks, Libraries and Technologies
- Mutation testing: Too good to be true? – Mutation testing is another tool we can call upon when required, but the application of it needs to be handled with care.
- Pipeline Configuration as Code with Kotlin – Good walk-through of using Kotlin in this context, and why it was a good choice of language.
- Pinterest Describes an Architecture for Efficient Retrieval of Hierarchical Documents
- Getting Started with AWS S3 and Spring Boot – This great tutorial takes you through step by step explaining the concepts and configuration required for building a file sharing application, including code samples you can download.
- A Love Letter to Clojure (video & transcript) – Gene Kim (author of the excellent Phoenix Project) takes you on a journey of discovery and optimism with complete honesty throughout.
- Getting Started With RSocket Part 1 & Part 2 – These tutorials take you through the basics of RSocket, how to use it with Spring Boot, and then the RSocket communication models of Fire-and-Forget, Request-Stream, and Channel.
- Spring Boot with Kotlin and RSocket – with step-by-step instructions in IntelliJ IDEA. Really wish this had been around when we created the Reactive Spring Boot tutorial!
- Unit Testing Kotlin Flow – A guide to using Turbine to write unit tests for Kotlin Flows & coroutines.
- From Java to Kotlin and back: Java calling Kotlin – An experience blog of combining Java and Kotlin code in IntelliJ-based IDEs with interesting tips for the interoperability between Java and Kotlin code.
- Virtual Panel: The MicroProfile Influence on Microservices Frameworks – contains background information on MicroProfile. There’s an interesting question about the industry realizing microservices are not a silver bullet and that a monolithic application can be an appropriate solution.
- Micronaut with Kotlin Coroutines – tutorial on how to create a simple Micronaut application and use coroutines.
- Why Namespacing Matters in Public Open Source Repositories – interesting read on why namespacing matters and the consequences of namespacing not being enforced.
- DDD is Overrated – even the article admits this is a clickbait title! But actually what’s discussed in this piece is sensible.
- Opening multiple IntelliJ IDEA modules in the same project – one approach to emulating the multi project workspace approach that Eclipse takes, in IntelliJ IDEA.
- Multik: Multidimensional Arrays in Kotlin – "A lot of data-heavy tasks, as well as optimization problems, boil down to performing computations over multidimensional arrays". It’s a great chance to try it out and share your feedback.
- Primitive Set Operations in Eclipse Collections — Part 2 – following on from part 1. Between them they cover the set operations that will be available on primitive sets for the Eclipse Collections 11.0 release.
📢 Tried Kotlin for server-side, but abandoned using it? Or wanted to start with it but couldn’t?@kotlin invites you to participate in a brief interview and tell them what stops you from using Kotlin. Any reasoning is welcome!
📨 Please apply via the form https://t.co/yJ7HavlL7O
— JetBrains IntelliJ IDEA (@intellijidea) February 18, 2021
Culture & Community
What is an OKR? Here are the basics. – Ever wondered what the difference between an Objective and a Key Result is, and more importantly how they come together to form OKRs? This blog explains both with examples and anti-patterns. Highly recommended read especially for folks interested in leadership.
Applying OKRs – Sticking with OKRs, there are some fascinating insights into what OKRs are, and more importantly, are not, in this article as well as some very practical time-boxed advice for applying them.
Uber has lost in the Supreme Court. Here’s what happens next – "Uber drivers in the UK are workers, not contractors". The question for "disruptive" tech products might be, how much are you really disrupting an industry, and how much are you weasling around laws designed to protect people? Reminds me of this other piece on how third party delivery companies are hurting restaurants.
Nasa’s Perseverance rover lands on Mars – A phenomenal achievement and feat of engineering. It will be some time before we can get the samples back to Earth, but the world is watching this mission with great interest. Of course, before the real work starts, they’ll be updating the software that Perseverance is running.
Potentially habitable exoplanet candidate spotted around Alpha Centauri A in Earth’s backyard – Apparently there’s not one, but two planets that may be capable of supporting life in the Alpha Centauri system. More data is needed, but the discovery is something that is likely to keep scientists intrigued for centuries to come.
Angie Jones · The ReadME Project – really enjoyed reading this article. Angie talks about overcoming imposter syndrome early in her career and flourishing – with an impressive 26 patents under her belt. She highlights why diverse teams build better more innovative products. I recommend you go read it.
Black to the Future – Angie Jones – basically a video version of the article above.
Why it’s time to stop telling women to be “more confident” – "women are not stupid. If we were rewarded for being direct in emails, we would be direct in emails. Softened language, a conciliatory attitude, superfluous apologies – these are not the result of low self-esteem but of a calculation: will I be penalised more for appearing abrasive or unconfident?". Could not agree more.
‘Unconscious bias is utter crap’: KPMG staff share shock at UK chair’s Zoom comments – eyeroll. And people say we don’t need to do any more for inclusion.
Finding the “I” Within Inclusion (video & transcript) – 20 minutes on inclusion and why it matters.
The “Learning Styles” Myth Is Still Prevalent Among Educators — And It Shows No Sign of Going Away – I (Trisha) did not know this was a myth, and now I have to change the way I think about teaching.
Grateful People Are More Likely To Obey Commands To Commit Ethically Dubious Acts – this was interesting. And terrifying.
How to avoid ‘Zoom fatigue’ during the Covid pandemic – top tips. Or… Just Say No.
Hierarchy of Needs through the COVID crisis – this is from the start of the pandemic, but a year in, it’s valuable to reflect upon.
Be Humble – agree with the general sentiment to keep your ego in check and remember folks that are less fortunate.
The one with Trisha Gee (video) – had a lovely chat with Nate Schutta about… everything. Almost felt like being at the bar in a conference.
I see toxic positivity disguised as support a lot on Twitter, so sharing this as a reminder pic.twitter.com/vAJ4NKA4g4
— Sarah Beecroft (@sarah_bean) February 26, 2021
A round up of blog posts and videos from IntelliJ IDEA and JetBrains:
- 20 Things Developers Love About IntelliJ IDEA – celebrating IntelliJ IDEA’s 20th Birthday. On that topic, IntelliJ IDEA Conf last week was filled with loads of really useful information and very inspiring. Subscribe to our YouTube Channel to be notified when the talks are uploaded.
- Working with Hibernate/JPA in IntelliJ IDEA (video)
- Creating New Jakarta Persistence/JPA Applications
- Find Your Visual Zen – the different view modes in IntelliJ IDEA. Reader Mode got a lot of love during our conference.
- EAP for a New Product That Brings the “Smarts” of JetBrains IDEs Into Your CI Pipeline – I am asked all the time about how to use IntelliJ IDEA’s analysis and inspections in CI.
- IntelliJ IDEA 2021.1 EAP is still going on (download), the Beta will be available soon!
- Join us for this month’s Live Streams:
- A Simple Approach to Advanced JVM profiling – 17 March
- Server-side With Kotlin Webinar Series, Vol 2 – three upcoming webinars covering reactive programming, asynchronous applications with the Ktor framework, building microservices with Helidon, and other aspects of using Kotlin for server-side development.
Remember that International Women’s Day is March 8th. Every month we work hard to make sure women’s voices are represented in Java Annotated Monthly, but please do make the extra effort to let us (firstname.lastname@example.org) know of any women whose work we should be including.
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.