Onde o usuário instalou a JRE, você terá a pasta nomeada de acordo com a versao… no windows, creio que seja “jre-1_5_07”, ou coisa parecida, em “Program Files/Java”, para a distribuição mais recente (não tenho certeza, eu só uso linux na minha máquina).
Neste diretório, tem uma pasta bin, e lá, o executável “java”. Então, é só adicionar o caminho deste diretório (bin) à variável Path do sistema operacional.
No Linux, edite /etc/profile.d/, e chame pathmunge() para o diretório apropriado. Ou ainda, faça um link para a pasta bin da JRE em /usr/bin, com:
cd /usr/bin
ln -s [pasta do java]
Se o link já existir (i.e, uma outra máquina virtual instalada), vc pode removê-lo com “unlink”.
Para testar se tudo funcionou, você já deve saber, chame java -version e verifique se a saída corresponde com a versão que você quer.
Você precisa de um instalador então. Não dá para o próprio programa Java achar sozinho a JVM.
Um instalador normalmente checa uma entrada do registry para achar a JVM. Se você tem alguma curiosidade, pegue o RegEdit e dê uma olhada em “HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment”
Se houver várias versões da JVM instaladas na máquina, escolha a mais nova. (Ela tem uma entrada para cada versão da JVM instalada).
Então, podes usar java web start. O usuário só se encarrega de instalar a JRE, e depois, de seguir um link para um arquivo .jnlp, que é o descritor de distribuição da tua aplicação, onde constam todas as dependências.
Esse método tem varias vantagens, em especial a atualização automática dos recursos da tua aplicação.