Предположим я написал программу. Самую простую, калькулятор какой-нибудь. Он весит, грубо говоря, 20 мб., бинарники + исходники + пр. ресурсы. Чтобы запустить программу нужна явамашина. Она есть в JDK.
Чтобы другие люди смогли оценить мой "супер-калькулятор" им нужно всем скачивать и устанавливать JDK? Ведь JDK весит намного больше чем моя программа.
НЕТ, JDK - набор разработчик (JRE + для разработки), для запуска jar архивов(запускаемых джава-архивов) нужно только JRE. ХОтя и JRE весит гораздо больше чем твой калькулятор
Например на с++ тебе не нужно что либо скачивать помимо самой запускаемой программы, но тебе нужно будет компилировать свой код под огромное множество различных процессоров. Т.Е ты не сможешь просто написать программу , скинуть exe файл на другой компьютер и запустить её(Вернее сможешь, но он не всегда будет запускаться).
Еще есть вариант поставлять все вместе, т.е. ваш Jar и JRE(он портабельный). Просто создайте директорию с Вашим Jar и рядом с JRE примерно так
MyApp
├ myJar.jar
├jre [jre directory]
└ start.sh (или start.bat)
и можно еще написать скрипт запуска start вида ./jre/bin/java -jar ./myJar.jar.
Кроме того существуют конвертеры которые преобразуют Jar в нативный код (довольно много Jar to exe конвертеров)
Сборка персонального компьютера от Artline: умный выбор для современных пользователей