Java NIO vs IO

Comme nous le savons, java NIO est introduit pour faire évoluer l'API Java IO conventionnelle.Les principales améliorations qui rendent NIO plus efficace que IO sont le modèle de flux de données de canal utilisé dans NIO et l'utilisation du système d'exploitation pour les tâches IO conventionnelles.

La différence entre Java NIO et Java IO peut être expliquée comme suit:

  • Comme mentionné dans l'article précédent dans le tampon NIO et le flux de données orienté canal pour les opérations d'E / S qui fournissent une exécution plus rapide et de meilleures performances par rapport à IO.NIO utilise également le système d'exploitation pour les tâches d'E / S conventionnelles, ce qui le rend encore plus efficace.

  • Un autre aspect de la différence entre NIO et IO est que cette IO utilise un flux de données de ligne de flux, c'est-à-dire un octet de plus à la fois et repose sur la conversion des objets de données en octets et vice-versa tandis que NIO traite les blocs de données qui sont des morceaux d'octets.

  • En java, les objets de flux IO sont unidirectionnels, tandis que les canaux NIO sont bidirectionnels, ce qui signifie qu'un canal peut être utilisé à la fois pour la lecture et l'écriture de données.

  • Le flux de données rationalisé dans IO ne permet pas d'aller et venir dans les données.Si le cas doit se déplacer d'avant en arrière dans les données lues à partir d'un flux, il faut d'abord les mettre en cache dans un tampon.Alors qu'en cas de NIO, nous utilisons le tampon orienté qui permet d'accéder aux données dans les deux sens sans avoir besoin de mise en cache.

  • L'API NIO prend également en charge le multi-threading afin que les données puissent être lues et écrites de manière asynchrone de manière à ce que, lors de l'exécution des opérations d'E / S, le thread actuel ne soit pas bloqué, ce qui le rend encore plus efficace que l'API Java IO conventionnelle.

  • Le concept de multi threading est introduit avec l'introduction de Selectors en java NIO qui permettent d'écouter plusieurs canaux pour les événements IO de manière asynchrone ou non bloquante.

  • Le multi-threading dans NIO le rend non bloquant, ce qui signifie que le thread est invité à lire ou à écrire uniquement lorsque les données sont disponibles, sinon le thread peut être utilisé dans une autre tâche pendant le temps moyen, mais cela n'est pas possible dans le cas d'E / S Java conventionnelles car pas de multi-threading est pris en charge, ce qui en fait un blocage.

  • NIO permet de gérer plusieurs canaux en utilisant un seul thread, mais le coût est que l'analyse des données peut être un peu plus compliquée que lors de la lecture de données à partir d'un flux de blocage dans le cas de java IO.Donc, dans le cas où moins de connexions avec une bande passante très élevée sont nécessaires avec l'envoi de beaucoup de données à la fois, que dans ce cas, l'API java IO pourrait être la meilleure solution.