¿Es posible convertir una aplicación Java en un paquete independiente que se ejecuta "fuera de la caja"? No se debe exigir al usuario final que instale ningún JRE de Java, ni el instalador debe contener un JRE e instalarlo para el usuario.
La distribución final debe contener un ejecutable nativo (con suerte uno para cada uno de Windows, Mac y Linux) junto con los archivos de datos regulares y cualquier JAR adicional si es necesario. No estoy buscando una solución de "un solo archivo" específicamente: en realidad me gustaría que los archivos de datos no se ofusquen.
¿Cómo se puede hacer esto?