我可以使用" Java 8与Android开发现在?

时间:2016-01-14 02:12:52

标签: java android java-8

我目前安装了Java 7 JDK。它已经有一段时间了。但是,最近,我的教授指示该类卸载Java JDK 7并安装Java JDK 8,以便能够完成家庭作业等。

我一直在使用Java JDK 7编写和部署Android应用程序而没有任何问题,所以我想知道现在升级JDK 8是否安全?我假设我在Android开发中不需要任何Java 8特定的方法或功能。因此,如果我远离那个,我的Android开发是否会受到影响?

在旁注中,我还没有找到任何官方文档来说明Java JDK 8是否安全或如何使其安全。无论哪种方式,我都将很快升级到Java 8 ......

4 个答案:

答案 0 :(得分:15)

在Google I / O 2016中,他们宣布Android现在支持Java 8的某些功能,但不支持所有功能。

等功能
  • 默认和静态接口方法
  • Lambda表达式(也可在API级别23及更低版本上使用)
  • 可重复注释
  • 方法参考(也可在API级别23及更低版本上获得)
  • 类型注释(也可在API级别23及更低版本上使用)

此外,还提供以下Java 8语言API:

  • 反思和与语言相关的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

您应该做的就是使用新的插孔编译器,为此您只需将其添加到您的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-retrolambdahttps://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>&nbsp;</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(从你的第一句话。)