w.r.t. invokedynamic - the primary reason to implement it is not disk savings but rather performance. it's faster to generate and load the bytecode at runtime using the LambdaMetafactory than use regular classes due to less disk IO and the ability to load the classes anonymously (doesn't contend on the class name dictionary lock)