Java Annotated Monthly – June 2014

The Java ecosystem is alive and flourishing, with nearly ten million active Java developers, and this June is no exception! Each month, we’re thrilled to bring you the best content from around the world. Looking for the latest Java news and announcements? Look no further.


In this month’s Java roundup, we have eight ways to become more familiar with Java 8 for beginners to experts.

  1. Interface default method implementations
  2. Lambda expressions
  3. The Stream API
  4. JDK8 – Lottery
  5. Java 8 and Java FX
  6. Project Nashorn – JavaScript on the JVM
  7. 10 Subtle Mistakes When Using the Streams API
  8. Leveraging lambdas in Scala, Java 8, Clojure and JRuby

Project Jigsaw – Jigsaw development is now full steam ahead, planned in four separate phases. The first three will modularize the JDK, and the last phase will introduce a concrete module system – modules are basically collections of types with associated metadata and resources. Mark Reinhold has also released a draft outlining the project’s updated goals and requirements. Get involved in the discussion today!


Scala Roadmap – Scala charts a path towards Java 8 interop in 2.12, slated for 2016. Some early goals include a new scalac backend/optimizer, support for invokedynamic, method handles, revamped collections and much more.

Scala: The Simple Parts – Martin Odersky, lead designer of Scala, takes a journey through a few core ideas in the Scala language and demonstrates how its functional and object-oriented design can lead to greater composability and expressiveness.

IcedTea 2.5.0 for OpenJDK 7 Released – The IcedTea project provides a harness for building OpenJDK using FOSS build tools and supports alternate platforms and JVMs.

Kotlin M8 is out – Kotlin M8 introduces property reflections, inlining improvements, support for modifier keywords, and a number of additions to the standard library.

How to Build a Virtual Machine – Terence Parr, creator of the ANTLR project gives an excellent talk on building a virtual machine from the ground up.


Gradle 2.0 Release Notes – Gradle 2.0 brings updates for the latest versions of Groovy and Java, better Maven interoperability, a simpler GCC toolchain and improved tooling support for IDEs. As usual, there are a few DSL and build script changes to watch out for, be sure and read the features roadmap for 2014.

Getting Started With Gradle – Check out this three-part compilation on getting started with the Gradle build system from Petri Kainulainen.

Docker Containers With Gradle in 4 Steps – We’ve been hearing a lot about Docker lately, a platform for shipping apps across clouds, data centers and other devices, which recently launched 1.0. Now, resource provisioning with Gradle and Docker has never been easier.


Maven 3.2.2 Released – The latest Maven release is a minor one, primarily featuring support for version ranges in parent elements.

Continuous Integration Using Docker, Maven and Jenkins – Maven continues to be the build system of choice for millions of developers. Learn how to set up continuous integration with Docker and Jenkins for hands-free testing and deployment.

Testable Java EE 7 Maven Archetype, using Arquillian – Arun Gupta shows us how to configure Maven to run integration tests on WildFly or GlassFish using Arquillian.


Spring IO Platform 1.0.0 Released – Spring into modern web application development with the unified Spring IO Platform, version 1.0 – Josh Long, developer advocate at Pivotal explains a few of the motivations behind the recent overhaul in this interview.

Free Spring Framework Course – Bruce Hilton from denOfProgramming shares his experience in an outstanding introduction to programming on the Spring Framework.

Explicit vs Implicit configuration in Spring – Two approaches for configuring IoC in Spring: auto-wiring/injection and XML-based configuration.

Developing Single Page Web Applications using Java 8, Spark, MongoDB, and AngularJS


Android Studio Beta Released – Including a brand new Navigation Editor for prototyping applications, the Layout Editor has received a great deal of attention from Android’s Tools team to support screens in all shapes and sizes. Don’t forget to check out What’s New in Android Development Tools from Google I/O!

A Closer Look at Android RunTime (ART) in Android L – Since an early debut under KitKat and prior to launching in “L”, Java’s newest virtual machine has been put through its paces, and the results are in! Andrei Frumusanu from AnandTech brings us the state of the ART in rendering benchmarks, garbage collection and more.

Groovy on Android – Finally, it is now possible to run Groovy directly on Android! Cédric Champeau, software engineer at Pivotal describes some of the difficulties in building Groovy language support for Android, whose work was recently merged into Groovy.

RoboVM 0.0.14 has been released – RoboVM 0.0.14 updates support for iOS 8 and CocoaTouch, now bundled with Android 4.4.3 runtime libraries.

Open Source

ByteBuddy – ByteBuddy is an instrumentation library for programmatically generating Java bytecode during runtime, from open source enthusiast and IntelliJ IDEA user Rafael Winterhalter. As well as contributing to DZone and StackOverflow, he also writes an excellent blog, My daily Java.

deeplearning4j – The release of DL4J helps circulate years of research that has, until recently, only been accessible to academia and large corporations. Thanks to Skymind, now you too can leverage cutting edge machine learning techniques to build more intelligent applications.

FlatBuffers – FlatBuffers is a cross-platform serialization library for reading and writing data across high performance applications. It is basically a much slimmer version of Protocol Buffers, without a parsing/unpacking step.

AeroSpike – AeroSpike is an in-memory database solution competing with the likes of SAP HANA, Oracle TimesTen, IBM SolidDB and plenty of others. Last month, AeroSpike joined VoltDB in releasing their platform to the open source community.


Testing With Spock – Given Spock is a behavioral testing framework in Groovy, when you a write a new test in Spock, then it should look something like this sentence. If you’re new to BDD or Groovy, Łukasz Janicki writes an excellent primer for getting started with plenty of sample tests.

Lambda Behave – Think that behavior and tests should always be written in the same language? Lambda Behave might be right for you. While somewhat more verbose, Lambda Behave provides a fluent API wiring your tests and integrating with JUnit.

Testing with Aliens; How to test a JPA type converter with Arquillian – Arquillian is a JBoss project for making testing more portable across IDEs, build tools and servers. It provides a provides a component model for writing integration tests that can be run inside almost any application server or container implementation.


Java vs. Scala: Divided We Fail – Aleksey Shipilёv profiles a divisibility benchmark in Java and Scala with some surprising results, cf. Scala is faster than Java.

Notes on False Sharing – Nitsan Wakart, Performance Engineer at Azul Systems explains false sharing, a problem whose solution in Java was far messier prior to the introduction of JEP 142.

XRebel 1.0 – ZeroTurnaround releases XRebel, the interactive Java profiler.

YourKit 2014 EAP – Six months into their EAP, YourKit has developed several new profiling features, including exact line-level traces, duplicate & highly referenced object detection, performance improvements and better alignment with Java 8.

An ultra-lightweight high-precision logger for OpenJDK – Andrew Haley from the OpenJDK Project documents implementing a flyweight logger in C through the JNI.


Hotspot compile command annotations – There is a good chance you’ll never need to force an inline method in Java thanks to JVM optimizations. If you do, make sure it’s short, make sure it’s hot, make sure it’s well-tested, cf. Fixing the Inlining “Problem”.

JavaScript for Java Developers – Despite a growing number of end-to-end RIA solutions, JavaScript is often the last mile in delivering modern web applications and today’s Java developer should have a good working familiarity with JavaScript.

Java Method Logging with AOP and Annotations – Yegor Bugayenko walks us through a classic AOP activity, logging, with AspectJ and jcabi-aspects.

GeekOut 2014 Presentations and Videos – Thanks to an amazing round of talks from developers around the world, GeekOut 2014 was a huge success! Talks from this year feature git workflows, HotSpot improvements, reactive programming, jOOQ and much, much more.

image description