IntelliJ IDEA
IntelliJ IDEA – the Leading Java and Kotlin IDE, by JetBrains
Java Annotated Monthly – January 2018
Hopefully everyone has recovered from the holidays. November is probably one of the craziest months, a sharp contrast to late December and early January which are some of the quietest ones, at least in my experience. People are wrapping up the year’s results, making plans for the year ahead, and of course, enjoying the holidays. If you had holidays like we did, this January digest might be helpful for updating you on what has happened in the community during the last month. If not, I hope you find the news and articles interesting anyway. If you missed all the champagne and watched the blogs and social accounts closer than we did, please feel free to share the missing news in the comments. Since Trisha, your regular host is still on maternity leave; I will do my best to fill in for her for this.
Spring
SpringOne Platform that took place last December in San Francisco was probably one of the latest conferences that we attended. The videos of the talks are already available. The talks cover lots of useful stuff from what’s new in the latest Spring releases to best practices and how-tos. If you’d like to know more about the most important news announced there, make sure to read the post on it by InfoQ. One of most intriguing topics I found was PFS (project riff).
If you’d like to have a broader picture of what has happened in the Spring community over the last year, read the post by Josh Long on it.
Java
The end/beginning of the year is a good time to look at not only the past but also the future. If you’re curious about what the future of Java might be, make sure to read the post on it by InfoQ. The post has a recap of what happened last year (e.g. new release cycle) and outlines the plans for the following releases, incl.:
- Local variables aimed at Java 10,
- Null GC algorithm aimed at Java 11
- Value types and data classes perhaps aimed at Java 11 but there is no certainty of it
- Pattern matching and switch expressions with no definite plans at all
If you care more for what you can actually put your hands on rather than just their plans, we remind you that there are at least two things you can already try right now: the JDK 10 early builds and the early builds of Valhalla (value types).
To see the exact schedule and list of features of the Java 10, you can check out this page.
If you’d like to refresh your knowledge on what the Amber project is (local variable type inference, enhanced enums, enhancements to lambda expressions, pattern matching, data classes), you may want to have a read of a post on it by Mahmoud Anouti.
To amuse yourself, you can read the threads on Reddit on what features make Java stand out from other languages as well as a bit on its weaknesses.
Finally, there are two quick updates on books about Java. First, the new third edition of the most famous book of all time Effective Java by Joshua Bloch is out. The new edition covers the recent changes in the language. Second, the most popular Java snippets from Stack Overflow Documentation were converted in a free PDF ebook.
Tools
There is some interesting news related to static code analysis:
- Facebook open-sourced RacerD, a Java race condition detector for Java.
- PVS-Studio announced planned support for Java.
Articles
Here’s a list of some of the other interesting articles found on the web recently:
- Unmesh Joshi explains in his post what happens in Java on the Linux level when you create a new Thread object and call its start method. The post requires a basic understanding of JNI, C/C++, and Linux. The sources are also available.
- The ongoing series of mini-posts JVM Anatomy Park by Aleksey Shipilev has several new episodes:
- Rafael Winterhalter, the author of Byte Buddy and a maintainer of cglib, wrote about the new approach to defining Java classes in runtime provided in Java 9 (java.lang.invoke.MethodHandles.Lookup::defineClass) and compares it to the alternatives (the JVM-interal APIs). This may be interesting if you work with the Java runtime.
- Cédric Champeau, one of the engineers at Gradle, explains why the multi-release JAR files, the latest addition to the Java spec, might be a bad thing.
- Sander Mak, one of the authors of the book Java 9 Modularity, is calling all Java library maintainers to move the libraries toward modules to make it easier for everyone to use the libraries with Java 9. The post briefly explains the problem and the best way to go about doing it.
- Nicolai Parlog, the author of the Code FX blog, wrote about what you need to know if you want to use Java 9 and Maven.
- Gunnar Morling wrote a quick note about Java 9’s java.util.spi.ToolProvider that lets you conveniently run any JDK tool programmatically from your code.
- Shekhar Gulati published a nice little curated list of useful Java 8 functions. Take a look at this list to check if you know all these functions well.
- Lukas Eder continues to educate us on SQL and in his latest post explains the costs of JDBC Server Roundtrips.
- A user on Reddit is asking about what are the best JVM libraries for data analysis and machine learning. In the thread you can find some recommendations from the Reddit community. This might be useful given the recent rise in interest of machine learning and AI.
That’s it for now. Last but not least, our long-time friend, a Java and IntelliJ IDEA advocate, and known author of the Java Specialists Newsletter, Heinz Kabutz, launched a comprehensive video course on how to get started with IntelliJ IDEA. If you’re new to IntelliJ IDEA, go ahead and sign up for this free course.
Note, the list above is by no means the complete list of all the news or articles, but rather the list of what we’ve noticed and found interesting. Please do share any other news you find interesting in the comments! And of course, don’t forget to subscribe to receive this digest via email.
Happy developing!