- inherited null (I love Option<> and Either<> pattern and exceptions, nullable stuff is a problem)
- relying on foreign ecosystem (you end up with half functional, half "we have inherited all this mutable stuff, so let's use it" ugly mixture)
- startup time (if you write things that are script-ish in nature, this is really annoying)
Just compile your code to native using a native code compiler for JVM bytecodes. There are quite a few to chose from.