Java Annotated Monthly – February 2019
January saw a lot of articles summarising 2018 and predicting things for 2019, so this month’s Java Annotated Monthly casts an eye back to last year and looks forward to the new one. We also have a huge crop of Java tutorials this month for some reason, maybe everyone’s new year’s resolution was to start blogging.
2018 Summaries and 2019 Predictions
- 2019: The year security joins the DevOps party – I thought DevSecOps was already a thing?
- What DevOps Taught Us in 2018 – that it’s quite useful and We Should Do More
- What we learned about containers last year – a list of the top articles from 2018
- GraalVM in 2018 – get up to speed on GraalVM, it’s on the up-and-coming list for 2019
- InfoQ’s 2018, and What We Expect to See in 2019
- The 2018 InfoQ Editors’ Recommended Reading List: Part One
- The 2018 InfoQ Editors’ Recommended Reading List: Part Two
- Java in 2019 – Some Predictions – also from the people at InfoQ
- Staring into my Java Crystal Ball 2019 – from Azul Systems
A smattering of Java-specific news, the main piece being that Raw String Literals will, unfortunately, not be a preview feature in Java 12. But in good news, Java 12 is feature complete and ready to come to us in March.
- Book Review: Optimizing Java – whether you have to do this in your day job or not, it’s useful stuff to know for interviews (in case your new year’s resolution is to get a new job)
- Explicitly Naming Automatic Java Modules – or: libraries should really not be relying on automatic module names
- IBM and Java: Looking forward to the future
- Java Language Architect Brian Goetz on Java and the JDK (podcast with text summary)
- JEP proposed to drop from JDK 12: 326: Raw String Literals (Preview) – sad, but better to ship it later and get it right
- Raw String Literals Removed from Java 12 as Feature Set Frozen
- Netflix OSS and Spring Boot — Coming Full Circle
- We need more keywords, captain! – once again, the Java language developers are faced with the problem of how to update a language that needs to remain backwards compatible and not break everything
- The Brief but Complicated History of JDK 12’s String::transform Method
- And good news for our own Tagir Valeev:
— Tagir Valeev (@tagir_valeev) December 22, 2018
Java Tutorials & Tips
Absolutely huge number of tutorials covering Java topics: standard Java (from 8 to 11, and even some features from the future); Spring and Spring Boot; MicroProfile, Micronaut and Microservices, classic design patterns and more.
- 26 Items for Dissecting Java Local Variable Type Inference (Var Type) – var is only three letters but understanding how and where to use it is more complicated than you’d think
- 19 Lessons in a Kata – for Eclipse Collections
- 7 Tips to Write Better Java Code You Should Know – you already know these, but remind yourself once again. Maybe print them and keep them visible
- All You Need To Know For Migrating To Java 11 – this article dates back to last year, but it popped up on my Twitter feed again and it’s worth revisiting
- Asynchronous REST with JAX-RS and MicroProfile – a nice intro to async REST, with some MicroProfile specific tips
- How to Write Reactive Applications with MicroProfile
- Creating Test Stages With JUnit – so you can create stages in your CD pipeline
- Design Patterns in Java: Singleton – you should probably not ever use a singleton, but you need to know this stuff as it’s a favourite job interview question
- Developing Microservices with Behavior Driven Development and Interface Oriented Design – BDD is a great way to go about designing microservices
- Guide to Behavior-Driven Development in Java – seems useful, given the above
- Exception Handling in Java Streams – because checked exceptions in lambdas are horrible
- Facade Pattern – Facade is a really nice way to help migrate legacy code, hide the mess behind interfaces and refactor it gradually
- Five Golden Backticks – a guide to Raw String Literals, except… they were pulled from Java 12. So, watch this space…
- Hexagonal Architecture for Java – a very simplistic example of an architectural pattern I like
- Reevaluating the Layered Architecture – or: this is Old Fashioned, choose something else (like Hexagonal Architecture)
- How to use Java’s functional Consumer interface example – because of the implementation of lambdas (via Functional Interfaces) sometimes this can be trickier than you’d think
- JVM Anatomy Park #21: Heap Uncommit – deep dive into JVM internals
- Micronaut for Spring Allows Spring Boot Apps to Run as Micronaut Apps – plus Graal, just to hit more buzzwords
- Microservices Architecture on the Modern Stack of Java Technologies – “JDK 11, Kotlin, Spring 5 and Spring Boot 2, Gradle 5 with Kotlin DSL, JUnit 5, and Spring Cloud”.
- Top 5 Java Multithreading and Concurrency Courses – most are courses you have to pay for. Understanding concurrency is useful to understand what’s going on, but in my experience it’s most useful for answering job interview questions
- Use Java method modifiers to avoid public method antipattern – useful to remember, but I’m surprised there’s no mention of how the definition of “public” has changed since modules were introduced in Java 9
- What’s Wrong With Small Objects in Java? – er, nothing? Certainly developers should be aware of the difference between an Object and a primitive type, but in most applications we don’t need to go crazy worrying about memory use
- Using the Java Packager with JDK 11 – tutorial for using the upcoming Packaging Tool (which may go into Java 13?)
- Jump Into Java – new Java quizzes every Saturday
Languages, Frameworks, Libraries and Technologies
Big focus on testing this month (suggested new year’s resolution: write more/better automated tests), and on Docker/Kubernetes – these last two seem to have crossed the “this is cool and up and coming” chasm into “this is just what we all use now” territory.
- Headless Selenium Browsers – the different options available for automating your UI tests with Selenium
- Selenium Webdriver Tutorial for Cross Browser Testing – a closer look at Selenium WebDriver
- How to Make Microservices Communicate – useful overview of approaches
- Kubernetes vs Docker: The most influential open source projects – these technologies are becoming more normal, here’s an introductory guide for those who may be trying to get up to speed
- Setting Up CI/CD Pipelines for Docker Kubernetes Project With Google Cloud Platform
- Working with Microservices & Kubernetes
- The future of Kubernetes is Virtual Machines – OK, let’s forget Docker then
- Understanding Blockchain Basics and Use Cases – in case Blockchain is on your new year’s resolution list
- M220J: MongoDB for Java Developers – a newly updated course for Java developers, you’ll even find an introductory video from a familiar JetBrains face to get you started with IntelliJ IDEA for the course
- WTF Connection pools – or: default settings are usually poor, configure for your use cases
- Reduction of Additions – a closer look at how compilers work
Culture & Community
There’s a bit of a theme of burnout here this month, at the end of one year and start of the next it’s probably normal to step back and consider how much work we did, how effective we were, how we feel about it and what we’d like to do differently.
- 3 prioritization techniques to beat software deadline stress
- How To Create More Time: A Strategy For Finally Getting Ahead Of Your To-Do List – contains stuff to help us understand why we don’t feel productive, and some tips on what to do about it
- How To Boost Your Creativity The Einstein Way—With Combinatory Play – remember development is a creative process
- How to Slow Down to Go Faster Than Ever in Software Development
- Plug, Play, Repeat: The Best Strategies For More Productive Focus Time
- 7 Weird Ways To Help Combat ‘Hermit’ Habits As A Remote Worker – the good news is, if you have school-age kids you’re already doing some of these things (if you’re responsible for the school run)
- Keeping the Lines Open – how to work in a distributed team
- Alexandria Ocasio-Cortez Is Absolutely Right About Racist Algorithms – or: computer programs are written by people, after all
- Boosting Team Inclusion at the Workplace using AI Technologies – inclusion is the missing piece to helping improve and leverage diversity
- Getting to Rearchitect a System Is a Sign of Success – or: don’t beat yourselves up if your perfectly-acceptably-functioning application isn’t structured the way you want
- Hiring and Retaining Developers – Creating Great Teams – or: Hiring Developers Is Hard
- Pro Tips for Developer Relations – including some tips from Trisha Gee
Here’s a chance to catch up on the IntelliJ IDEA and other JetBrains news that you might have missed:
- IntelliJ IDEA 2019.1 EAP has started.
- We’re back sharing Top Tips for IntelliJ IDEA on Twitter, follow us!
— IntelliJ IDEA (@intellijidea) January 31, 2019
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.