当前位置: 首页 > 知识库问答 >
问题:

我现在可以在Android开发中“使用”Java 8吗?

商佑运
2023-03-14

我目前已经安装了Java7 JDK。已经有一段时间了。然而,最近,我的教授正在指示全班卸载JavaJDK 7,安装JavaJDK 8,以便能够处理家庭作业等。

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

顺便说一句,我还没有找到任何官方留档来说明JavaJDK 8是否安全或如何使其安全。无论如何,我将不得不很快升级到Java8...

共有3个答案

陈宜修
2023-03-14

如果不使用java 8特性,那么它是安全的。

尽管您可能热衷于java 8 with reportLambda和集合查询。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
    }
}
夏祺然
2023-03-14

如果您一直在使用Java7来部署Android应用程序,那么可以肯定的是,到目前为止,您还没有使用任何Java8功能,所以我看不出这有什么关系。

按照老师的指示,当您为学校做作业时,只需在项目结构中选择JDK或语言级别。

按住CTRL键,选择项目

您可以默认使用Java 8 SDK,但仅限于Android应用程序的Java 7功能。或者,您可以简单地将家庭作业项目设置为Java 8 SDK。

假设Android Studio包含Intellij的核心设置,那么我们就要冒险了。

牧宁
2023-03-14

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

功能如下

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

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

  • 反射和语言相关API
    • <代码>java。lang.FunctionInterface
    • <代码>java。lang.annotation。可重复
    • <代码>java。lang.reflect。方法isDefault()
    • 以及与可重复注释相关联的反射API,如注释删除(AnnotatedElement)。getAnnotationsByType(类)
    • java.util.function
    • java.util.stream

    所有你应该做的是使用新的插孔编译器,要做到这一点,你只需要将它添加到你的gradle文件build.gradle(模块: app)

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

    参考文献:

    • https://developer.android.com/guide/platform/j8-jack.html
    • https://www.youtube.com/watch?v=B08iLAtS3AQ

 类似资料:
  • 我目前安装了Java7 JDK。这样已经有一段时间了。然而,最近,我的教授正在指导全班卸载Java JDK7,并安装Java JDK8,以便能够完成家庭作业等。 我一直在使用Java JDK7编写和部署Android应用程序,没有任何问题,所以我想知道现在升级JDK8是否安全?我假设在Android开发中不需要任何Java8特定的方法或函数。所以如果我远离这些,我的Android开发是否会受到影响

  • 问题内容: 我目前安装了Java 7 JDK。已经有一段时间了。但是,最近,我的教授正在指导全班教师卸载Java JDK 7并安装Java JDK 8,以便能够从事家庭作业等。 我一直在使用Java JDK 7编写和部署Android应用程序而没有任何问题,所以我想知道现在升级JDK 8是否安全?我假设我在Android开发中不需要任何Java 8特定的方法或函数。因此,如果我不这样做,我的And

  • 问题内容: 我们可以将其用于 (Android开放源代码项目) 开发吗,有没有办法做到这一点。我没有找到一个。有人对此有任何想法吗? 问题答案: 您可以将Android Studio用作AOSP的IDE,因为它只是InteliJ IDE的修改版本。 从AOSP根目录: 然后只需在Android Studio中“打开项目”,然后选择它生成的android.ipr。

  • 我将使用PWA和React开发一个跨平台的移动应用程序,由于我对这些技术不熟悉,我想知道什么是使其具有响应性的最佳和最简单的方法。 我知道可以使用媒体查询。 https://developers.google.com/web/fundamentals/design-and-ux/responsive/ 但与Bootstrap相比,似乎还有更多的工作要做,但不幸的是,我找不到任何指导我在同一项目中使

  • 我正在为Eclipse3.7.2版本的equinox开发一些插件。不幸的是,我无法升级到最新的equinox平台。所提供的equinox平台在其清单中没有提供“require-capability:osgi.ee;filter=”(&(osgi.ee=javase)(version=1.8))“条目。所以我不能在我的插件中使用”bundle-requiredexecutionEnvironment

  • 请问我是否有可能在Spring Cloud中使用kubernetes而不是Eureka服务器?我问的原因是我们的环境中已经有了库伯内特斯,我知道库伯内特也提供服务发现,所以我不想为了服务发现目的启动尤里卡服务器。如果我能用库伯内取代尤里卡,那就太好了。