Watch Out For OpenJDK Differences on Android N

Android N is shipping with its java.* and javax.* classes derived from the OpenJDK, rather than from Apache Harmony. Many of the Harmony classes were modified in Android since Android 1.0, and the JDK itself has gone through a couple of major releases. So, while there are large test batteries designed to confirm that everything is compatible, some changes in behavior are likely to slip through the cracks.

For example, eagle-eyed developers have noted that java.io.File path normalization has changed and that java.text.DecimalFormat has changed. I have reproduced both of their test results and can confirm the differences.

It is entirely possible that these will be altered to be compatible with past versions of Android before Android N ships in final form. It is theoretically possible that these are the only two such differences, but that seems unlikely.

Hence, more so than with past developer previews, it is key for you to be testing your code early and thoroughly, to see whether you trip over similar sorts of JDK class differences. At minimum, you will have time to find a workaround. Even better, file an issue, and see if the incompatibilities can get fixed.

Want an expert opinion on your Android app architecture decisions? Perhaps Mark Murphy can help!

— Mar 25, 2016