Android开发者JDK8的学习结果

1、 先说说背景吧,辞职了半年,又回来了....。由于我的代码写的比较烂,新来的同事将项目重构了:lambda+rxjava等。于是好吧我也不能落后,得向他学习,就用一周时间学习了jdk8新特性和rxjava,最后发现学多了。
  • Java 8 新特性:http://www.runoob.com/java/java8-new-features.html

  • Rxjava:http://www.runoob.com/java/java8-new-features.html

2、先简要列一下JDK8的新特
  • Lambda
  • 方法引用
  • 默认方法
  • Stream API
  • Date Time API
  • Optional
  • Nashorn
3、简要列一下Android对JDK8的支持
  • 默认和静态接口方法
  • Lambda 表达式(在 API 级别 23 及更低版本中也可用)
  • 重复注解
  • 方法引用(在 API 级别 23 及更低版本中也可用)
  • 类型注解(在 API 级别 23 及更低版本中也可用)
4、Android限制条件
  • 要使用新的 Java 8 语言功能,还需使用新的 Jack 工具链。新的 Android 工具链将 Java 源语言编译成 Android 可读取的 Dalvik 可执行文件字节码,且有其自己的 .jack 库格式,在一个工具中提供了大多数工具链功能:重新打包、压缩、模糊化以及 Dalvik 可执行文件分包。
  • Instant Run 目前不能用于 Jack,在使用新的工具链时将被停用
  • 由于 Jack 在编译应用时不生成中间类文件,依赖这些文件的工具目前不能用于 Jack。对类文件进行操作的 Lint 检测工具。
  • 使用Instant Run要求手机设备Android5.0+。
5、 经过代码测试,果然和文档中描写的一模一样,测试的代码就省了
BiConsumer integerIntegerBiConsumer){
  integerIntegerBiConsumer.accept(i1, i2);
}

result:

java.lang.NoClassDefFoundError:com.an_fat_droid.android.training.android_demo.rxandroid.-$Lambda$0  ·
6、相当于是为了兼容低版本的系统,好多api都用不了,还得放弃Instant Run,只能写写Lambda。最后在是要Lambda还是要Instant Run的问题上想了下,还是一边开发一边调试的效率重要,感觉时间白浪费了。。。

你可能感兴趣的:(Android开发者JDK8的学习结果)