Java Annotated Monthly – December 2015

Containers. IoT. Microservices. Reactive programming. These are the trends have driven the evolution of Java over the last twelve months. As web developers are shifting away from monolithic applications toward asynchronous, event-driven services, we have watched these same trends emerge and take hold of the Java community. And these are the topics we’ll be watching closely, in 2016. Until then, happy reading and happy holidays!



JDK 9 release schedule – The OpenJDK committee has postponed the release schedule for Java 9 pending a comprehensive overhaul of the module system in Project Jigsaw. Despite the availability of Early Access builds, Java 9 and the Java Module system is still very rough around the edges, requiring additional time to reach their feature-complete milestone. The new schedule calls for FC by June 2016, targeting GA a year later.

Java Advent Calendar – It’s that time of year! Each year, the Java Advent Calendar covers in-depth topics from Java to new frameworks and libraries. Subscribe to the Java Advent Calendar, and you’ll find new articles and good ideas to contemplate over the holidays. Here are some of our favorites this year:


Kotlin 1.0 Beta 3 – In the latest update, Kotlin delivers a number of various library and language changes, miscellaneous updates to visibility and scoping and additional tooling support. IntelliJ IDEA now bundles Kotlin Extensions for Android as well as new inspections and intentions for Kotlin code, and direct support for the kotlin-gradle-plugin in the New Project wizard. As Kotlin quickly approaches its first release there is no better time to send us your feedback!


Spring Boot 1.3.0 Released – After many months in development, Spring Boot, the convention-over-configuration framework for developing modern web applications has reached 1.3! This release includes all new developer tools for faster deployment and automatic restarts. This release also includes support for new servlet annotations, and auto-configurations Cassandra, OAuth2, Spring Session jOOQ, SendGrid and Artemis.

How not to hate Spring in 2016 – Spring veterans often disagree about how to configure an AbstractAnnotationConfigDispatcherServletInitializer or the best way to inject a dependency with @Resource, @Autowired and @Inject. But the truth is, Spring isn’t so bad. You might even fall back in love with Spring by using an opinionated framework like Spring Boot, or judiciously importing Spring and isolating unit tests with a mocking framework.


Android Studio 2 Preview – Android’s Tools team breaks new records in deployment speed with the upcoming release of Android Studio 2.0. In addition to C/C++ support announced earlier this year, AS 2.0 introduces a brand new emulator, with a vastly improved hot- and cold- swap capabilities. Deploy your mobile app to an emulator in seconds with Instant-Run and get clearer insights into your app’s graphics performance with the brand new GPU profiler. For more details, check out What’s new in Android Studio and Android Studio for Experts from the Android Dev Summit.

OpenJDK Mobile – A new OpenJDK project targeting mobile platforms has emerged on the Java roadmap. Based on JDK 9, this project aims to port bona fide Java to iOS, Android and Windows mobile. It is not yet clear how those involved plan to evolve the Android JDK as an alternative to native development on those platforms, or what role it might play, but be sure to keep an eye out for news on this project in 2016.

Android Development with Kotlin – The prolific Jake Wharton demonstrates how you can use language features in Kotlin in to unceremoniously build Android applications. In this talk, you will find several recipes for turning boilerplate Android code into short, sweet Kotlin applications, and how to avoid a variety of potential bugs in the process. You will discover many useful idioms in Android that can be simplified by appling Kotlin.

Open Source

Pure4J – Unlike many functional programmers, Pure4J is not dogmatic, yet even the strictest functional purist can appreciate the simplicity of Pure4J – to indicate that a function is pure, simply annotate it with @Pure and Pure4J will guarantee that it has no side effects and is purely deterministic, or it will generate a compile-time error.

Rapidoid – “Why do I need yet another web framework?” you may ask yourself. Here’s a reason: there is no faster Java framework for serving plaintext and JSON queries than Rapidoid. Built by Nikolche Mihajlovski, Rapidoid consists of an HTTP server, GUI components and decoupled utilities for serving queries faster than you can say, “lickety-split”.

Spotify Apollo – Apollo is Spotify’s framework for writing microservices, recently open-sourced from internal use. This consists of an API, the core library, and an HTTP service (documentation within). Written in pure Java, Apollo offers a number of examples for setting up a microservice architecture.


Optimizing Hash-Array Mapped Tries – PhD students Jurgen Vinju and Michael Steindorfer at CWI Amsterdam publish a result that improves the memory and runtime performance of Hash-Array Mapped Tries in Clojure and Scala. Adrian Colyer interprets.

Faster Atomic*FieldUpdaters – Aleksey Shipilёv describes optimizing the performance of AtomicFieldUpdaters for JDK 9. This post highlights some of the excellent work being done around improved atomics and Variable Handles in Java 9.

How we used Category Theory to solve a problem in Java – Who says Category Theory isn’t useful for programming? It’s not every day you can say you solved an engineering problem with monoids and functors. Surely, you might wonder if there was a less elegant solution (almost certainly). Though perhaps none that were more satisfying.

Comments below can no longer be edited.

6 Responses to Java Annotated Monthly – December 2015

  1. Avatar

    Leonardo says:

    December 15, 2015

    When Android Studio 2.0 changes come to Intellij 15? I use Intellij to develop to Android and it is always behind Android Studio.
    Intellij is a paid tool and Android Studio is a free tool based in intellij. Why the changes are always delayed?

    • Avatar

      Breandan Considine says:

      December 15, 2015

      Hi Leonardo, good question! There are two reasons why IntelliJ IDEA and Android Studio could appear to be out of sync. Since they are developed at separate organizations, the featureset and channel you are using may not be stable, (ie. you could be using Android Studio 2.0 Beta 3, and IntelliJ IDEA 15.0.1), or you could be comparing bleeding edge features straight from the nightly buildserver. Android Studio 2.0 will likely be feature-equivalent to IntelliJ IDEA 15.1 or later.

      The second reason, is that even when the branches are stable, each organization will need to merge the changes from their respective counterpart. Merging these changes can require cherry-picking changes from Android Studio to IntelliJ IDEA or possibly updating the Android Studio codebase to reflect changes made in the IntelliJ Platform SDK. The process can often take several months between when a feature is first “available”, to when it is stable and ready for production.

      • Avatar

        Leonardo says:

        December 15, 2015

        Thank you for the answer Breandan.
        Then, if i am want to use the most updated Android IDE i need use Android Studio.
        And the Intellij will always be behind Android Studio in features.
        At least in the coming years.

        • Avatar

          Breandan Considine says:

          December 15, 2015

          Correct. If you need the latest Android features, you should use Android Studio. For the latest Java features, you should use IntelliJ IDEA. Most of the time, they will be out of sync with each other’s features in some particular area.

  2. Avatar

    Sebastian says:

    December 16, 2015

    In general, I like the “Java Annotated Monthly”, but I find it always a bit funny how JetBrains is trying to sneak in news about their Kotlin language, which is totally irrelevant to 99% of JVM devs and got no real market traction. Otherwise, they should also include news about other JVM languages like Scala or Clojure.

    • Avatar

      Breandan Considine says:

      December 17, 2015

      Hi Sebastian, appreciate your feedback. The omission is not intentional, and we’ll try to cover news from other JVM languages in the future. But now that you mention it, there are two new tools that I recently got to try, and I think you’d also enjoy:

      Scala.js is a great way to pick up Scala for beginners, and works completely inside the browser. It even has built-in auto-completion, so you don’t need an IDE.

      Cursive Clojure is a brand new IDE for Clojure, built by Colin Fleming, a frequent poster on the API Forums. It also has advanced support for ClojureScript and Leiningen.

      If you have an article you would like to see in the Java Annotated, please ping us @IntelliJIDEA on Twitter, and we will strongly consider it. Thanks!

Discover more