Porting Microservices to ARM64: JVM vs Python
I ported Java/Kotlin and Python microservices to ARM64 (aarch64). The results were very different.
Java/Kotlin: zero code changes. The JVM's "write once, run anywhere" promise held completely. Recompile targeting aarch64, deploy, done.
Python: close to impossible. The blocker was native libraries. Several dependencies pulled in C extensions with no aarch64 wheels on PyPI, and whose native builds broke under our toolchain. These were production dependencies with no clean alternatives.
"Write once, run anywhere" only applies if you stay within the managed runtime. The moment a dependency reaches outside it, you're back to platform-specific pain.
ARM64 is currently the cheapest way to get solid compute. If you want ARM64 flexibility long-term, the JVM (or Go, Rust) is a much safer bet than Python for anything with native dependencies.