Есть gcj, есть еще куча ahead-of-time компиляторов. Но нужно понимать что все равно нужно таскать с собой полноценный рантайм с jit (или на крайний случай интерпретатором) + стандартную библиотеку. Jit (или интерпретатор) нужен потому что можно подгружать классы динамически.
Простенькое консольное приложение скомпиленное gcj со слинкованным рантаймом будет весить несколько десятков метров. Если же не линковать рантайм в бинарник, то разницы с обычным jvm в приницпе нет… и то и то должно стоять в системе отдельно.
К тому же последний раз когда я в этом копался поддержка java была не полная. Не знаю как ситуации сейчас, но думаю не лучше, учитывая что gcj уже пару лет не обновляли.