Ответы пользователя по тегу Java
  • Java как язык: есть ли отличия между разработкой для Android и Java SE/EE (февраль 2015)?

    Semisonic
    @Semisonic Автор вопроса
    Разработчик, выдумщик, неравнодушный человек
    Вдохновившись предыдущими ответами и заметив некоторые несостыковки мнений у их авторов, отправился на собственные поиски. И вот что мне удалось найти.

    Is it possible to use Java 8 for Android development? - вопрос на StackOverflow, датированный апрелем 2014 года. Общая идея ответов следующая:
    • Java от Oracle и язык разработки для Android - де-юре никак не связанные друг с другом вещи. Причина - опять же юридическая, связанная с вопросами лицензирования Java для стороннего использования.
      Как следствие, язык и фреймворк для разработки под Android базируются на проекте Apache Harmony, опенсорсной реализации Java SE, причём на той его ветке, которая реализовывала Java 6.
    • Фичи канонической Java от Oracle появляются в языке разработки для Android спорадически и исключительно по желанию Google, то есть никак не связаны с версионностью Java от Oracle. Де-факто, при работе с Android KitKat и выше можно использовать большинство (хотя, я так понял, не все - к примеру, try-with-resources в пролёте) фишек Java 7.
    • Существующие способы использования новых фишек канонической Java при разработке под Android базируются на различных хитростях процедуры сборки. Например, для поддержки лямбд предлагается использовать нечто под названием gradle-retrolambda, что конвертирует байткод, получающийся при компиляции Java 8 кода, в байткод Java 6/7, после чего этот байткод конвертируется в формат JVM, используемой в Android. Судя по всему, иных фич Java 8, отличных от лямбд, данный метод не поддерживает.
      Иной подход для использования новых возможностей Java при разработке под Android - это альтернативные языки, в частности, Kotlin (gadfi, спасибо за наводку ;)) - продукт компании JetBrains, на базе чьей IDEA нынче строится официальный инструментарий для разработки под Android.


    Также интересные соображения на этот счёт можно почерпнуть в другом вопросе на StackOverflow - “Why Apache Harmony” or “How to use Java 8 on Android”
    Ответ написан
    Комментировать