I love their design architecture, a full OS being bytecode based besides the kernel infrastructures since 1988, while we keep getting from those SV principles how WASM is going to change the world.
... and AoT-compiled at installation time! We didn't get this in mainstream software until Android Runtime started AoT-compiling Dalvik bytecode. As I've mentioned elsewhere, Android Runtime shows that AoT compilation doesn't prevent you from dynamically re-optimizing your binaries based on profiling feedback.
We kind of did in Windows/.NET with NGEN, and Windows Phone 8.x and 10, before Android started doing it.
Naturally NGEN has the caveat of only being good enough for faster startup, and requiring strong binaries (aka signed dlls), which meant not everyone adopted it.
Windows 8.x adopted Bartok from Singularity, where applications would be precompiled on the store, and linked on device at instalation time.
Windows 10 moved full AOT compilation into the store when downloading into specific devices.
Note that full AOT on Android is only on versions 5 and 6, starting with version 7 onwards is a mix of interpretation, JIT and AOT, which is nonetheless quite cool.
Why did android go from full AOT in 5.0 back to a mix of the two? I remember when AOT was "hyped" (not really, but talked about) for Lollipop, but I never heard about why they went for a mix instead?