Javac Warnung: "is Sun proprietary API and may be removed in a future release"

DarthShader

Erfahrenes Mitglied
Hallo,

ich hätte mal eine Frage bezüglich einer Warning, die mit javac (Java Version 1.6) beim Kompilieren anzeigt.

Ich verwende in meinem Code die Klasse "com.sun.org.apache.xerces.internal.dom.NodeImpl", um einen Knoten in einem DOM document Objekt zu referenzieren. javac sagt dazu:

warning: com.sun.org.apache.xerces.internal.dom.NodeImpl is Sun proprietary API and may be removed in a future release

Warum das eine Warnung ist, kann ich ja verstehen (die Begründung nennt die Warnmeldung ja auch), dennoch habe ich ein paar Fragen dazu:

1. Ich habe keine zusätzlichen Bibliotheken installiert, lediglich Java JDK 1.6. Wieso wird etwas ins JDK integriert, was dann später doch wieder rausfliegen kann?
2. Was ist hier die "Best Practice", sollte ich "NodeImpl" besser nicht verwenden?
3. Gibt es eine Alternative zu "NodeImpl", die sicher zu verwenden ist?
4. Kann ich irgendeine Annotation in den Code einfügen, damit die Warnung nicht mehr angezeigt wird?
5. Warum zeigt mir Eclipse diese Warnung nicht im Code an, sollte mich der Compiler von Eclipse nicht auch warnen?


Ich würde mich sehr freuen, wenn jemand ein paar Fragen beantworten kann.

Vielen Dank für Eure Hilfe!
 
Warnungen kommen, wenn du Methoden verwendest, die als veraltet markiert sind. Sie sollten nicht mehr verwendet werden und existieren nur noch aus Gründen der abwärtskompatiblität.
Verwenden kannst du sie dennoch.
 
Warnungen kommen, wenn du Methoden verwendest, die als veraltet markiert sind. Sie sollten nicht mehr verwendet werden und existieren nur noch aus Gründen der abwärtskompatiblität.
Verwenden kannst du sie dennoch.

Em, danke für die Antwort, aber ich glaube das war etwas an der Frage vorbei :) Natürlich kommen Warnungen, wenn man mit @deprecated annotierte Methoden oder Klassen verwendet. Falls Du nochmal antwortest, würde ich Dich bitten, meinen Post nochmal genau durchzulesen (ist nicht böse gemeint, aber ich glaube echt, dass du es nicht gelesen hast :) ),

Danke!
 
Wieso? Hab eben nur darauf geantwortet, was ich weiß.

Frage1: Aufgrund der Abwärtskompatilität
Frage2: Solltest du nicht, kannst du aber
Nach deinem Einleitungssatz hatte ich außerdem gedacht, du wusstest nicht warum so eine Warnung kommt.
 
Matze ich danke Dir wirklich sehr, dass Du versuchst, mir zu helfen, aber ich glaube Du bist einfach auf dem falschen Pfad :)

Ist Dir überhaupt bewusst, dass es hier _nicht_ um eine "deprecated" Warnung geht? Das ganze oben hat doch überhaupt gar nichts mit einer veralteten Version oder mit Abwärtskompatibilität zu tun, sondern es ist eine "Sun proprietary API" Warnung :)

Mir ist klar, dass zwecks Abwärtskompatibilität veraltete Methoden und Klassen im JDK gelassen werden, aber nochmal, das hat mit der obigen Thematik nichts zu tun.
 
1. Ich habe keine zusätzlichen Bibliotheken installiert, lediglich Java JDK 1.6. Wieso wird etwas ins JDK integriert, was dann später doch wieder rausfliegen kann?

com.sun.* Pakete enthalten nur für die JRE nötige Implementierungen, der Code wurde aber im Gegensatz zu den java.* oder javax.* Paketen nie für externe Entwickler freigegeben. Damit haben die Sun Entwickler immer die Möglichkeit die internen Klassen nach belieben zu ändern, zu erweitern oder zu entfernen. Die für die nötigen Implementierungen findest du eigentlich immer in den java.* oder javax.* Paketen.

2. Was ist hier die "Best Practice", sollte ich "NodeImpl" besser nicht verwenden?
3. Gibt es eine Alternative zu "NodeImpl", die sicher zu verwenden ist?

Korrekt, lass die Finger von dem Ding. org.w3c.dom.Node ist dein Freund.

4. Kann ich irgendeine Annotation in den Code einfügen, damit die Warnung nicht mehr angezeigt wird?

Theoretisch ja, aber benutz besser das dafür vorgesehene Node Interface.

5. Warum zeigt mir Eclipse diese Warnung nicht im Code an, sollte mich der Compiler von Eclipse nicht auch warnen?

Netbeans bietet eine Funktion die Benutzung von 'verbotene' Paketen und der enthaltenen Klassen als Warnung im Editor anzuzeigen. Da ich aber kein Eclipse benutze weiss ich nicht ob es so etwas dort auch gibt. Das waere aber ein Armutszeugnis wenn es nicht gehen würde...
 
Zurück