Non capisco come fai ad avere un exe.
Il file .exe è un compilato e quindi dipende dal sistema operativo quindi se lo compili su mac non sarà portabile su windows.
Mentre un .class che si trova nel jar è un precompilato , e quindi non dipende dal sistema operativo perchè viene interpretato dall'interprete e quindi se lo compili su mac sarà portabile su windows.
Per quanto riguarda la protezione del codice ci sono programmi che fanno il reverse sia da exe che da class ma non credete che funzionino perfettamente ci sono tecniche per far si che il reverse non avvenga benissimo , ma preoccupatevi prima di far funzionare i programmi.