As asked and answered here, python has a useful way of deployment without installers. Can Java do the same thing?
You might want to check out how Eclipse does it - it has a native .exe that can use a local (to the installation) JRE.
You can have a look at
http://www.bearcave.com/software/java/comp_java.html
You might get it what you want.
you can embbed the JRE inside your application and create a setup or installation for your application.
You can use jlink to create your own customized jre which would contain only those dependencies which are needed for execution. This deployment method is really efficient. please follow **this**link for one such example.
You can use Launch4j for this. Well documented and easy to use. While the resulting program still needs a JRE to run, you don't have to install the JRE on the target system. You can just copy it with your application and tell Launch4j were to find it or just wrap it up with everything else.
You can do it with NetBeans and a couple of tools. The result is a standalone installer that packages everything you need, so your software can run without installing JRE. It is also completely portable, because it install your software on AppData, that is, it does not need privileges to be installed. Maybe you can even configure the installation path, or you can install it on your own PC, locate the folder and copy it to distribute your software in that way.
Check the Answer I made on different post