Java Annotated Monthly – October 2014

Posted on by

This month, we had the chance to meet thousands of you at the 19th annual JavaOne conference in San Francisco, and learn how developers from around the world are helping build a better Java ecosystem. Today is a tremendously exciting time to be a Java developer, and we can’t wait to see you next Fall for twenty years of Java. Get ready.

Java

JavaOne Keynote – There are dozens of great talks already emerging from JavaOne, but if you miss any of them, don’t miss the JavaOne Technical Keynote. Mark Reinhold, Brian Goetz, John Rose, and James Gosling help set the stage for nearly two decades of Java innovation, with guests from Oracle, Intel, Silicon Valley Robotics and more.

Java ME 8 + Raspberry Pi + Sensors = IoT World (Part 1) – One recurring theme at JavaOne this year has been the Internet of Things (IoT). From accelerometers in the Amazon rainforest to DIY security systems in your home, IoT is everywhere. Jose Cruz has compiled an introduction to I/O programming with sensors on the Raspberry Pi.

Java CPU and PSU Releases – Ordinarily, you might think a CPU requires a PSU, but thanks to acronym overloading in Java, the opposite is true. A Critical Patch Update includes security patches and critical bug fixes, while a Patch Set Update includes CPU fixes and an optional, non-critical set of updates. A new CPU advisory is now available.

What every Java developer needs to know about Java 9 – Java 9 is scheduled for Q1 2016 and among the list of features planned include a new HTTP Client and JSON API. Early adopters can download a copy of JDK 9 today with some of these features, although a great deal of work remains to be done. Ben Evans has the details.

A REPL for Java – Project Kulla proposes to add a Read Eval Print Loop to the JDK, traditionally found in scripting languages and interactive programming environments. For a good idea how this might work, check out the Java REPL plugin for IntelliJ IDEA.

JVM

A Peek Under the Hood of Java 8 Lambdas – Java 8 lambdas have seen strong adoption in the community, thanks to the efforts of Simon Ritter, Venkat Subramaniam, Richard Warburton, and others who have worked tirelessly to help spread the good news. If you’re curious how they work under the hood, Richard, Raoul Urma and Mario Fusco investigate how lambdas use the invokedynamic instruction.

Taking advantage of TCP Loopback fast path in Windows – There have been a few notable announcements from Microsoft’s newly founded open source division this month, including dedicated Docker containers on Windows, an OpenJDK build for Windows Azure, and Cordova support. Keep an eye on Open Tech’s blog for the latest developments.

Weld 3.0.0.Alpha1 released – Weld is the official reference implementation for CDI 2.0, due to arrive in a JDK near you in 2016. Contexts and Dependency Injection is Java’s standard for dependency injection and aspect oriented programming, offering a more dynamic alternative to statically wired frameworks like Spring DI.

Mobile

DroidCon Paris Talks – DroidCon Paris has uploaded some great talks in both English and French, including a Deep Dive Into State Restoration with Cyril Mottier at Captaine Train, Scaling Android Development at Twitter from Jan Chong at Twitter, and Kick-start your experience with Android Wear by Mario Viviani.

Advocating Against Android Fragments – While Fragments offer some nice benefits for improving UI responsiveness, not everyone is convinced they are the best tool for the job, including Pierre-Yves Ricau at Square. One of the benefits of Android is that it is more like a toolbox rather than a multitool, so Fragments are completely optional.

Meteor 0.9.4 Released – Meteor is an open source web framework for developing cross-platforms mobile applications in JavaScript, from a single codebase. WebStorm 9 recently introduced support for Meteor, which you try on WebStorm 9 EAP today.

Open Source

chromeos-apk – By far, one of the biggest open source releases this month has been the launch of chromeos-apk, which provides fast and reliable device emulation, something which Android dev tools have struggled with. chromeos-apk runs inside Chrome, and while some native apps are not supported, it works surprisingly well.

Realm for Android – Realm is a no-nonsense NoSQL datastore that supports encryption, fast queries and migrations. Realm joins the company of Couchbase-Lite, JasDB, SimpleNoSQL, SnappyDB and waspdb. Check out a few examples on GitHub.

Functional Java – One objection from function programming enthusiasts is that Java 8 does not offer enough FP abstractions. Others might argue these features are unecessary, since Java provides the language features for others to go the last mile. Functional Java is an effort to do just that, by bringing common FP abstractions to Java 8.

Xtend language plugin for IntelliJ IDEA – The Xtend plugin for IntelliJ IDEA is a port of the highly received Xtend language framework. This will be followed by more extensive support for Xtext, a popular framework for designing programming languages. Download JFlex Support and Grammar-Kit, then and try it out today!

Performance

Java, POWER Systems and NVIDIA GPUs – There has been a lot of collective effort to bring GPUs and Java more closely together, with limited degrees of success. Now, with new enterprise partnerships between Oracle/AMD on Project Sumatra, and IBM/NVIDIA on the POWER8 platform, Java is about to get a lot faster on GPUs.

SQLite 50% faster than 3.7.17 – SQLite 3.8.7 alpha announces 50% year-over-year speed gains with 100% branch test coverage, which as it turns out, is almost unheard of in codebases of that size. However, when you consider nearly every mobile device in the world currently runs SQLite, this is somewhat less surprising, but no less impressive.

csv-parsers-comparison – If you have ever needed to use a CSV parser to move a few gigabytes of data around in Java, you may just still be waiting for the job to finish. Luckily, if you are planning to undertake another migration of this size, you might consider referring to this helpful parsing comparison, instead of writing your own.

Spark the fastest open source engine for sorting a petabyte – Apache Spark, the darling of big data analytics and cluster computing framework has sorted 100 Terabytes of 10 byte keys on 190 AWS i2.8xlarge instances in just under four hours on Jim Gray’s sort benchmark, smashing the previous record holder by ~2.85TB/minute.

Community

JavaZone 2014 Talks – JavaZone is the largest annual IT conference in Norway, organized by the javaBin usergroup, featuring developers from around the world. All the content is fully recorded and freely available to watch, with talks in English and Norwegian. Don’t miss our very own Hadi Hariri and Svetlana Isakova.

Strange Loop 2014 Talks – This conference has some outstanding talks from a number of languages, but if you’re just interested in Java, don’t miss Christine Flood’s Shenandoah: An open source pauseless GC for OpenJDK, Jessica Kerr’s Concurrency Options on the JVM, Cliff Moon’s Designing For Performance on the JVM and Attila Szegedi’s Nashorn: implementing a dynamic language runtime on JVM.

excepterror – If you find yourself frequently grepping through source code for stack traces and do not have access to an IDE, you can use this tool to help identify exceptions in many open source libraries, without needing to download a copy of the source itself.

Java Optimizations and the JMM – Sanjoy Das takes a rigorous look at memory model reordering on the JMM, with some reassuring derivations and further open questions.

When the Java 8 Streams API is not Enough – Lukas Eder was not quite satisfied with Java’s new Streams API, so he implemented his own Stream extension that includes many more functional primitives typically found in languages like Scala.

Do it in Java 8: The State Monad – This is part three of an excellent series on functional programming by Pierre-yves Saumont. It it, Pierre explores how you can use functional primitives in Java 8 to help build higher order functional constructs, like a state-preserving monad. See Recursive Fibonacci and The State Monad for the groundwork.