我将在DVD中随jar程序一起运送私人JRE。如果我直接从DVD上运行程序,大约需要3分钟。由于光盘速度较慢,将JRE库加载到主内存可能需要时间。但是,当我关闭程序并重新启动时,它会立即启动,就像JRE安装在本地计算机中一样(事实并非如此)。我认为JRE即使在我关闭程序之后也会留在内存中。
3分钟对用户来说是一个很大的等待时间,我有没有办法优化代码(这是我唯一能控制的事情),它只加载几个库来启动,并根据需要加载其他必要的库。现在,它可能正试图在显示建议的程序窗口之前从DVD加载所有内容
$java.exe -verbose -jar myProgram.jar
有没有其他解决方案可以在第一次启动程序时快速启动?目前唯一的解决方法是使用Launch4J.bmp启动屏幕,但是它是非常静态的。
注意:我知道在本地机器中安装JRE会解决问题,但该程序不适合技术用户,如果安装在自定义目录中,我的Launch4J找不到它。此外,我的DVD是副本保护的,因此程序无法分发。
将您的应用程序与专用JRE打包为一个EXE,该EXE将自解压到用户的临时目录中,并自动运行您的应用。启动时间的改进会让你大吃一惊:
http://www.excelsior-usa.com/blog/excelsior-jet/java-app-as-a-single-exe/
(下载打包的应用程序样本,并将其刻录到DVD上,以快速验证我的声明。)
让我强调一下,您可以只使用免费工具来实现结果,并且可以选择使用Excelsior JET来进一步改进它。有关完整说明,请参阅我们的知识库文章(无论您是否使用Excelsior JET,其中大部分都适用):
HOWTO:从Java应用程序创建一个EXE
免责声明:正如您可能已经猜到的,我为Excelsior工作。但同样,这一切都适用于私有JRE,从启动时间改进的角度来看,结果几乎一样好。