Java Annotated Monthly – March 2018

It’s time to share a quick update on what’s been going on in the JVM community over the last month. Before we delve into the news, rumors, and interesting articles, I’d like to share some exciting news… Trisha is returning as a host of this digest, so today’s issue is probably my last one before I turn it back over to her. It has been an honor, enjoy!


As always, we start with the official Java release news. The main topic on everybody’s lips is, of course, Java 10, which is going to be released on the 20th of March. To help you prepare yourself for the new release, Simon Ritter has made an exhaustive list of all changes in this release (including major features, minor changes to the APIs. changes in the specification, etc).

If you’d like to know more on the most important change that is coming with the release, you can read this nice post by By Tali Soroker on how Java 10 will change the way you code. As you might’ve guessed it’s about the local type inference.

Speaking of the latter, Benji Weber also wrote an article on this subject, explaining when the local type inference is most helpful.

Even though Java 10 is not released yet, the JDK 11 early access builds are already available for a preview. In the last issue, we mentioned a post that explains what to look out for inside JDK 11.

By now you’ve probably already realized that Java doesn’t plan to stand still. In case you still doubt that you can read a recent post by Brian Goetz on data classes for Java. The post touches upon why they’re needed and what are the challenges to implementing data classes in Java. The post also includes a particular proposal for implementing data classes in Java.

Yesterday, Oracle made an announcement about the future of JavaFX. Long story short, it will be removed from JDK from v11 and become an open-source community project “OpenJFX”. The post has a link to the Oracle Java Client Roadmap Update (PDF document). Earlier a similar thing happened to Java EE which is now Jakarta EE 5.

If you’d like to know what’s up with the latter, Alex Theedom wrote a post on the 5 things you may need to know about it. On a related note, Eclipse MicroProfile 1.3 is out. Kesha Williams wrote an article for InfoQ which explains it in more detail.


Below is a list of the articles I found interesting.

  • Christian Posta wrote about the difference between deployment and releasing, and how Istio helps mirror traffic from one service to another in order to reduce the risk of service regression.
  • Nicolas Fränkel wrote about programming by contract on the JVM. The article mentions the built-in capabilities of the JVM and also third-party libraries. The article doesn’t mention, yet it’s good to know, IntelliJ IDEA offers its own contract annotations and is also capable of infer method contracts using advanced static analysis techniques.
  • Mahmoud Anouti revised the Java 8’s CompletableFuture and wrote twenty examples of using it.
  • Aboullaite Mohammed wrote about how to build convolutional neural networks with Deeplearning4j.
  • Finally, Roger Guldbrandsen wrote a detailed post on Spring dependency injection patterns and related pitfalls. Long story short: use the constructor injection pattern.


Here’s a list of most notable releases that came out last month:

  • Gradle 4.6 (JUnit 5 support, updated Kotlin DSL, and more)
  • Spring Boot 2.0 (reactive APIs, HTTP/2 support, reworked configuration property binding, reworked Gradle plugin, updated Kotlin support, actuator improvements, and many many more). Read about its infrastructure changes in the post by László Csontos.
  • Android Studio 3.1 RC 1
  • Kotlin 1.2.30 (suspend modifier for lambda expressions, support for TestNG, Android modules in multi-platform projects, lots of new inspections and intentions in the IntelliJ plugin, bug fixes, and better IDE performance)
  • WildFly 12 GA (Java EE 8 preview, MicroProfile REST Client 1.0, better Java 9 support, better thread pooling strategy, etc.)
  • Kotlin/Native v0.6 (multi-platform projects in compiler and Gradle plugin, transparent Objective-C/Kotlin container classes interoperability, smaller WebAssembly binaries, initial support for embedded targets, etc.)


In terms of books, Javin Paul made a nice list of “some of the best Java books from the last a couple of years that you can read in 2018 to learn Java and related technology better”.

Last, but by no means least, IntelliJ IDEA 2018.1 is now available for a public preview. The update brings better code completion and code analysis, updated JUnit 5 support, debugger improvements, visual annotation of the code with inferred annotations, Android Studio 3.0 features, partial Git commits, better Docker compose support, Spring Boot support improvements, and much more.)

That’s it for now. Hope you’ve enjoyed the issues written by me. Next month, your host will be Trisha. Meanwhile, make sure you’ve subscribed to get the digest to your email.

Happy developing!

Subscribe to Java Annotated

image description