Il marchio Java è apposto a molte cose. Diciamo che da una parte c'è il linguaggio di programmazione Java e dall'altra... tutto il resto – una distinzione molto professionale

.
Con il linguaggio di programmazione crei... il codice sorgente del programma. E lì finisce la parte relativa al linguaggio di programmazione Java. Che è uguale a quella del linguaggio di programmazione C, C++, Smalltalk, Python, Ruby... quello che vuoi.
Dal codice sorgente crei qualcosa che puoi eseguire con un calcolatore. Se vuoi creare un "exe" prendi gcj, orrendo parto delle menti GNU, e violenti il codice sorgente Java creando un comune eseguibile per il sistema operativo.
Alternativamente (e con migliore profitto) prendi un compilatore per una macchina virtuale Java, che, astrattamente, non ha niente a che vedere con il linguaggio di programmazione Java. Compili il codice e sperabilmente lo impacchetti. A quel punto hai un eseguibile per la macchina virtuale java.
Prendi una piattaforma Java (che è l'insieme di una macchina virtuale e delle librerie per l'esecuzione di un programma scritto con il linguaggio di programmazione Java) ed esegui il programma come fosse un qualsiasi altro eseguibile (un bel doppio click).