Java Annotated Monthly – January 2015

This year promises to be full of exciting news in the Java community. From new mobile platforms to emerging languages on the JVM, we will keep you informed of the latest developments throughout the industry, and look forward to being your trusted companion throughout the year. Place a bookmark on the IntelliJ IDEA blog and stay tuned each month for the latest Java news, straight from the source. Develop with pleasure!



Today, Java is not just a language, but a community, one in the making for nearly twenty years. With Java EE 8 over the horizon, and work on Java SE 9 already well underway, there are plenty opportunities to stay involved. Become a JCP member and help adopt a JSR today!

State of the Specialization, December 2014 – Brian Goetz is working out a way to unify primitives, value types and Java generics, which may look simple, but is no mean feat. Doing so will require a new supertype, which requires some careful design considerations. You can learn more about his proposal, and follow the discussion on valhalla-dev.


There are many JVM languages to choose from and whether it is Clojure, Groovy, Kotlin, or Scala, we know you’ll find something to suit your language requirements. Language changes how you think about the world. Take the pluge and learn a new language today!

A Month of JVM languages – The vJUG finishes a languages roundup, featuring four excellent candidates for your next project: Groovy, Ceylon, Kotlin and Scala. These languages share a number of smiliarities, and all of them run on the JVM, making them great choices for a number of platforms.

Clojure Conf 2014 – Talks from last years Clojure conference feature dozens of talented speakers who have traveled far and wide to deliver sessions on a number of subjects. Don’t miss Om nom nom nom with Anna Pawlicka, Unlocking data-driven systems with Paul deGrandis, and Inside Transducers with Rich Hickey.


One of Java’s largest areas for growth in 2014 has been mobile and that trend shows little signs of slowing. As a lingua fraca for many developers, Java is uniquely well suited to bring traditional software experience to mobile devices and attract new talent with broadly applicable skills.

Jack and Jill – The Android Tools team has released two experimental tools for transforming Java code to Android byte code, the Java Android Compiler Kit and Java Intermediate Library Linker. Together, these toolchains form a new, simpler build system for assembling APKs. Jack currently supports shrinking and obfuscation, and relies on fewer external dependencies.

Espresso 2.0 Released – The second version of Espresso, the Android testing API has been released, with support for Actions, Matchers and Assertions. There are a few potentially breaking changes that have been introduced, which you can read about in the release notes.

Android Developers Backstage Podcast – Tor Norbye and Chet Hasse produce the Android Developers Backstage Podcast, which has guests from around the Android team, who hold interesting coversations to help make your daily commute a little more pleasant.

Android Performance Patterns – If you’re an Android developer starting to optimize your app for performance, definitely watch these videos. They cover topics like frame rate, rendering and battery consumption, which will help you conserve power and improve response times.

Open Source

Making the case for open source was never a sure thing, but today we are glad to report that open source is stronger than it ever was before. Open source remains a viable model for large organizations and individuals around the world, from governments to universities to corporations and millions of developers around the world.

Dagger 2.0 – The second iteration of the popular dependency injection framework is a complete rework of Dagger, eliminating all runtime reflection in favor of code generation, which allows it to validate the entire object graph at compile time. For more information about Dagger 2, have a look at the documentation, which makes for a very easy read.

Codota plugin for Android Studio – As a new Android developer, you may be wondering where to find good Android examples. Codota has built a plugin for Android Studio that lets you search through a number of popular Android libraries, allowing you to quickly find the best code samples for a given class or method with just a few keystrokes. You should give it a try!

Google Cloud Dataflow SDK – Cloud Dataflow is a fully managed real-time data analysis service from Google, that comes with a number of monitoring and visualization features. To learn more about Cloud Dataflow, take a look at the Google I/O keynote and read their documentation.

Introducing the Azure DocumentDB Java SDK – If you use Java on the Microsoft Azure cloud, then you will be pleased to know there is a Java SDK for the DocumentDB service, available now on Maven Central. You can check out this guide to learn how to get started.


Today’s developers are not just programmers, they are teachers, students, entrepreneurs, and consultants. There are an enormous amount of resources available to today’s developers, and one way to become a more effective developer is by talking about your work.

Programming Should Be More than Coding – ACM fellow and Turing Award winner Leslie Lamport is the creator of Paxos, a set of algorithms for reaching distributed consensus. He calls for all programmers to plan very carefully before writing a single line of code, echoing many of Greg Wilson’s ideas in software engineering. Good design cannot be understated.

Why Spark Is the Next Top (Compute) Model – Dean Wampler discusses the evolution of the MapReduce paradigm and provides a broad introduction to Spark. Apache Spark is a cluster computing framework that provides a simpler way forward for data processing tasks, with APIs for SQL, streaming, machine learning and graph algorithms.

Samza in LinkedIn – If you need to process millions of events per second, one of the limitations of Spark’s Streaming API is batching. An alternative for realizing higher throughput is by using a solution like Apache Kafka. Apache Samza is a framework that provides abstractions ontop of Kafka for reliable distributed stream processing. You can learn more about Samza on their website.


The Java community is an amazingly vibrant place thanks to millions of developers like you. Each month, we look forward to reading the latest news from the developer community. Each month we learn something new. If you have an article you would like to share with the community, let us know!

JCP Celebrates 15 Years – Java’s Community Process has made significant strides over the last year, with more than 35 new members, 40 new JSRs, and hundreds of active contributors. The JCP program is currently transitioning towards a new model, and their restructuring efforts are already showing progress in a number of areas.

Scraping Vine Videos from the Twitter Streaming APIs in Java – If you have ever written a web scraper before, there is a good chance you never wish to again. Luckily, there are a number of generous developers who help prevent that scenario. VineScraper uses the popular Twitter4J and Commons IO libraries to asynchronously identify and download Vines from Twitter.

Replacing Throwing Exceptions with Notification in Validations – Exceptions are a bit like money. Just because you can throw them around doesn’t necessarily mean that you should. Martin Fowler makes a case for using the Notification pattern to signal invalid data rather than using checked exceptions, which are often troublesome to debug and fix.

image description