Java: в чем именно разница между NIO и NIO.2?
Я не совсем понимаю, насколько они отличаются друг от друга, поэтому у меня есть некоторые вопросы относительно этих двух пакетов.
осмотревшись немного на Google, кажется, что Oracle решил обновить NIO пакет с новым и улучшенным NIO.2 пакет как часть выпуска JDK7.
- как работает
NIOпакет сравнить сNIO.2пакета? - какие большие изменения от
NIOtoNIO.2? (например, новые методы, функции) - почему оригинал
NIOпакет должен быть обновлен? - и
NIO.2просто синонимомNIOв настоящее время пакет?
это не то, что я хочу использовать устаревший пакет в моем коде, мне просто очень интересно об этом. Пожалуйста, скажите мне их различия?
2 ответов:
Java начал изначально, предлагая
Fileкласса вjava.ioпакет для доступа к файловым системам. Этот объект представляет собой файл / каталог и позволяет выполнять некоторые операции, такие как проверка наличия файла/каталога, получение свойств и его удаление. Однако у него были некоторые недостатки. Чтобы назвать несколько:
- класс File не имел некоторых важных функций, таких как метод копирования.
- он также определил многие методы, которые возвращали
boolean. Как можно представить, в случае ошибкиfalseбыл возвращен, а не бросать исключение. Разработчик действительно не мог знать, почему он потерпел неудачу.- не обеспечил хорошую обработку по поддержке символьных ссылок.
- был предоставлен ограниченный набор атрибутов файла.
чтобы преодолеть эти проблемы, java.пакет nio был представлен в java 4. Ключевые особенности:
- каналы и селекторы: канал-это абстракция на функции файловой системы более низкого уровня, например файлы с отображением в памяти.
- буфера: буферизация для всех примитивных классов (кроме boolean).
- Charset: Charset (java.НИО.charset), кодировщики и декодеры для отображения байтов и символов Юникода
С java 7 java.НИО.файловый пакет вводится, обеспечивая лучшую поддержку для обработки символьных ссылок, доступа к атрибутам файлов и специально для поддержки расширенной файловой системы через такие классы, как Path, Paths и Файлы. Возможно, вы захотите взглянуть на java.НИО.описание пакета файлов чтобы получить дополнительную информацию об этом.
имея это в виду:
какие-то большие изменения с НИО к НИО.2? (например, новые методы, особенности)?
они служат разным целям. Чтобы указать на большие изменения, вы можете посмотреть на весь новый пакет
java.nio.file.почему оригинальный пакет NIO должен быть обновлено?
Это не так. Был введен, а не обновление новый пакет.
- Это НИО.2 просто синоним пакета NIO в настоящее время? Как производительность пакета NIO сравнивается с NIO.Пакет 2?
нет, они не являются синонимами. Также не имеет большого смысла сравнивать производительность между ними, поскольку они служат разным целям. NIO более абстрактные данные низкого уровня ввода / вывода и NIO2 сосредоточены на файле управление.
надеюсь, что это помогает.
[Библиография: Oracle Certified Professional Java SE7-полное руководство по сертификации OCJP7, С. Г. Ганеша и Тушар Шарма-Глава 9]
NIO.2 внесен асинхронный ввод/вывод.
асинхронный ввод-вывод-это подход к неблокирующему вводу-выводу, который не поддерживается NIO.
NIO: селекторы / модель реактора
НИО.2: обработчики завершения / proactor pattern
таким образом, когда на Windows,НИО.2 использует порты завершения ввода-вывода, что должно повысить производительность. Кроме того, никто не знает, потому что никто не использует Windows на серверной стороне, и если они это делают, они, вероятно, делают это, потому что они сильно инвестированы в .net, и по этой причине, скорее всего, не будут рассматривать использование Java.
Comments