The Java file jar format is built from the zip file format and supports compression of class files inside it. When and how does the JVM decide which class files are unpacked and exit the jars on the way to the class? Is the process dynamic and executed at runtime as classes, or are they all uncompressed before the program actually starts?
Whether the process is dynamic and executing at runtime as classes are needed
Yes. You can register the activity of the class loader as follows (in the terminal):
java -verbose:class [ your other flags and arguments... ]