Android has their own runtime (creatively named as Android runtime), which does not run java byte code, but their own binary format. JVM class files can be compiled to that format, but the support for that always lags behind OpenJDK java versions.
Part of the reason kotlin became the de facto language on the platform was that they supported only terribly old Java at the time, that didn't even have lambdas even though it was already out.
The problem is that most of the Java libraries want to follow the desktop/server, aka the OpenJDK scene, but that would make them incompatible with Android so there was/is some incentives to bump up the version they support.
The new concepts for me were using immutable classes with the keyword "final", and the whole concept of state management in mobile apps because I've mainly done backend.
I've only used kotlin in the android files for flutter but nothing else.
I'm also not totally objective on that because my Java experience is from a long long time ago, my general feeling is that flutter is less bloated than java.
And I don't want to start a culture war on this, because we all know turbo Pascal is the best.
Now with KMP you can build a desktop/iOS/Android app with single codebase as well.