Если взять хороший кроссплатформенный фреймворк, то писать на джаве не придется.
Например, в комплекте с SDL идет шаблон проекта для Android NDK с уже готовой оберткой на джаве, которая выполняет кое-какую инициализацию и вызывает нативный main().
Подключение каких-то еще библиотек требует плясок с бубном, но в итоге код с десктопных платформ работает почти без изменений. Даже OpenGL ES из нативного кода работает.