java 8
added in android 7.0
no more harmony
switched to openjdk
partial support*
*varies by os version
Slide 7
Slide 7 text
java 8
best case scenario (api 24+)
lambdas and method references
java.util.function
streaming and reflection apis
repeatable annotations
default and static interface methods
Slide 8
Slide 8 text
java 8
on pre-24
lambdas and method references
java.util.function
runtime
crash!
streaming and reflection apis
repeatable annotations
default and static interface methods
Slide 9
Slide 9 text
jack
Slide 10
Slide 10 text
No content
Slide 11
Slide 11 text
jack
new compiling toolchain
no javac/dx, one tool to rule them all
.jack bytecode as intermediate language
jill handles legacy .class files
supports java 8 language features
Slide 12
Slide 12 text
jack?
yes, but…
Slide 13
Slide 13 text
jack
no .class means no java tooling
no *guard, no mockito, no jacoco...
no instant run support
in alpha since announced
and most importantly…
Slide 14
Slide 14 text
DEPRECATED
Slide 15
Slide 15 text
very cool!
Slide 16
Slide 16 text
very cool!
yes, but…
Slide 17
Slide 17 text
what does
that mean?
Slide 18
Slide 18 text
the future
likely to match jack java 8 support
language features: partial backport
new api: no backport
basically like using retrolambda
we can keep our tooling
Slide 19
Slide 19 text
under the hood
desugarer from bazel
backports java 8 features
bytecode manipulation
anon inner classes for lambdas
again, just like retrolambda (ish)