Насколько я понимаю, в тех же Eclipse, NetBeans и т.д., exe-шник — это не более, чем запускалка, JAR-ники просто спрятаны от глаз пользователя в каталогах программы, т.о., JRE всё равно требуется для запуска программы, exe-шник берёт на себя поиск Java-машины, подключает JAR-ники в classpath и запускает программу со всеми необходимыми для её работы ключами. С тем же успехом можно использовать даже простейший (или не очень) батник или shell-скрипт (можно подсмотреть примеры в папке bin/ Ceylon'а).
Если же цель именно в избавлении пользователя от необходимости качать JRE, смотрите в сторону Avian:
oss.readytalk.com/avian
Что касается второго вопроса — насколько я знаю, самым распространённым методом защиты от исследования исходного кода в мире Java является обфускация. К примеру, её применяли в Minecraft. К сожалению (или счастью), это не очень надёжный метод.