Сначала Java начала предлагать класс File
в пакете java.io
для доступа к файловым системам. Этот объект представляет файл / каталог и позволяет выполнять некоторые операции, такие как проверка наличия файла / каталога, получение свойств и их удаление. Однако у него были некоторые недостатки. Чтобы назвать несколько:
boolean
. Как можно представить, в случае ошибки возвращался false
, а не бросал исключение. Чтобы преодолеть эти проблемы, в java 4. был введен пакет java.nio. Ключевыми функциями были:
В java 7 представлен пакет java.nio.file, обеспечивающий лучшую поддержку обработки символических ссылок, доступа к файлам и особенно для поддержки расширенной файловой системы через классы, такие как Путь, пути и файлы. Вы можете взглянуть на описание пакета java.nio.file , чтобы получить дополнительную информацию об этом.
С учетом этого:
Каковы некоторые большие изменения от NIO до NIO.2? (например, новые методы, функции)?
blockquote>Они служат для разных целей. Чтобы указать на большие изменения, вы можете посмотреть на новый пакет
java.nio.file
.Почему необходимо обновить исходный пакет NIO?
blockquote>Это не так. Новый пакет был добавлен, а не обновлен.
Является ли NIO.2 просто синонимом пакета NIO в настоящее время? Как производительность NIO-пакета сравнивается с пакетом NIO.2?
blockquote>Нет, они не являются синонимами. Также не имеет смысла сравнивать производительность между ними, поскольку они служат различным целям. NIO более абстрактные низкоуровневые данные ввода / вывода и NIO2 сосредоточены на управлении файлами.
Надеюсь, что это поможет.
[Библиография: Oracle Certified Professional Java SE7 - всеобъемлющее руководство по сертификации OCJP7, SGGanesh и Tushar Sharma - глава 9]
NIO.2 представил асинхронный i / o .
Асинхронный ввод-вывод - это подход к неблокирующему вводу / выводу, который не поддерживается NIO.
NIO: селектор / шаблон реактора
NIO.2: обработчики завершения / шаблон проактора
Таким образом, когда в Windows, NIO. 2 использует порты завершения ввода / вывода , что должно повысить производительность. Кроме того, никто не знает, потому что никто не использует Windows на стороне сервера, и если они это сделают, они, вероятно, сделают это, потому что они сильно инвестированы в .net, и по этой причине, скорее всего, не рассмотрят использование Java.