It was a bug. Quote directly from the bug ticket: http://bugs.java.com/bugdatabase/view_bug.do?bug_id=4851466
setDefaultUseCaches() should have been made static, but it can't be changed now without impacting binary compatibility. The effect of it being non static is just that you need to create an instance before invoking it, which is not such a severe problem. In other words, there is not sufficient justification for adding a new static method that does it exactly the right way. So we will not be able to fix this.