Могу ли я использовать Java 8 с Android Development сейчас?

В настоящее время у меня установлен Java 7 JDK. Это было похоже на некоторое время. Однако недавно мой преподаватель поручил классу удалить Java JDK 7 и установить Java JDK 8 вместо того, чтобы работать над домашним заданием и т.д.

Я использую Java JDK 7 для написания и развертывания приложений Android без каких-либо проблем, поэтому мне интересно, можно ли сделать обновление JDK 8? Я предполагаю, что мне не понадобятся какие-либо специальные методы или функции Java 8 в моей разработке Android. Так что, если я буду в стороне от этого, будет ли затронута моя Android-разработка?

С одной стороны, я не смог найти официальную документацию, в которой говорится, безопасна ли Java JDK 8 или нет или как сделать ее безопасной. В любом случае, мне скоро придется перейти на Java 8...

Ответ 1

Если вы используете Java 7 для развертывания приложений для Android, то наверняка до сих пор вы не использовали никаких функций Java 8, поэтому я не вижу, как это важно.

Следуйте инструкциям инструктора, и когда вы выполняете задание для школы, просто выберите либо JDK, либо уровень языка в структуре проекта.

CTRL + ALT + S, выберите Project

Вы можете по умолчанию использовать Java 8 SDK, но ограничьте его функциями Java 7 для своих приложений Android. Или вы можете просто настроить свои домашние проекты на SDK Java 8.

Выйдя на конечность, предполагая, что Android Studio включает основные настройки Intellij.

Ответ 2

В Google I/O 2016 они объявили, что Android теперь поддерживает некоторые функции Java 8, но не все функции.

Особенности, такие как

  • Способы по умолчанию и статические интерфейсы
  • Лямбда-выражения (также доступны на уровне API 23 и ниже)
  • Повторяющиеся аннотации
  • Ссылки на методы (также доступны на уровне API 23 и ниже)
  • Типовые аннотации (также доступны на уровне API 23 и ниже)

Кроме того, доступны следующие API-интерфейсы Java 8:

  • Отражения и связанные с языком API
    • java.lang.FunctionalInterface
    • java.lang.annotation.Repeatable
    • java.lang.reflect.Method.isDefault()
    • и Reflection API, связанные с повторяемыми аннотациями, такими как AnnotatedElement.getAnnotationsByType(Class)
  • Полезные API
    • java.util.function
    • java.util.stream

Все, что вам нужно сделать, это использовать новый компилятор jack, для этого вам нужно просто добавить это в свой gradle файл build.gradle (Module: app):

android {
  ...
  defaultConfig {
    ...
    jackOptions {
      enabled true
    }
  }
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

Литература:

Ответ 3

Это безопасно, если вы не используете функции java 8.

хотя вы можете быть заинтересованы в java 8 с ретро-альбомом и коллекциямиQuery. https://github.com/evant/gradle-retrolambda и https://bitbucket.org/mart_bogdan/collectionsquery/src

Это позволит вам написать свой код примерно так: -

mButton.setOnClickListener( v-> doClickEvent()); 

mView.postDelayed( () -> someMethodToRun() , 1000);

Queryable.from(listOfObject).forEachR(r -> doProcess(r));

в отличие от неуклюжего

mButton.setOnClickListener( new View.OnClickListener(){
     @Override
      public void onClick(View v) {
         doClickEvent();
      }
});

использовать java 8 с retrolambda, просто добавьте в файл gradle.

apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda'

android {

    // :
    // Snips the rest of configuration.
    // :
    compileOptions {
        encoding "UTF-8"
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {

    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'  

    compile 'com.android.support:appcompat-v7:23.1.1' 

    compile 'com.innahema:collections-query:0.2.9'
}

и в файле проекта gradle.build добавьте следующее...

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.5.0'

        classpath 'me.tatarka:gradle-retrolambda:3.2.3'
        classpath 'me.tatarka.retrolambda.projectlombok:lombok.ast:0.2.3.a2' //fix lint issue

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

Ответ 4

Я думаю, вы должны просто попробовать. На боковой ноте: вы можете легко запускать JDK 7 и JDK 8 бок о бок. Я не знаю об Android Studio, но в Eclipse вы можете настроить путь сборки.

Несмотря на это: используете ли вы специальные возможности Java 8 для своей домашней работы? Если вы не используете lambdas или JavaFX 8, я не думаю, что вам понадобится JDK 8. Звучит скорее как ваш профессор просто хочет использовать последнюю версию Java (судя по вашему первому предложению).