Diciamo piuttosto che java non e' nato per disegnare frontend ad applicazioni c, c++. Del resto awt e swing sono solo due piccole parti della piattaforma java.

La Java Native Interface tendo a vederla come una soluzione estrema quando non ho modo di portare del codice c in java (l'esempio classico e' la necessita' di agire sul registro di win).