Olha Zakim, eu tenho 2 sistemas relativamente grandes que estão trabalhando nesse sistema (usando JWS fazendo atualizações diretamente de um servidor na web) há 5 anos, no qual meu cliente simplesmente fecha o sistema e abre novamente para ele se atualizar, quando eu preciso fazer qualquer alteração eu nunca tenho que ir até ao cliente (mesmo porque eu já fiz alterações até fora do Brasil e resolveu o problema imediatamente), então não vejo porque o pânico sobre proteger o código, lembre-se que java é uma linguagem onde as pessoas não ficam muito afixadas nesse pronto, tente proteger bem o banco de dados e guardar a documentação do seu projeto.
Isso também depende do tipo de cliente que você vai utilizar, eu tenho um contrato com meus clientes onde eles assumem certas responsabilidades sobre o sistema.
Veja o que acontece, se você seguir o que tem no atalho (digamos numa máquina windows):
C:\WINDOWS\system32\javaws.exe "C:\Documents and Settings\Francisco Souza\Application Data\Sun\Java\Deployment\cache.0954162dd-7f9c0b09"
Aí você decide abrir o arquivo que o javaws.exe está chamando, nesse caso 654162dd-7f9c0b09, você verá exatamente o conteúdo do seu arquivo .jnlp, ou seja, com um pouquinho de conhecimento alguém já consegue ver seu .jnlp, então ele já vai visualizar os links para os .jars no servidor, com isso ele vai tentar baixar .jars, se ele conseguir ele vai tentar descompilar com alguma ferrametna de descompilação.
Você pode também usar algum tipo de segurança no servidor.