Java Annotated Monthly – May 2018
It’s only my (Trisha Gee’s) second month back at the helm of Annotated Monthly, and I’m using the opportunity to link to some of the backlog of articles I amassed while I was away. This month’s is a bumper edition, including a huge section on culture as I believe very strongly that developers need to understand so much more than just coding.
As usual, a bit of a mixed bag of tutorials for features from pretty much any version of Java, code examples that help developers to think about the approaches they take to solve problems news that affects Java-the-language specifically.
JVM Architecture 101: Get to Know Your Virtual Machine, some basic stuff here that we should all know, but good to brush up on (or point junior developers to)
- Waiting for another thread with CyclicBarrier: Two real-life examples
- Configurations: Are You Doing it Wrong? an article that should make you think about the configuration formats you use
- 20 Examples of Using Java’s CompletableFuture
- JλVλ 8 (A Comprehensive Look), a very detailed look at how functional programming ideas apply to Java 8
- Mastering Java 8 Streams – Part 3 (covers findFirst, findAny, anyMatch, allMatch, noneMatch)
- Mastering Java 8 Streams – Part 4 (a good explanation of reduce and what it’s useful for)
- Modular Java Development in Action (video)
- Clearer Code With JDK 10 Local Variable Type Inference, musings on how much “var” may be used in Java code.
- Two interesting articles which demonstrate how the innards of Java have changed in Java 8, 9, 10 and even 11:
The State of Java in 2018, survey results looking at who’s using which versions of what, and which IDEs (spoiler: IntelliJ IDEA is still looking good, and Kotlin has seen a big jump in growth).
Proposed Schedule for JDK 11, plus details of what’s currently going to be in it (TL;DR: General Availability on September 25)
What Future Java Releases Mean for Legacy Desktop Apps, or perhaps even applications that you didn’t know were soon going to be legacy…
- JEP 325: Switch Expressions, an interesting feature that I think will be surprisingly useful (will be available in some very future version of Java), has been the topic of some discussion lately:
- Further unification on switch, Brian Goetz summarises the current state of play and where to go from here
- Switch Expressions: Enhancing Java Switch Statements, a bit of analysis of the previous article
News that affects Java developers but may not contain code-specific content.
- Community OpenJDK Build Farm Goes Live, meaning you can now get builds of the OpenJDK without having to go through Oracle
- Oracle Replaces JavaOne with Oracle Code One – while some are sad that it’s the end of an era, it’s a reflection of the fact that developers now needs to know so about much more than just a single programming language
- GraalVM 1.0 was officially released, “a universal virtual machine designed for a polyglot world”. Probably not a coincidence then that Oracle wants to expand “Java”One.
Languages, Frameworks and Libraries
Java EE, Jakarta EE and Spring all vying for your attention this month.
- Java EE 8 & Jakarta EE:
- JSON-P 1.1 Overview Series, showcasing useful features for manipulating JSON
- Get Ready for Cloud Native, Service-meshed Java Enterprise
- Remember there will be no Java EE 9, the Java EE-type stuff has moved to the Eclipse Foundation and is now under the brand Jakarta EE:
- Spring Cloud 2.0 Released:
- Spring Boot + JPA + Hibernate + Oracle
- Accessing Data – The Reactive Way, part of a series of posts on Vert.x
Stuff that’s not specifically Java-code-related, but technical all the same.
- Trunk Based Development as a Cornerstone for Continuous Delivery, many people disagree with this approach but in my experience it really does work
- The Open/Closed Principle and Strategy Pattern
- Here are the best programming languages to learn in 2018 – fortunately Java is still up there
- How to Conduct Effective Code Reviews, focuses on the goals and the process not the things to be looking for
- The workplaces of the future will be more human, not less, not sure if this belongs in this section, or the next!
This month seemed like the right time to share some of my backlog on company / industry culture given there was quite a lot of noise on Twitter about the importance of diversity and inclusion at (specifically) Java conferences.
- Diversity & Inclusion in Tech: A Panel Discussion (video), including a good overview of why this is important and covers loads of great ideas that actually work
- Culture and Diversity – Why They Belong Together in Every Tech Organization or: how your culture can promote diversity not exclude people
- Answering the question “Why is it bad to have only one or two women speakers and what can people do about it?”
- Diversity in tech conferences and meetups – how and why
- What Can Conferences Do To Attract More Women Speakers? (shameless plug: I (Trisha Gee) wrote this)
- A Speaker’s Technical Merit Only (shameless plug: my boss wrote this)
- Diversity in Tech – Part I (podcast) why; what’s the pipeline; why focus on retention; what are microagressions; why are conferences problematic but valuable; how can conferences be inclusive and so much more
- What does sponsorship look like? answers the question “what can men do?”
- Gender Bias and Sexism in Language, helps answer questions like “why is craftsman not an inclusive term?”, references so many interesting pieces about how language and gender interact
- Forget Work-Life Balance: It’s All About the Blend, interesting, but likely impossible without having clear objectives at work and/or a company that understands this blend
- Leaders Discuss Great Engineering Cultures, in which leaders discuss some of the ways to be flexible to improve work life blend and help recruit and retain diverse talent
- Decision Making in a Company with No Managers, very interesting
- Why working from home should be standard practice
- Don’t be a Junior Developer, while I agree with almost all of this article, I feel the failure here lies with industry for not encouraging/training junior developers, not with the poor newbie developer for not investing enough in themselves
- Learned Helplessness in Software Engineering
May is busy! I’ve picked out the events that might be most interesting to Java / JVM language developers, it includes events where we’ll have a booth, events where one of the team is speaking, and the occasional event with both!
- 2-4 May: KubeCon + CloudNativeCon, Copenhagen
- 5 May: JavaDay Istanbul, we have a booth and Victor Kropp will be presenting
- 8-11 May: CraftConf, Budapest
- 9-11 May: DevoxxUK, London, I (Trisha Gee) am presenting two talks
- 12 May: Morning@Lohika, Lviv, Anton Arhipov is presenting
- 14-17 May: Scala Days, Berlin
- 23-25 May: J on the Beach, Malaga, Hadi Hariri is speaking
- 24-25 May: Spring I/O, Barcelona, we have a booth and Yann Cebron is presenting
- 26 May: Voxxed Days, Minsk, Eugene Petrenko is speaking
- 29-30 May: DevOpsCon, Berlin
- 31 May – 1 Jun: DevSum, Stockholm, Hadi is presenting
- 3-5 Oct: KotlinConf, Amsterdam, an early heads-up on our European Kotlin conference.
News and topics from the IntelliJ IDEA blog and YouTube channel that you may have missed:
- IntelliJ IDEA 2018.1.2 is out! And it comes with updated support for Spring and Spring Boot, and an improved debugger (video).
- And IntelliJ IDEA 2018.1.3 EAP is open!
- The recording of my webinar on IntelliJ IDEA and Java 10 is now available. This blog post also goes into a bit more depth about Local Variable Type Inference and has links to some useful reference information.