Je ne comprends pas très bien à quel point ils sont différents les uns des autres, alors je me renseignerai sur ces deux forfaits.
Après quelques recherches sur Google, il semble qu'Oracle ait décidé de mettre à jour le paquet NIO
avec la version plus récente et améliorée NIO.2
package dans le cadre de la version JDK7.
NIO
se comparent-elles à celles du package NIO.2
paquet?NIO
à NIO.2
? (par exemple, nouvelles méthodes, fonctionnalités)NIO
doit-il être mis à jour?NIO.2
juste avec le paquet NIO
de nos jours?Ce n'est pas que je veuille utiliser le paquetage hérité dans mon code, je suis vraiment curieux à ce sujet. S'il vous plaît dites-moi leurs différences?
Java a commencé par offrir la classe File
, dans la classe Java.io
package pour accéder aux systèmes de fichiers. Cet objet représente un fichier/répertoire et vous a permis d'effectuer certaines opérations telles que vérifier si un fichier/répertoire existe, obtenir les propriétés et le supprimer. Il y avait cependant quelques lacunes. Pour en nommer quelques uns:
boolean
. Comme on peut l'imaginer, en cas d'erreur, false
a été renvoyé, plutôt que de lancer une exception. Le développeur n'avait en effet aucun moyen de savoir pourquoi cela avait échoué.Pour résoudre ces problèmes, le package Java.nio a été introduit dans Java 4. Les principales fonctionnalités sont les suivantes:
Avec Java 7, le package Java.nio.file est introduit, offrant une meilleure prise en charge de la gestion des liens symboliques, de l’accès aux attributs de fichier et spécialement de la prise en charge étendue du système de fichiers via des classes telles que Path, Paths et Files. Vous voudrez peut-être jeter un oeil à description du paquet Java.nio.file pour obtenir plus de détails à ce sujet.
Avec ça en tête:
Quels sont les grands changements de NIO à NIO.2? (par exemple, nouvelles méthodes, fonctionnalités)?
Ils servent des objectifs différents. Pour signaler les changements importants, vous pouvez consulter le tout nouveau package Java.nio.file
.
Pourquoi le package NIO d'origine a-t-il dû être mis à jour?
Ça n'a pas. Un nouveau paquet a été introduit plutôt que mis à jour.
NIO.2 est-il simplement synonyme du package NIO de nos jours? Comment les performances du package NIO se comparent-elles au package NIO.2?
Non, ils ne sont pas synonymes. Par ailleurs, il n’a pas beaucoup de sens de comparer les performances entre eux, car ils servent des objectifs différents. NIO, une E/S de données de bas niveau plus abstraite et NIO2 axée sur la gestion de fichiers.
J'espère que cela t'aides.
[Bibliographie: Oracle Certified Professional Java SE7 - Guide de certification OCJP7 complet, par S.G.Ganesh et Tushar Sharma - Chapitre 9]
NIO.2 introduit entrée/sortie asynchrone.
Les E/S asynchrones constituent une approche des E/S non bloquantes non prise en charge par NIO.
NIO: sélecteurs/modèle de réacteur
NIO.2: gestionnaires d'achèvement/ modèle proactor
Ainsi, sous Windows, NIO.2 utilise des ports d’achèvement d’E/S , ce qui devrait améliorer les performances. Sauf que personne ne le sait, car personne n'utilise Windows côté serveur, et s'ils le font, ils le font probablement parce qu'ils investissent énormément dans .net et que, pour cette raison, ils n'envisageront probablement pas d'utiliser Java.