Java Annotated Monthly – March 2015
As programmers, we try our best to avoid repetition. Repetition comes in different shapes and sizes – in methods, classes and projects, but in many ways repetition is unavoidable. IDEs may help detect repetition and improve productivity, but sometimes the best sources of productivity are outside our localhost. On the Java Annotated Monthly, you can find news and articles that speak less, but say more – so you can write less, and do more.
JDK 8u40 Released – The release of Java 8 one year ago has seen widespread adoption and nearly a dozen public revisions and updates. This one introduces several features, including tools enhancements, accessibility support for JavaFX, runtime support for Java Flight Recorder and scalability improvements for the Hotspot VM. Check out the release notes for a complete list of changes.
JavaOne 2014 Sessions – The full JavaOne lineup is now available, with talks from dozens of excellent speakers. Don’t miss HTML5/AngularJS/Groovy/Java and MongoDB Together: What Could Possibly Go Wrong? with Trisha Gee IntelliJ IDEA: 42 Tips and Tricks with Hadi Hariri, Java EE 8 with Linda DeMichiel and Brewing Your Very Own IDE: A How-To Guide with Konstantin Bulenkov.
Silver – A new language toolchain for Java and Android (and .NET CLR), Silver is a Swift language front-end for the Elements compiler. Like JRuby and ClojureCLR, Silver allows you to write Swift for Java, Android and Windows, but unlike J2ObjC and JUniversal, is specifically not intended for cross-platform applications. Silver comes with tooling support for Visual Studio and Fire.
Clojure. Transducers, Reducers and Other Stuff – Transducers are a functional pattern that have emerged from the Clojure community, now available in a number of programming languages including Java. For additional background and examples, watch Clojure Made Simple and Transducers by Rich Hickey, and for more information, check out Inside Transducers.
Espresso 2.0 – Espresso is a UI test runner that sits on top of Android’s instrumentation framework and simulates user input, making it easy to write end-to-end UI tests. Espresso 2.0 introduces new actions and matchers, and support for Junit4. To learn about how you can get up and running with Espresso, check out this tutorial and head over to the the documentation.
Understanding the Android bytecode – If you have ever disassembled an APK, you may already be familiar with the joys of reading Smali bytecode. If not, Mario Kosmiskas will give you a glimpse into this very subject, should you have any enthusiasm about carrying out such plans. And if you remain undeterred, there are more convincing details in this (slightly dated) presentation.
Fragmented, a podcast for Android developers – One of the great features of the human brain is a neat thing called procedural memory, a kind of autopilot for fine motor skills like chopping vegetables while planning dinner – or riding a bike and enjoying the Fragmented podcast. The Fragmented podcast is hosted by Donn Felker and Kaushik Gopal. You should check it out!
gRPC – A collaboration between Google, Square and others, gRPC offers a general purpose RPC framework for HTTP/2. Like Protocol Buffers (recently turning 3.0), gRPC aims to be a one stop solution for network IPC. For more information, check out the tutorial and try building the full source on GitHub. For questions, you can join the mailing list on Google Groups.
Steltho – A new debugging tool for Android, Steltho uses the Chrome Developer Tools console to deliver network statistics and allows developers to inspect a running SQLite database directly in the Chrome browser. Steltho also includes an interactive dumpapp utility for the command line. Still an early release, it offers a number of compelling features – so give it a try today!
Proving that Android’s, Java’s and Python’s sorting algorithm is broken – The first of its kind, this result is both an important development for the Java community and a proof of concept for the feasibility of formal verification and automated theorem proving. Perhaps more importantly, the tool used to detect and identify this bug is completely open source and available to try yourself.
The Black Magic of Java Method Dispatch – In this article, Aleksey Shipilёv benchmarks polymorphic method call performance in a number of different type configurations (static, interface, subtype), method selection strategies (if/else, switch, virtual call), and VM modes, generating a prolific number of benchmarking cases and some interesting analysis.
What is Functional Reactive Programming? – Reactive, a style of programming with early roots in functional programming and later re-popularized through libraries like Reactive Extensions and the Rx* family, enjoys widespread use in a number of settings today. Reactive programming encourages us to think in terms of streaming data transformations, rather than maintaining an explicit state.
Replace AsyncTask and AsyncTaskLoader with rx.Observable – One place where reactive programming has found particular success is in Android development. Android makes heavy use of lifecycle callbacks and AsyncTask, which are especially well-suited for the Observer pattern in RxJava. For more information about using RxJava with Android, head to the docs.
Translating math into code with examples in Java, Racket, Haskell and Python – While Java may not be your first choice for implementing mathematical code (cf. BigInteger’s API), should you need to use Java, this article has plenty of advice for implementing mathematical stuff like sets, sequences, vectors, tuples and relations in some of your favorite languages.