Совсем недавно делал кроссплатформенное приложение на JavaFX. Если использовать Ant, то можно делать сборку готовых бандлов под Win, OsX и Linux (правда собирать надо будет отдельно на каждой платформе). А так как это Java, то если отделить UI приложения через реализацию интерфейса, то вполне можно отдельно написать ядро на Java, собрать его в JAR, а потом использовать и для Android-приложения, и для настольных систем.