 <p>I would say that the real reason is that try-with-resources isn't so much new JVM feature as it is a compile-time language feature. In this way, it is very much analogous to the "enhanced for statement" which requires a class that has implemented the Iterable interface (you have to name an instance of the implenting class there, too). Try-with-resources requires that the resource implements the AutoCloseable interface. It is not wrong to regard the block as "syntactic sugar, introduced in 1.7". It just prevents you from having to deal with calls to the interface method yourself.</p> <p>Because the feature requires an object whose class has implemented the interface, you must give the try-with-resources block the name of that object.</p>