Java non è propriamente un linguaggio compilato, nè un linguaggio interpretato. Quello che succede quando passi da codice sorgente a eseguibile è che un compilatore Java (su Unix-like javac) compila i file .java in file .class, che altro non sono che la versione compilata in Java Bytecode del tuo codice sorgente. Una Java Virtual Machine (JVM) poi prende il Bytecode generato dalla compilazione e lo esegue o compilandolo in machine code (di solito nei sistemi embedded), oppure eseguendo direttamente le istruzioni dal Bytecode come se fosse uno script (compilazione JIT - Just In Time).
Il tuo file .jar altro non è che una raccolta di tutti i file .class contenenti Java Bytecode.
La ragione per cui non puoi nascondere il tuo codice in Java è perchè il Java Bytecode, dovendo essere abbastanza generico da poter essere interpretato facilmente dalle JVM indipendentemente dall'architettura hardware e dal sistema operativo, è facilmente decompilabile in codice Java. Questa è proprio la maniera in cui è stato ideato Java, e c'è poco da fare.
Esistono dei sistemi per "offuscare" il codice, i quali modificano i nomi delle variabili, delle classi e delle funzioni in maniera da rendere il codice illeggibile anche se decompilato, ma non è una soluzione definitiva, in quanto un attaccante esperto può risalire al codice sorgente studiando il codice decompilato.
Mettere una password al .exe piuttosto che al .jar non è una soluzione, in quanto renderesti illeggibile il file alla JVM che deve interpretare il Bytecode, e l'unica maniera per renderlo di nuovo utilizzabile sarebbe di togliergli la password.
Detto ciò, per quale motivo ci tieni tanto a nascondere il codice? C'è una proprietà intellettuale all'interno di cui vuoi riservarti i diritti facendo un brevetto? È un programma talmente unico nel suo funzionamento da volerlo proporre a livello commerciale? Se la risposta a una di queste domande è si, allora si potrebbe anche discutere di tenere il codice sorgente nascosto (e comunque, anche in questi casi, non è sempre una buona idea), altrimenti ti assicuro che tenere il codice nascosto è inutile e, anzi, controproducente!