É possível transformar um aplicativo Java em um pacote independente que é executado "fora da caixa"? O usuário final não deve ser obrigado a instalar nenhum Java JRE, nem o instalador deve conter um JRE e instalá-lo para o usuário.
A distribuição final deve conter um executável nativo (provavelmente um para cada Windows, Mac e Linux) junto com os arquivos de dados regulares e quaisquer JARs extras, se necessário. Não estou procurando uma solução de "um arquivo" especificamente - na verdade, gostaria que os arquivos de dados não fossem ofuscados.
Como isso pode ser feito?
fonte
Para Mac, consulte a documentação do Oracle para empacotar um aplicativo Java para Mac . Eles configuraram o Java 7 para que você possa agrupar o tempo de execução em um pacote de aplicativos que contém seus arquivos jar (.app é uma pasta realmente tratada como executável), necessária para a distribuição na Mac App Store. Basicamente, o pacote .app faz o mesmo que o que a resposta JAVA_HOME de Eren sugere, mas é empacotado como um aplicativo Mac "nativo".
Para distribuir sem a Mac App Store, você pode não assinar o aplicativo, informando aos usuários do Mountain Lion que eles podem contornar o Gatekeeper clicando com o botão direito do mouse (ou com a tecla Ctrl + clique) no aplicativo e clicando em "Abrir" quando primeiro abra o aplicativo. Isso ainda os avisa que o aplicativo não está assinado, mas permitirá que eles sejam abertos de qualquer maneira e, em seguida, clique duas vezes no aplicativo para as aberturas subsequentes.
(observação: você também pode se livrar da marcação de scripts do shell no estilo Linux como executável e, em seguida, construir um pacote .app em torno disso. O NetBeans faz isso no Mac e Linux, embora sem um JRE / JDK incluído)
fonte