Могу ли я использовать 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 (судя по вашему первому предложению).