Java Annotated Monthly – December 2020
December is here, and if you celebrate the mid-winter holidays (or midsummer if you’re on that side of the equator) you’re probably thinking ahead to that. 2020 has not been… optimal… for many. Christmas (or equivalent) will likely not look the way we expected, or are used to. We have an "opportunity" (haven’t you always hated boss-speak, it’s not an "opportunity", it actually is a "problem") to try new things, create new traditions, or to simply take the chance to put less pressure on ourselves this year. Let’s face it, we deserve a break.
The official Jakarta EE 9 release is just 2 weeks away! This milestone will lower the barriers to entry to achieve compatibility & set the baseline for @Java_EE technologies. Celebrate the release with the #Java community Dec 8 https://t.co/e6rBjpr3rw @TanjaEclipse @ivar_grimstad pic.twitter.com/n6EwxreRiz
— JakartaOne (@JakartaOneConf) November 24, 2020
- The Road to Jakarta EE 9 – find out the current status of Jakarta EE, and see some actions that you can take to get involved
- JCP Election Results – JetBrains has been re-elected to the Executive Committee
- Java Futures with Brian Goetz (video/podcast) – what’s in the pipeline for Java? Always worth listening to Brian on this topic.
- Everyone wants fast startup: introducing JVM snapshot+restore – in OpenJ9, remember Hotspot is not your only choice of JVM (and you can download a binary using OpenJ9 from AdoptOpenJDK
- JEP 390: Warnings for Value-Based Classes – another small move in the direction of Value Types
- What We Know about Java 16 and 17 So Far – The list of features coming in JDK 16 continues to grow
#Java 16 Update
☕️ Good news! JEP 389 "Foreign Linker API (Incubator)" now targeted
☕️ Brings total targeted JEPs to 14
☕️ JEP 396 "Strongly Encapsulate JDK Internals by Default" is still proposed to target
☕️ Learn more: https://t.co/aXrdKCwhOL#OpenJDK #JDK #Java16 #JDK16 pic.twitter.com/X16wXqYKSs
— Sharat (@Sharat_Chander) November 23, 2020
Java Tutorials & Tips
- An introductory guide to annotations and annotation processors – nice overview of annotations. Useful as a refresher even if you think you’re familiar with them
- Java: Giants and Infinite Loops – love this article for exposing (in a good way!) a) some of my favourite people in the JVM community and b) the deep deep waters of Java performance, that as developers we are generally blissfully unaware of. Also features the Disruptor video I posted last month!
- Why Java is better than C++ for high speed trading systems – following on from last month’s articles on Java performance
- Diving into Java records: Serialization, marshaling, and bean state validation
- Docker for Java developers: 5 things you need to know not to fail your security – mandatory reading
- Modern Java toys that boost productivity, from type inference to text blocks – from the brilliant Angie Jones, new features in Java that make your life easier
- Java logging: what should you log and what not?
- Came across a couple of interesting projects:
Languages, Frameworks, Libraries and Technologies
- Oracle NoSQL Database – Access your NoSQL tables and data within IntelliJ
- How to Create an AWS Continuous Deployment Pipeline
- How to Deploy a Spring Cloud Function on AWS Lambda
- Primitive Set Operations in Eclipse Collections
- How to Initialize Entity Associations with Spring Data JPA
- Mapping Collections with Hibernate and JPA – this is definitely an area that many struggle with
- Apple Silicon with Zulu OpenJDK and IntelliJ IDEA – with a video demo of running IntelliJ IDEA
- Building native applications for all PC and mobile platforms from a single JavaFX project with Gluon Mobile and GitHub Actions – Gluon is a really interesting and helpful technology
- Git Hooks and Java Projects – Git hooks can be really useful
- IntelliJ IDEA Made me Lazy – which is good, cos now you can focus on the interesting stuff
- Profiling a GraalVM native image with perf – ooh flamegraphs
- Mastering API Visibility in Kotlin – I didn’t know about @VisibleForTesting, very interesting
- When is a Type not a Type? Kotlin in the IDE – you enable this on for an IntelliJ IDEA Java project (i.e. if you’re using var) by turning on inlay hints for implicit types
- The following is all JetBrains content on Kotlin, which I would usually put into the "And Finally" section, but it includes a whole bunch of content from non-JetBrains sources so it feels very relevant for the more general "Languages and Frameworks" section:
To my JVM friends looking to explore Machine Learning techniques – you don’t necessarily have to learn Python to do that. There are libraries you can use from the comfort of your JVM environment. 🧵👇
— Maria Khalusova (@mariaKhalusova) November 26, 2020
Conferences and Events
I’m pleased that 2020 has made conferences much more accessible to all, by removing travel barriers, and many of them removing cost barriers for attendees. As a conference speaker, I’ve been able to speak at more events this year too because of this. But… virtual conferences are not the same thing. Still, I think they might become a very interesting addition to the usual media for spreading knowledge
- Behind The Scenes: Google Product Expert Virtual Summit 2020 – almost looks like a real conference.
- 4-5 Dec: jLove – I (Trisha Gee) will be giving a keynote (free event).
Our program will be up on Monday ♥️
A few highlights: keynotes by @trisha_gee, @Sharat_Chander, and @myfear!
60 talks! Topics include Spring, Quarkus, Micronaut, GraalVM, Performance, Kafka, Jakarta, Architecture, Testing, and many more!
Dive in for FREEhttps://t.co/QHGb9wsken
— jLove Conference, virtual, free, Dec 4-5 (@jloveconf) November 20, 2020
Culture & Community
- Programming Language Evolution – languages, and language fashions, change and evolve
- WFH is fine … if a little lonely – this is not just about working from home. I’ve been working from home for 7 years, and I’ve never been this lonely. It’s about also having many of our social activities curtailed, or replaced with virtual events.
- How to deal with videoconferencing fatigue – solid advice
- Creating a mentally healthy environment for developers – psychological safety is so important, particularly now.
- What Google Learned From Its Quest to Build the Perfect Team – this is the old 2016 article on psychological safety
- High-Performing Teams Need Psychological Safety. Here’s How to Create It – another older article, with practical tips
- Why pair programing is as much about business continuity as it is about code quality – the author is an ex-colleague who’s experience and advice I deeply respect. Also, the article is Full Of Truth
- You Must Be CRAZY To Do Pair Programming (video) – Dave Farley was instrumental in teaching me what good pair programming is and what it’s good for.
- If you are into pair programming and you’re looking for ways to do it remotely, you should check out IntelliJ IDEA’s new Code With Me system – we have a short vide demo of it.
- How to Know If You’re Being Treated Unfairly at Work – I just finished reviewing a book (that’s not yet published) which led me to think a lot about this topic. This article is US-centric and a bit light in many ways, but still gives food for thought
- LJC Virtual Meetup: Speaking at Conferences (video) – panel discussion (featuring me) about how to get started speaking at conferences
- Career Advice for Junior Software Developers (video) – excellent advice from someone who I have seen (first-hand) mentor and grow junior developers
- Conversations with Leadership Women in Tech – interesting to see other women’s perspectives (full disclosure: I used to work for ThoughtWorks, briefly)
- CTO day 1: first steps and hiring framework – I’ll read this more fully the minute I get a second to myself
- Great Code Reviews—The Superpower Your Team Needs – advice on productive code reviews (pull requests in this case). Gratuitous plug: I gave a presentation on this topic lately, which pulls back a bit further from just the "how", and is one of my favourite topics.
- 7 Hacks for Self-Promotion – having good content is not enough
- How joining Java Community shaped my year so far – tips for getting started in the Java Community
A round up of blog posts and videos from IntelliJ IDEA and JetBrains:
- IntelliJ IDEA 2020.3 Release Candidate Is Out! – 2020.3 is very nearly here! Here’s a summary of the features, and of course, a What’s New for Java Developers in IntelliJ IDEA 2020.3 video from me, Trisha.
- JetBrains Academy Overview (video) – Helen did an excellent overview of JetBrains’ new product to help people to learn programming (obviously her take was focused on Java).
- IntelliJ IDEA. 3 Ways To Simplify Your Code (2020) (video) – this review of key refactoring capabilities in IntelliJ IDEA may help you to see when and how to use them
- Bootiful Kotlin (video) – recording of last month’s webinar with Josh Long on Spring Boot and Kotlin
- Keep Shortcuts close, but Quick Lists and Favorites closer – great blog post in the How2Pro series. I didn’t even know about Quick Lists! Super helpful.
- Our most recent addition to the Java Developer Advocacy team, Dalia, published her first two blog posts:
- I tried something new last month, and did a short news video based off the contents of November’s Annotated Monthly. I don’t intend to be fully recursive and always include the video in the newsletter, but for this first installation I thought I’d call attention to it for the regular readers, in case they’d like to subscribe for more.
- Join us for next month’s Live Stream: Java, Containers and IntelliJ IDEA
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.