title: Can removing final from a class definition break backwards compatibility?
body: <p>I'm currently reading Effective Java by Joshua Bloch and Item 17 is 'Design and document for  inheritance or else prohibit it'. The author suggest to prohibit inheritance by default. </p>
  
  <p>Is it safe to declare classes final by default and in a later release remove the final keyword if there is a need to extend the class? Will it break backwards compatibility against code that was compiled with a previous version?</p>
  
  <p>If so it appears that it is a safer bet to make all classes final and only remove it in a future release if there is a well supported demand.</p>