Quelle est la raison d’être du package javax? Qu’est-ce qui se passe dans java et quoi dans javax?
Je sais que beaucoup de paquetages d’entreprise sont en javax, tout comme Swing, le nouvel api de date et d’heure (JSR-310) et d’autres paquetages J2SE.
Je pense que c’est une chose historique – si un paquet est introduit en tant javax
à un JRE existant, il entre en javax
. Si elle est introduite pour la première fois dans le cadre d’un JRE (comme le NIO, je crois), alors elle entre en java
. Vous ne savez pas pourquoi la nouvelle API de date et d’heure se retrouvera comme javax
suivant cette logique… à moins qu’elle ne soit également disponible séparément en tant que bibliothèque pour fonctionner avec les versions antérieures (ce qui serait utile). Notez que de nombreuses années plus tard, il a fini par être en java
après tout.
Je crois qu’il y a des ressortingctions sur le paquet java
– Je pense que les chargeurs de classes sont configurés pour autoriser uniquement le chargement de classes dans java.*
rt.jar
ou quelque chose de similaire. (Il y a certainement un chèque dans ClassLoader.preDefineClass
.)
EDIT: Bien qu’une explication officielle (l’orbfish de recherche suggéré n’en ait pas donné une dans la première page) ne fait aucun doute sur “core” vs “extension”, je soupçonne toujours que dans de nombreux cas la décision pour un paquet particulier a un raison historique derrière elle aussi. java.beans
est- java.beans
vraiment ce “core” à Java, par exemple?
À l’origine, javax était destiné à être utilisé pour les extensions, et parfois, les choses seraient promues hors javax dans Java.
Un problème était la limitation des classes Netscape (et probablement IE) dans le package Java.
Lorsque Swing a été mis en place pour “passer” à java à partir de javax, il y a eu une sorte de mini-explosion parce que les gens ont réalisé qu’ils devraient modifier toutes leurs importations. Étant donné que la compatibilité ascendante est l’un des principaux objectives de Java, ils ont changé d’avis.
À ce moment-là, du moins pour la communauté (peut-être pas pour Sun), tout le sharepoint javax était perdu. Donc maintenant, nous avons des choses dans javax qui devraient probablement être en java … mais à part les personnes qui ont choisi les noms de paquets, je ne sais pas si quelqu’un peut comprendre la raison d’être au cas par cas.
Les paquets java sont “base” et les paquets javax sont des extensions.
Swing était une extension car AWT était l’API d’origine. Swing est venu après, dans la version 1.1.
L’espace de noms javax est généralement (c’est un mot chargé) utilisé pour les extensions standard, actuellement appelées packages optionnels . Les extensions standard sont un sous-ensemble des API non essentielles. l’autre segment des API non-core appelait évidemment les extensions non standard, occupant les espaces de noms comme com.sun. * ou com.ibm. . Les API de base occupent le java. espace de noms.
Tout dans le monde de l’API Java ne commence pas tout simplement par le kernel, ce qui explique pourquoi les extensions sont généralement issues des requêtes JSR. Ils sont finalement promus à la base sur la base de «conseils avisés».
L’intérêt pour cette nomenclature est né d’un faux pas de la part de Sun – les extensions auraient pu être devenues core, c’est-à-dire déplacées de javax. * À java. * En brisant la promesse de compatibilité descendante. Les programmeurs ont crié enroué et un meilleur sens a prévalu. C’est pourquoi, l’API Swing, bien que faisant partie du kernel, continue de restr dans l’espace de noms javax. *. Et c’est aussi la manière dont les packages sont promus depuis les extensions vers le kernel – ils sont simplement disponibles pour le téléchargement dans le cadre du JDK et du JRE.
Les packages java. * sont les principaux packages de langage Java, ce qui signifie que les programmeurs utilisant le langage Java ont dû les utiliser pour pouvoir utiliser le langage Java.
Les packages javax. * sont des packages facultatifs, qui fournissent un moyen standard et évolutif de rendre les API personnalisées disponibles pour toutes les applications exécutées sur la plate-forme Java.
Javax était autrefois réservé aux extensions. Pourtant, plus tard, le soleil l’a ajouté au libraire java en oubliant d’enlever le x. Les développeurs ont commencé à créer du code avec javax. Pourtant, plus tard, les soleils ont décidé de changer en java. Les développeurs n’aimaient pas cette idée car leur code serait ruiné … javax a donc été conservé.