The process of bringing an EXE file into RAM (Random Access Memory), and processing the header relocation information to prepare it for
execution. Similarly, loading refers to bringing class files into RAM and preparing them for execution. The JVM (Java Virtual Machine)
in particular is slow to load for several reasons:
It is a fair size exe file to start. Typically, it is implemented as a DLL (Dynamic Link Library) which saves most of the EXE
Before it can do anything useful, it has to load hundreds of standard class files.
A fresh copy of the JVM is loaded every time you start an application, and a fresh copy of the standard
class files are loaded.
The browser does not load the JVM until it hits the first Java-enabled web page.
To avoid the delay of loading the JVM for each application you could:
Use gespenstering to capture the state of the system just after all
classes have been loaded and freeze that in an EXE file so the JVM comes up ready to go. This may be a
hand-crafted gespenster for the JVM + selected standard class files, or a general tool to create rapid-load
stand-alone EXE files for ordinary applications.
It should also be possible to share a JVM between several applications without them interfering.
It shoud be possible to reuse a JVM without creating a totally new copy from scratch.
To speed the loading of the browser JVM, you could:
Share the permanently resident app JVM.
Start the load in the background during slack moments, before the first Java encounter.