Java 11 is due out this month, so you’d expect a lot of Java 11 news. There is some, but the main noise in the community is not around the new language features, but about Oracle’s updated support model. This is causing panic of the “Oh my goodness Oracle is going to start charging for Java”, which is a) not true because actually Oracle has always charged for commercial support and b) not true in the way a lot of people are saying it. Read on for more information.
Java Is Still Free
There’s so much noise, confusion and nonsense out there about Oracle’s changes to support for Java that this deserves its own section. Here’s a short version, more details available in each of the articles:
- You can still download the Oracle JDK for free and use it for free in development/test environments.
- Oracle’s JDK 8 will no longer receive public updates after January 2019.
- As of Java 11, OpenJDK has feature parity with Oracle’s JDK, so if you want to use a free JDK, download OpenJDK for your platform.
- The ongoing support / updates for “older” versions of Java (including 9 & soon 10) has changed since the introduction of the six-monthly release cycle.
- For Oracle’s commercially-licensed JDK, Java 9 is no longer updated/supported, and, when Java 11 comes out, there’ll be no support for Java 10. If you’re currently using Oracle’s JDK, you need to look at which version(s) you’re using and which versions you want to use going forward, and you need to understand Oracle’s support model (and prices) if you want to use it in production.
- If using OpenJDK, you may need to upgrade to the latest version as soon as it’s available. This is the same advice that applies to any free open source library or framework.
- Other vendors may offer support for Java 9 and other versions.
- If you want full support for the version of Java you’re running in production, you should compare and contrast the support models and prices of Azul, IBM, Oracle and Red Hat. Note that these companies always had free and paid for services / support, so none of this is really new.
- Oracle Announces New Support Pricing Structure for Java
- Java is still available at zero-cost
- Eliminating Java Update Confusion
I’ve decided to split out news / updates from tutorials for this month, since some people want to know what’s going on but some people are just interested in the how-tos.
- The Will of the [JDK Using] People – or: people don’t really understand what this six-monthly release cycle really means
- The State of Java Serialization – TL;DR: it’s a huge security risk and therefore try to not have it in your code
Developers favor JVM languages for mobile, enterprise – good news for us I guess
Getting to Know Graal, the New Java JIT Compiler – great summary of what this new Graal thing is all about, and why Graal and GraalVM are not the same
- 10 All-Time Great Books for Java Programmers – just adding these books to your Kindle makes you smarter, right?
- How Memory Leaks Happen in a Java Application – your regular reminder about stuff you should know
- Evolution of Interfaces in Java – good rundown of all the changes to interfaces over the whole history of Java
Java 11 should be out in September. The new 6-month release cycle makes this less exciting than the Java 8 or 9 releases, but it’s still an important one, especially as this is where a) OpenJDK should have all the features you expect from the Oracle JDK you were (probably) previously using and b) for many JDK distributions this release replaces Java 9 and 10, so if you were using either of those you should be upgrading as soon as possible.
- JDK 11: Release Candidate Update and OpenJDK JDK 11 LTS
- JDK 11 in Release Candidate Phase
- It’s time! Migrating to Java 11 – this covers a real application upgrading from 8 to 11, taking in all the changes for 9, 10 and 11. Well worth a read.
Honestly this new release cadence is creating way more sections in Annotated Monthly that you’d expect. This might be ripe for refactoring.
- JDK 12 Early-Access Build 10 is here
JDK 12, Merging Collectors, and the Challenge of Naming – or: naming is hard
JDK Language Feature Preview in Action: Switch Expressions – we’ve mentioned the updates to the switch statement in previous editions. This article not only talks about these, but about how you can take a look at the proposed implementation via the new language preview feature.
In this section we look at hands-on examples of code and architecture.
Strategy vs. Factory Design Patterns in Java – it’s always good to see design patterns in practice
- Using the Adapter Design Pattern in Java – I’ve been using the Adapter pattern when getting Java 9’s Flow API to work with the Reactive Streams API, it’s very useful
- Java Code Bytes: Be Resourceful With Try-With-Resources – if you’re not using try-with-resources, you should be
- How to extract a data-rich service from a monolith – excellent walk through of the realistic problem of creating a real service from a larger application.
- Java Developers: var Is Your Friend – a nice rundown of what var is and what it isn’t
- Kotlin + Gradle + Spek 2 + JUnit 5 — a simple guide – a guide to getting it all up and running together
Languages, Frameworks and Libraries
- New Version of ByteBuddy Fully Supports Java 11 – interesting not just for understanding ByteBuddy, but for seeing some of the changes in recent versions of Java and how they impact the libraries you use
JUnit 5 – Basics – This article has been updated for the most recent version of JUnit 5
- Deep Dive into JUnit 5 Extension Model – an interesting use case showing how you can build a test framework that looks the way you want via JUnit 5
- Ant and JUnit5 – simulating sysproperty
The Business Case for Unit Testing – in case you didn’t already know that catching bugs early and automatically is a Good Thing
Microservice Architecture with Spring Boot, Spring Cloud and Docker – “This is a proof-of-concept application, which demonstrates Microservice Architecture Pattern using Spring Boot, Spring Cloud and Docker.” I haven’t looked at it in detail but it looks really interesting
Culture & Community
I’m researching for a presentation on Career Advice for Programmers, so this section is quite career-focused this month.
Being Glue – if you’re going to follow one link from this section, it should be this one. Especially relevant if you’re from an Underrepresented Group (e.g. women coders)
Career advice for novice software developers, IT pros, and tech workers – a collection of interesting and useful bits of advice
- The New Best Engineer – seems like we have to be good at everything these days, is that true?
- Procrastinators, Rejoice! How Waiting Until The Last Minute Can Help Us – or not, as the case may be
- How A Few Offhand Remarks Can Cause Your Biggest Problems At Work – or: be nice.
- Research: When Managers Are Overworked, They Treat Employees Less Fairly – so, we should help our managers work less?
We’re barely into autumn but the torrent of conferences is upon us! Let’s look at all the events for September, and noteworthy ones for the next three months.
- 10 Sep: SwanseaCon – Hadi Hariri is presenting the Opening Keynote: Where’s my free lunch.
- 12-13 Sep: JavaZone, Oslo – Hadi Hariri is presenting Asynchronous Programming with Kotlin.
- 12–14 Sep: ProgNET, London – Trisha Gee is presenting Keynote: Career Advice for Programmers.
- 20-22 Sep: Tarugoconf, Madrid – Hadi Hariri is presenting Vender cosas (a técnicos, programadores y otras especies peligrosas) (yes, in Spanish).
- 3–5 Oct: KotlinConf, Amsterdam – sold out!
- 4–5 Oct: Software Craftsmanship London – Trisha is talking about Code Review.
- 22–25 Oct: Oracle Code One, San Francisco (formally JavaOne) – we have a booth, and Eugene Petrenko, Roman Elizarov and Trisha will be presenting a number of talks and BoFs.
- 29 Oct–1 Nov: O’Reilly Software Architecture Conference, London – Trisha is presenting Keynote: Career Advice for Architects.
- 12–16 Nov: Devoxx Belgium, Antwerp – Valerie Andrianova, Trisha Gee and Eugene Petrenko are all presenting, and JetBrains has a booth.
Here’s a chance to catch up on the IntelliJ IDEA and other JetBrains news that you might have missed:
- IntelliJ IDEA 2018.2.3 is here! and now the 2018.3 EAP has started.
- Gradle Improvements in IntelliJ IDEA 2018.2 (and other recent releases).
- Scala Plugin Improvements (video) and Version Control Systems Improvements (video) in IntelliJ IDEA 2018.2, catch up with all the 2018.2 screencasts with this playlist.
- Code Review Best Practices using Upsource.
I’ve never officially said this on the newsletter but it was always implied: if you have any interesting or useful Java / JVM news to share via Java Annotated Monthly, drop me a message via Twitter.