Java Annotated Monthly – July 2014



Today’s Java landscape is growing larger and faster than ever, with over 30,000 new Java projects created on GitHub each month. Here on the Java Annotated Monthly we leave no stone unturned to bring you the most important news and developments around the world. All the news, fit to println(“Develop with pleasure!”);

Java

Project Valhalla – Project Valhalla is an exploratory group headed by Java Language Architect and lambda designer Brian Goetz. Valhalla seeks to introduce a number of language features in Java 10 and beyond, from value types, to enhanced volatiles, to primitive type generics and more.

Project Sumatra – Project Sumatra will allow the JVM take advantage of vectorized hardware to execute Java methods directly on a GPU, while maintaining memory model correctness and Java’s syntax.

Project Panama – While Projects Valhalla and Sumatra are largely internal renovations, Project Panama will improve Java’s compatibility with native C and C++ programs by allowing the JVM to call functions and access native data structures, seamlessly. Check out these examples from the JNR project and read the draft for JEP 191: Foreign Function Interface to get a better idea how this might work.

The future of Java on Windows XP – While automatic updates should carry on, official support for Java on Windows XP has ended. Although Oracle remains committed to delivering security updates through April 2015, Windows XP users are strongly encouraged to upgrade their operating system for uninterrupted support.

JDK 9 Build b25 – Early releases of JDK9 have focused on bug fixes and minor enhancements. Build 25 features include support for running bootstrap tools in IntelliJ IDEA and additional formatting options for Java’s Long and Integer classes.

Here are eight Java 8 resources for everyone from newcomers to experts.

  1. Lambda Expressions
  2. Java 8 Stream Tutorial
  3. Lambdas and Streams in Java 8
  4. Simplifying Java 8 with Lambdas – O’Reilly Webcast
  5. Optional: Java 8’s way to deal with null
  6. Finite sequence generators in Java 8
  7. Introduction to writing custom collectors in Java 8
  8. Java 8 and Embedded JavaFX

JVM

Akka 5 Year Anniversary – This July, Akka celebrates five years of rapid growth, from a tiny concurrency library on the JVM to the integral role it plays in Scala today. Take a look back at a few milestones in Scala’s history and help us congratulate the Akka team on their success with five great articles for building reactive applications using Akka.

  1. Reactive Programming with Akka
  2. An Actor-based User Similarity Recommender
  3. Advanced Reactive Programming with Akka and Scala
  4. Making the Reactive Queue durable with Akka Persistence
  5. Building scalable and highly available reactive applications with Akka!

Scala: Next Steps – The announcement that Scala 2.12 will only support Java 8 opens up a number of simplifying possibilities, but will require a great deal of work to achieve. Scala lays out the path ahead in two upcoming releases, “Aida” which will focus on standard library improvements, and “Don Giovanni” a language and compiler refresh.

JVM concurrency: To block, or not to block? – Dennis Sosnoski helps us understand the benefits and tradeoffs of using non-blocking event handlers and how we can use Java’s new CompletableFuture to compose and combine events for maximum throughput. Part three in an ongoing series, cf. Java 8 concurrency basics and Java and Scala concurrency basics.

Where Has the Java PermGen Gone? – Monica Beckwith, Java Performance Architect at Servergy takes a look at class metadata storage in JDK8, which has moved from Java’s heap to the native heap, making way for a simpler full-GC and concurrent deallocation.

Android

Learn to Think Like an Android Developer – As a Java developer, learning Android through trial and error can be very rewarding, but also very time consuming. Google and Udacity have teamed up to produce a new Android Fundamentals course by Java developers, for Java developers. If you are looking for an introductory class, Udacity also offers Intro to Java Programming, compliments of San José State University.

Google I/O 2014 App Source Code Now Available – Each year, Google open sources the I/O app to showcase its own design patterns and best practices for the latest Android SDK. This year’s features Material design, Drive integration, Cloud messaging and much more. Check out the source code on GitHub today!

Building Connected Android Apps with Azure – Chris Risner from Microsoft takes us through a simple demo getting up and running on Azure mobile services, a plug-and-play backend service for mobile apps. Minimal configuration required.

Android Dynamic Code Analysis with DroidBox – DroidBox is a sandbox for dynamic analysis of Android applications. Security enthusiast Victor Dorneanu walks through the process of setting up DroidBox to analyze the runtime behavior of a malicious app.

Frameworks

Spring XD 1.0 GA Released – Spring XD offers a unified solution for building business applications at scale, on well-established big data platforms: Hadoop, Spring Batch, Spring Integration, Spring Data, Reactor, and the LMAX Disruptor. The clear-sighted Charles Humble from InfoQ helps us fit all the pieces into a single picture.

Reading and writing CSV files with Spring Batch and MySQL – Spring Batch offers a framework for periodically moving gigabytes of stuff from one data source to another, which as it turns out, is more involved than it might sound. Steve Haines has written an excellent guide for using Spring Batch to read and write large CSV files. Be sure and check out his other articles, including recent ones on Spring Data and Akka.

Spring configuration modularization for Integration Testing – Nicolas Fränkel explains how to break up a Spring configuration into separate fragments for simpler integration testing on the Spring Framework.

Building Web Services with DropWizard – Dropwizard is a lightweight Java framework that trades the versatility of enterprise application frameworks such as Play, Spring and JavaEE for a small, stable set of tools and libraries built to support service oriented architectures and facilitate more ops-friendly development. Camille Fournier gives us a glimpse into operations at e-commerce site Rent the Runway and shares a few insights gained while migrating to Dropwizard.

Why Build Your Java Projects with Gradle? – Benjamin Muschko, principle engineer at Gradleware, makes a case for why Gradle is the next step in Java build automation.

Open Source

Apache Log4j 2 – Apache has released Log4j v2, a brand new implementation of their popular logging framework. Log4j was completely rebuilt to incorporate lessons learned from the LMAX Disruptor, an influential messaging library within the HPC community. Log4j v2 benefits from those insights, offering increased throughput, lower latency and making it one of the fastest logging frameworks around.

Apache TEZ – Tez is a distributed execution framework for YARN applications on petabyte-scale datasets, backed by HortonWorks, Yahoo, and others. This month, Tez graduated from the Apache incubator and is now a top level project at Apache.

Jinq: Easy Database Queries for Java 8 – If you have ever worked with C#, you are probably familiar with LINQ, a language extension that adds fluent data querying capabilities to .NET languages. Jinq brings LINQ’s long-awaited functional style to Java, with integration for jOOQ and several object relational mappers. Don’t miss author Dr. Ming-Yee Iu’s presentation, How Java 8 Will Change the Way We Work with Databases.

OptaPlanner – A constraint satisfaction engine attempts to allocate some shared resource under a fixed set of constraints – for instance in job scheduling, map coloring and exam timetabling, which are difficult to brute force. OptaPlanner 6.1, an open source constraint satisfaction engine offers performance speedups for large datasets, new heuristics and a public API.

flabmo – Are you a fan of Apache Spark, but not necessarily Scala or Java? Flambo, a new Clojure DSL for Spark, might be right for you! Check out how you can use flambo to write a data mining metric to determine keyword saliency, TF-IDF, on Spark.

Oink – Oink is a tool developed at eBay for managing Pig requests through a REST interface, effectively allowing you to run Pig as a self-service data analysis platform.

Oryx 2 – Cloudera prepares the second release of Oryx, a machine learning platform that specializes in classification and recommendations on Hadoop. Oryx is part of a growing number of open source machine learning (ML) platforms including Mahout, Spark MLlib, H20, and mortar-recsys that offer soup-to-nuts alternatives to MLaaS.

Tephra – Continuuity, a big data startup releases an open source transaction engine for Apache HBase. Tephra delivers transactional consistency across regions, tables, and remote procedure calls, abstracting some of the complexity of data access in HBase.

Performance

Java Memory Model Pragmatics – Aleksey Shipilёv dives into the Java memory model, exploring the promises and realities of access atomicity, word tearing, sequential consistency, and out-of-thin-air values in the JMM.

Scalable Collaborative Filtering with Spark MLlib – Collaborative filtering is a type of recommender system that has received enormous interest from the online advertising and retail communities, given its cross-selling potential and ease of implementation. DataBricks offers a simple demonstration of how you can use Spark MLib to train a simple collaborative filtering algorithm on billions of records with Amazon EC2.

Comparing Java HTTP Servers’ Latencies – Zhong Yu, author of the Bayou HTTP server for Java 8, benchmarks the performance of several HTTP servers running simple HelloWorld applications.

Parallel-lazy Performance: Java 8 vs Scala vs GS Collections – Craig Motlin, technical lead for GS Collections, analyzes the performance of collections across three libraries and explains several common bottlenecks when writing high performance collections.

Community

Hadoop Summit Presentations – Hortonworks has uploaded over a hundred talks from Hadoop Summit 2014 on topics from Deep Learning on Hadoop to Railroad Modeling, to Chef Deployments, to Summingbird, to Similarity at Scale and more.

Apache Spark Developer Training – Diana Carroll shares her experience with Apache Spark in a new training course from Cloudera University filled with examples, best practices and exercises designed to help you get up to speed with cluster computing.

Build Advanced Time-Series Pipelines in Apache Crunch – Mirko Kämpf at Cloudera teaches us how to create dataflow pipelines for time series analysis, control sampling rates, and convert time series data between multiple formats using Apache Crunch.

Why I distrust wildcards and why we need them anyway – Gavin King, lead developer at Ceylon and creator of the Hibernate ORM, raises some issues with Java’s generics and discusses why Ceylon avoided wildcards for so long, cf. Brian Goetz’s State of the Specialization.

Avoiding Null Checks In Java – If you’re already on Java 8, NPEs may be a thing of the past. If not, this guide from Papapetrou Patroklos can help you avoid writing null checks before every dot operator, method invocation and return statement. IntelliJ’s contract annotations can often help alleviate this problem.

How JDK 8 standardizes and augments to Guava library functionalities – Bhakti Mehta, Glassfish Engineer and author describes the analogs between Java 8 and Guava, also helpful for migrating legacy Guava code to the canonical Java 8.

RxJava + Java8 + Java EE 7 + Arquillian = Bliss – Alex Soto explains how to configure RxJava to bootstrap a RESTful microservice and run integration tests with Arquillian.

JUnit Rules and Spock – Andre Steingress describes the process of testing a file upload routine with Spock and illustrates a neat application of JUnit’s Rules feature to simplify setup and tear down during a Spock test.


This entry was posted in News & Events and tagged , , , , , , , , , , , , , , , , , , , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">