我目前安装了Java 7 JDK。它已经有一段时间了。但是,最近,我的教授指示该类卸载Java JDK 7并安装Java JDK 8,以便能够完成家庭作业等。
我一直在使用Java JDK 7编写和部署Android应用程序而没有任何问题,所以我想知道现在升级JDK 8是否安全?我假设我在Android开发中不需要任何Java 8特定的方法或功能。因此,如果我远离那个,我的Android开发是否会受到影响?
在旁注中,我还没有找到任何官方文档来说明Java JDK 8是否安全或如何使其安全。无论哪种方式,我都将很快升级到Java 8 ......
答案 0 :(得分:15)
在Google I / O 2016中,他们宣布Android现在支持Java 8的某些功能,但不支持所有功能。
等功能
此外,还提供以下Java 8语言API:
java.lang.FunctionalInterface
java.lang.annotation.Repeatable
java.lang.reflect.Method.isDefault()
AnnotatedElement.getAnnotationsByType(Class)
java.util.function
java.util.stream
您应该做的就是使用新的插孔编译器,为此您只需将其添加到您的gradle文件build.gradle (Module: app)
:
android {
...
defaultConfig {
...
jackOptions {
enabled true
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
<强>参考文献:强>
答案 1 :(得分:3)
如果您一直在使用Java 7来部署Android应用,那么可以肯定的是,到目前为止,您还没有使用任何Java 8功能,所以我不知道如何这很重要。
按照教师的指示进行学校作业,只需在项目结构中选择JDK或语言水平。
CTRL + ALT + S ,选择Project
您可以默认使用Java 8 SDK,但将其限制为适用于Android应用的Java 7的功能。或者您可以简单地将作业项目设置为Java 8 SDK。
假设Android Studio包含Intellij的核心设置,可以在这里走出去。
答案 2 :(得分:3)
如果您不使用java 8功能,这是安全的。
尽管你可能对使用retroLambda和collectionsQuery的java 8感兴趣。 https://github.com/evant/gradle-retrolambda和 https://bitbucket.org/mart_bogdan/collectionsquery/src
这将允许您将代码编写为以下内容: -
[INFO] 2016-01-14T01:57:06+0000 Parent: Forking Child No.1 whose pid is 40.
[INFO] 2016-01-14T01:57:06+0000 Parent: Forking Child No.2 whose pid is 43.
[INFO] 2016-01-14T01:57:06+0000 Child No.1: Waiting 1s.
[INFO] 2016-01-14T01:57:06+0000 Parent: Forking Child No.3 whose pid is 44.
[INFO] 2016-01-14T01:57:06+0000 Parent: Forking Child No.4 whose pid is 45.
[INFO] 2016-01-14T01:57:06+0000 Child No.2: Waiting 4s.
[INFO] 2016-01-14T01:57:06+0000 Child No.3: Waiting 3s.
[INFO] 2016-01-14T01:57:06+0000 Parent: Forking Child No.5 whose pid is 47.
[INFO] 2016-01-14T01:57:06+0000 Child No.4: Waiting 5s.
[INFO] 2016-01-14T01:57:06+0000 Child No.5: Waiting 2s.
[INFO] 2016-01-14T01:57:07+0000 Parent: Child No.1 completed.
[INFO] 2016-01-14T01:57:08+0000 Parent: Child No.5 completed.
[INFO] 2016-01-14T01:57:09+0000 Parent: Child No.3 completed.
[INFO] 2016-01-14T01:57:10+0000 Parent: Child No.2 completed.
[INFO] 2016-01-14T01:57:11+0000 Parent: Child No.4 completed.
[INFO] 2016-01-14T01:57:11+0000 Parent: All done.
而不是笨重的
<div class="histlog col-md-12">
<div class="table-responsive">
<table class="table table-striped">
<thead>
<tr>
<th class="hist1">One</th>
<th class="hist2">Two</th>
<th class="hist3">Three</th>
<th class="hist4">Four</th>
<th class="hist5">Five</th>
<th class="hist6">Siz</th>
<th class="hist7">Seven</th>
<th> </th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
</tr>
</tbody>
</table>
</div>
使用带有retrolambda的java 8只需添加到gradle文件中。
mButton.setOnClickListener( v-> doClickEvent());
mView.postDelayed( () -> someMethodToRun() , 1000);
Queryable.from(listOfObject).forEachR(r -> doProcess(r));
并在项目gradle.build文件中添加以下内容......
mButton.setOnClickListener( new View.OnClickListener(){
@Override
public void onClick(View v) {
doClickEvent();
}
});
答案 3 :(得分:2)
我想你应该试一试。另请注意:您可以轻松地并行运行JDK 7和JDK 8。我不了解Android Studio,但在Eclipse中您可以配置构建路径。
尽管如此:您是否在为家庭作业使用Java 8特定功能?如果你不使用lambdas或JavaFX 8,我认为你将需要 JDK 8.听起来更像是你的教授只想使用最新版本的Java(从你的第一句话。)