2011-12-19 10 views
10

Come javax contiene le estensioni, cosa dovrebbe contenere il pacchetto com.sun?Cosa contiene il pacchetto com.sun?

+0

Cose come 'com.sun.mail.smtp' e' com.sun.net.httpserver', suppongo. http://www.google.ca/search?q=java+com.sun&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a – Ryan

risposta

19

Contiene Sun Implementazioni di riferimento Oracle delle API Java standard (EE). Tra gli altri Mojarra (l'implementazione JSF di riferimento di Oracle) e Glassfish (l'implementazione Java EE di riferimento di Oracle) utilizzano questo pacchetto. È preferibile non utilizzare tali classi direttamente nel codice in quanto renderebbe il codice strettamente accoppiato all'implementazione. La codifica con l'API java(x) consente direttamente di modificare l'implementazione senza modificare il codice (ad esempio MyFaces anziché Mojarra e JBoss AS invece di Glassfish).

Si prega di notare che il pacchetto com.sun.* non deve essere confuso con sun.* pacchetto che sono le classi interne dietro Oracle JRE che si dovrebbe absolutely not import/uso nel codice in quanto renderebbe il codice stretto accoppiato al JRE rendere/versione. Il non utilizzo del pacchetto sun.* consente di eseguire il codice su tutte le altre implementazioni JRE (OpenJDK, GCJ, ecc.).

+0

'java' API che usano il pacchetto' sun' - come sono supportate quando dipendono da pacchetti non supportati? – Lealo

+0

@Lealo Perché sono gestiti dalle stesse persone. – BalusC

+0

Queste persone quindi si assicurano che qualunque cosa stiano usando dal sun.package funziona? Altrimenti arrivano - o usano altri pacchetti per rimpiazzarli - così il mantenimento del proprio pacchetto 'java' continua a funzionare. L'ho capito correttamente? – Lealo

0

Pacchetti per uso interno a cui non si deve aver bisogno di accedere direttamente. Possono essere modificati o eliminati in qualsiasi versione di Java. È possibile trovare l'origine per tutti i pacchetti sun. * E com.sun. * In OpenJDK.

+0

Il 'com.sun' namespace non è destinato all'implementazione JDK: http://www.oracle.com/technetwork/java/faq-sun-packages-142232.html –

+0

@raphw puoi aggiungere un link che supporta la tua affermazione. Il tuo link non menziona nemmeno com.sun. * –

+0

Beh, il fatto che non menzionino nemmeno 'com.sun. *' Ma scrivi una sezione extra sull'uso di 'sun. *' È un primo suggerimento. Inoltre, Sun Microsystem ha rilasciato tutti i loro codici Java non JCL sotto 'com.sun': http://search.maven.org/#search|ga|1|com.sun dove l'uso delle classi' com.sun' è ovviamente inteso per essere legale. Inoltre, alcuni strumenti di JDK come doclet sono costruiti attorno al namespace 'com.sun'. –

0

Ci sono molti posti che usano i pacchetti com.sun (alcuni dei quali sono menzionati in altre risposte). Questa risposta affronta in modo specifico l'uso di com.sun all'interno di JavaFX. JavaFX is a UI library which is part of OpenJDK.

Un sacco di JavaFX implementation is in com.sun classes. Quando JavaFX è open source, il following comment è stato fatto dagli sviluppatori JavaFX per quanto riguarda l'uso di com.sun classi all'interno di JavaFX:

Come sempre, API non pubbliche (o meglio, API non supportato, il che significa tutto ciò che non è in javafx namespace come com.sun.*) non può essere dipeso da release a release. Ma per quelli di voi che si chiedono come funzionano le cose, ci sono alcune cose molto importanti nascoste nei pacchetti non supportati, e per quelli di voi che vogliono effettivamente hackerare OpenJFX, questo sarà di interesse ancora maggiore.

Problemi correlati