Java Annotated Monthly – October 2017
Java 9 is here! At long last. This month we have lots of Java 9 content, of course, but that’s actually not the only Big News: not only is Java EE 8 also now available, but we can look forward to a new release of Java every six months. So we’re celebrating Java 9, but we’re already anticipating Java 10. It might not even be called Java 10…
Java 9 is out at last! In this section we have links to articles about the release, tutorials and reference documentation for some of the main features, and some commentary on the release and its features.
- Java 9 and IntelliJ IDEA, I (Trisha) wrote this just for you, our wonderful IntelliJ IDEA users.
- Java 9 Expert Insights, short videos from the people who were involved in actually implementing the new features.
- Project Jigsaw: Complete! Mark Reinhold has been waiting a long time to say those words, you can hear the relief from here.
- Migrating Your Project to Jigsaw Step by Step
- Reference Documentation: jlink, to package your deployable application into something much smaller.
- Convenience Factory Methods for Collections, my favourite new feature in Java 9.
- Finally, An Official Shell in Java 9 – Introducing JShell, also check out the excellent Oracle Tutorial on JShell. The REPL is a very interesting new feature in Java 9 and has the potential to change the way we work.
- The Stack Walking API in Java 9, some examples of how to use the new Stack Walking API. See also this older, but much more detailed post, Deep Dive into Java 9’s Stack-Walking API
- 55 New Features in JDK 9, not new, but now is the time to remind yourself of the features (video). Also check out Simon‘s blog posts on Java 9.
- New Java Magazine Issue: More Java 9
- Real World Java 9, updated video & slides of my talk on the features we’ll actually use, plus loads of links to useful Java 9 resources. You can catch this talk live this afternoon in our webinar, or watch the video later.
- Java 9: It’s Heeeere, with links to further info.
- Long Awaited Java 9.0 Releasing This Week, some comments on the key changes in Java 9 and what impact they may have
- Welcome Java 9! Members of the community talk about their favourite features and how Java 9 will impact developers.
Beyond Java 9
Yes, already… and the future is much closer than you thought!
- Moving Java Forward Faster. Yes, you read that right. JDK 10 is coming out in March 2018. That’s this March! Except that it will probably be called Java 18.3. It’s even already going through the JCP process.
- Changes to the JDK release model, more details on the new release schedule (video)
- Java Community Process Reacts to Release Cycle Announcement
- Java: Free At Last, specifically looking at the changes to licensing for Java.
- Oracle Consolidates the OpenJDK 10 Repository Forest,
- Local-Variable Type Inference proposed to target JDK 10, another great feature to reduce boilerplate and one I can’t wait to use.
- Brian Goetz Speaks to InfoQ on Pattern Matching for Java, for more details about the suggested feature see the document on java.net.
Despite all the Java 9 noise, there were a number of excellent non-Java-9 articles and tutorials this month, although even these have occasional nods to new functionality in Java 9.
- Handling checked exceptions in Java streams, and it’s worth checking out Ken’s new book Modern Java Recipes which will help you use some of the new features in Java 8 and 9 (full disclosure, I wrote the Foreword for the book).
- Ken Kousen on Java, Spring, and Groovy, the author of the above talking about a whole bunch of things that’s relevant to the modern developer (podcast).
- Finally Getting the Most out of the Java Thread Pool
- Why does my code throw a null pointer exception? in the context of writing tests.
- Following OOP principles – hermetization, a look at pre-Java-9 data hiding. Modules, of course, provide an additional mechanism for hiding classes and packages.
- Weak, Soft, and Phantom References in Java (and Why They Matter), we should understand the Garbage Collector if we want to know what impact it might have if your application is now using G1 by default. For more details see Oracle’s Getting Started with the G1 Garbage Collector.
- How to Format a String, Clarified! A nice back-to-basics summary of String formatting.
- Understanding Classes in Java (Part 1) Another good back-to-basics article. You probably know all of this but it’s always worth revising topics like this. Understanding Classes in Java (Part 2) goes deeper, including the representation of Objects in memory.
I get a lot of my Android news from the excellent Android Weekly newsletter, where they link to a much wider range of Android articles than I do, so it’s well worth subscribing if Android is your thing.
- Beautiful, Performant Android UI
- Android Architecture Components: Testing your ViewModel LiveData
- Is your Android Library, Lifecycle-Aware?
- ConstraintLayout – Guidelines, Barriers, Chains and Groups
- Making the most out of Android Studio Debugger
- Exploring Background Execution Limits on Android Oreo
- Time for non-Time Lords – Part 5, continuing the series on time, looking at timezones, something that bites us all at some point in our professional lives.
- Optimize your Android apps for Chromebooks
- The Dark side of Fragments
- Hide your crashes gracefully (and still report them)
Languages, Frameworks and Libraries
The other big news was the release of Java EE 8 at last too, as well as more news on its move to Open Source. RebelLabs also released their annual productivity report, which shouldn’t be ignored even despite all the other Java noise, particularly since it contains good news for JetBrains and our users.
- Java EE 8 and GlassFish 5.0 Released! Check out the First Cup of Java EE Tutorial Project.
- About Java EE 8, JAX-RS, JSON API, and Mobile Apps (videos).
- Oracle Chooses Eclipse Foundation as New Home for Java EE
- RebelLabs Developer Productivity Report 2017: Why do you use the Java tools you use? The highlight for us is that IntelliJ IDEA usage is up again, and Kotlin made it into the top 6 languages (and has the highest satisfaction rating).
- Using buildSrc for custom logic in Gradle builds
- Creating a REST Web Service With Java and Spring (Part 1)
- A Guide to Spring Framework Annotations and Using the Spring @RequestMapping Annotation
- JUnit 5.0 released! If you haven’t tried it yet, do give it a go it addresses a lot of the weaknesses of JUnit 4. I’m personally using it on Java 9 and it’s perfect.
- Gradle 4.2 is out. Gradle 4.1 had support for Java 9, but you’ll probably want to use the latest Gradle release if you want the best support. Also check out the Building Java 9 Modules tutorial.
- Spring Framework 5.0 goes GA, with support for Java 9 and Java EE 8 API level. You may also want to check out This Week in Spring, Java 9 Edition.
- Akka 2.5.6 Released – with JDK9 and j.u.c.Flow support. It’s exciting to see a Reactive Library with support for the new Java 9 Reactive API already.
- Hibernate ORM 5.2.11.Final released, and is Java 9 ready.
Come and say hello at the booth, see our presentations and ask us any questions!
- 1-5 Oct: JavaOne, San Francisco
- 1-4 Oct: Velocity, New York
- 5-6 Oct: Software Craftsmanship Conference, London (Hadi Hariri is speaking)
- 7-8 Oct: Silicon Valley Code Camp (our Technical Advocate Chris Woodruff will also be presenting).
News and topics from the IntelliJ IDEA blog that you may have missed:
- The IntelliJ IDEA 2017.3 EAP is running, take a look at what’s new.
- We have several webinars coming up, including:
- Code Smells Series: Multi-Responsibility Methods, If Statements, Too Many Problems.