Java 8的那些事

简介: 注:Android 支持所有 Java 7 语言功能,以及一部分 Java 8 语言功能(具体因平台版本而异)。

支持 Java 8 语言功能需要一个名为 Jack 的新编译,Jack 仅在 Android Studio 2.1 和更高版本上才受支持。因此,如果要使用 Java 8 语言功能,则需使用 Android Studio 2.1 开发应用。


Android支持的 Java 8 语言功能


以下是在开发面向 Android 7.0(API 级别 24)的应用时可用的一些功能:


  • 接口中的默认和静态方法
  • Lambda 表达式
  • 重复注解
  • 方法引用
  • 类型注解(注:类型注解信息仅在编译时可用,而在运行时不可用)


如果要在 Android 的较早版本中测试 Lambda 表达式、方法引用和类型注解,需要将 build.gradle 文件中的 compileSdkVersion 和 targetSdkVersion 设置为 23 或更低。不过仍需要启用 Jack 工具链以使用这些 Java 8 功能。


启用 Java 8 功能和 Jack 工具链


要使用新的 Java 8 语言功能,还需使用新的 Jack 工具链。新的工具链将 Java 源语言编译成 Android 可读取的 Dalvik 可执行文件字节码,且中间有其自己的 .jack 库格式,而且提供了大多数工具链的功能:重新打包、压缩、模糊化以及 Dalvik 可执行文件分包。


以下是构建 Android Dalvik 可执行文件可用的两种工具链的对比:


  • 旧版 javac 工具链:

      javac (.java → .class) → dx (.class → .dex)

  • 新版 Jack 工具链:

      Jack (.java → .jack → .dex)


配置 Gradle


要为你的项目启用 Java 8 语言功能和 Jack,请在模块级别的 build.gradle 文件中输入以下内容:


android{
  ...
  defaultConfig{
    ...
    jackOptions{
      enabled true
    }
   }
  compileoptions{
    sourceCompatibility JavaVersion.VERSION _1_ 8
    targetCompatibility JavaVersion.VERSION _1_ 8
  }
}


已知问题


Instant Run 目前不能用于 Jack,在使用新的工具链时将被停用。 由于 Jack 在编译应用时不生成中间类文件,依赖这些文件的工具目前不能用于 Jack。下面是一些工具示例:


  • 对类文件进行操作的 Lint 检测工具
  • 需要应用类文件的工具和库(例如使用 JaCoCo 进行仪器测试中)
相关文章
|
2月前
|
Java 开发者
Java“NoSuchElementException”问题解决
“NoSuchElementException”是Java编程中常见的异常之一,通常发生在尝试从集合或迭代器中获取不存在的元素时。本文将介绍该异常的原因、常见场景及解决方法,帮助开发者有效应对这一问题。
205 5
|
人工智能 前端开发 Java
Java真过饱和了吗?现在学Java迟了?
Java真过饱和了吗?现在学Java迟了?
121 0
|
6月前
|
Java 物联网 大数据
day1:认识Java
【7月更文挑战第1天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
53 7
|
8月前
|
算法 Java 开发者
Java:求正整数分解为质因数Java
Java:求正整数分解为质因数Java
|
8月前
|
Java 程序员 C++
【Java】Java与C++:比较与对比
【Java】Java与C++:比较与对比
132 0
|
存储 Java PHP
【零基础学Java】—初识Java(一)
【零基础学Java】—初识Java(一)
|
Java 编译器
【JAVA】初识Java
一些IDEA 里面的快捷键 JAVA开发环境 操作IDEA的动作分解 以类(class)为基本单位进行组织 数据(data) 基本数据类型 变量 字面量
142 0
|
SQL 负载均衡 Oracle
[一起学Java]
一、批量添加品牌信息到数据表 一、业务实现类实现
172 0
|
Cloud Native Oracle Java
一篇文章和你从 Java1 聊到 Java18
002-2022 年的 20 年里 Java 始终保持在前三的水平,其中在 2005 年、2013-2015 年间、2021 年等时间还多次登顶过第一,这么一个已经发布了 27 年的语言在这些年是怎么始终保持在编程语言前三的呢?这么多年 Java 各个版本间又有什么变化?Java 语言在未来还会继续保持成为语言的常青树吗?这篇文章就来和大家回顾一下 Java 的历史。
300 0
一篇文章和你从 Java1 聊到 Java18

热门文章

最新文章