This sounds reasonable. Emitting Java 8 class files plus the Java 9 module class should be runnable on Java 8 as long as nothing references the module class at runtime. I think that's a good approach, given that adoption of Java >= 9 is probably 4-6 years away from now.