I think we should target three platforms: Java, Google App Engine (the
Java-ish environment of it), and Android. What the minimum required
versions should be?
For Android, my guess is API level 10 (Gingerbread, 2.3.3). Google
shows an 1% market share globally (though I'm sure it's higher in some
less rich countries). This is also the lowest supported version that
Google shows in his statistic at all.
(https://developer.android.com/about/dashboards/index.html) The next
logical possibility is API level 15 (Ice Cream Sandwich, 4.0.3), with
which we still cover 99% of the devices (according to Google at least)
but looking at the differences to Gingerbread, I suspect we won't
benefit from it much in the case of FreeMarker. But maybe I'm wrong. I
have no Android experience.
The supported Java platform version can be Java 7 at most, because we
want to have common source code with the Android version as far as
possible, and Java 8 is only supported starting from API level 24
(Nougat, 7.0.0). Also, because of the limitations of Android, we won't
have a full Java 7:
- try-with-resources can't be used, because we don't have
java.lang.AutoCloseable on Android (until 4.4 KitKat - far too fresh).
- Invoke Dynamic is not supported on Android (nowhere, AFAIK)
As of Google App Engine, it's very similar to Java, so simply the
release for Java should run on it too. You have to watch out for a few
things though, as we have learnt during 2.3.x, and I'm not sure who
will do the tests this time.