Java Annotated Monthly – December 2015

Posted on by

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!

Java

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

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!

Frameworks

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.

Mobile

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.

Community

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.