title: SonarQube rule Classes from "com.sun.*" and "sun.*" packages should not be used
body: <p>I have a J2EE project with the following characteristics:</p>
  
  <pre><code>CDI 1.0
  Dynamic Web Module 3.0
  Java 1.7 (it's being changed to 1.8)
  JSF 2.0
  JPA 2.0
  </code></pre>
  
  <p>I'm running SonarQube 5.6.6 rules against it and it felt into the rule</p>
  
  <p><i>Classes from "com.sun.<em>" and "sun.</em>" packages should not be used
  <br>squid : S1191
  <br><br>Classes in com.sun.* and sun.* packages are considered implementation details, and are not part of the Java API. They can cause problems when moving to new versions of Java because there is no backwards compatibility guarantee. Such classes are almost always wrapped by Java API classes that should be used instead.</i></p>
  
  <p>because I'm using classes <b>com.sun.faces.application.ApplicationAssociate</b> and <b>com.sun.faces.application.ApplicationResourceBundle</b>.</p>
  
  <p>I've seached another threads about this and most of them say I should change the rule to exclude the specific package or class.</p>
  
  <p>I think there is no point in simply circumvent the rule, so I would like to know if there are actualy java API (1.7 or 1.8) classes for these sun classes.</p>
  
  <p>If not, I believe it's better to keep the alert until java API classes become available for these sun classes.</p>
  
  <p>Any tip/advice on this?</p>