title: Interface naming in Java
body: <p>Most OO languages prefix their interface names with a capital I, why does Java not do this?  What was the rationale for not following this convention?</p>
  
  <p>To demonstrate what I mean, if I wanted to have a User interface and a User implementation I'd have two choices in Java:</p>
  
  <blockquote>
    <ol>
    <li>Class = User, Interface = UserInterface</li>
    <li>Class = UserImpl, Interface = User</li>
    </ol>
  </blockquote>
  
  <p>Where in most languages:</p>
  
  <blockquote>
    <p>Class = User, Interface = IUser</p>
  </blockquote>
  
  <p>Now, you might argue that you could always pick a most descriptive name for the user implementation and the problem goes away, but Java's pushing a POJO approach to things and   most IOC containers use DynamicProxies extensively.  These two things together mean that you'll have lots of interfaces with a single POJO implementation.</p>
  
  <p>So, I guess my question boils down to: <strong>"Is it worth following the broader Interface naming convention especially in light of where Java Frameworks seem to be heading?"</strong></p>