Java-формат jar-файлов основан на формате zip-файлов и поддерживает сжатие файлов классов внутри него. Когда и как JVM решает, какие файлы классов распаковать и извлечь из jar-файлов на своем пути к классам? Является ли процесс динамичным и выполняется во время выполнения, когда нужны классы, или все они распакованы перед тем, как программа действительно запустится?