title: Java 8 Date API vs Calendar / Date / DateFormat
body: <p>There is this new-n-cool Date API in Java 8, the <a href="http://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html">java.time package</a>. I understand that it is <strong>better designed, less ambiguous and more thread-safe</strong> than the old classes. Still, I am not sure how to go about using it:</p>
  
  <ul>
  <li>Should I use it exclusively instead of the old classes?</li>
  <li>Should I replace existing usages of old classes whereever I spot them because the new stuff is so much better?</li>
  <li>Should I refrain from using <code>java.util.Calendar, java.util.Date</code>, <code>java.sql.Date</code> and <code>java.text.DateFormat</code> in favor of the new API all together OR are there use cases <strong>where the old classes are still preferable</strong>?</li>
  <li>Has the <a href="http://www.joda.org/joda-time/">Joda Time API</a> become obsolete thanks to the new Date API similarly to the substitution of <a href="http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/FluentIterable.html">Guava FluentIterable</a> by Java 8 stream API?</li>
  </ul>
  
  <p>I know these are a lot of questions, but they feel somewhat related to each other. If somebody can answer the whole bunch, that would be awesome, but good partial answers are also appreciated.</p>