NIO.2 - это только пакет java.nio.file? [Дубликат]

57
задан John Huynh 27 August 2014 в 23:02
поделиться

2 ответа

Сначала Java начала предлагать класс File в пакете java.io для доступа к файловым системам. Этот объект представляет файл / каталог и позволяет выполнять некоторые операции, такие как проверка наличия файла / каталога, получение свойств и их удаление. Однако у него были некоторые недостатки. Чтобы назвать несколько:

  • В классе File отсутствовали некоторые важные функции, такие как метод копирования.
  • Он также определил многие методы, которые вернули boolean. Как можно представить, в случае ошибки возвращался false, а не бросал исключение.
  • Не обеспечивал хорошее обращение с поддержкой символических ссылок.
  • Был предоставлен ограниченный набор атрибутов файла.
  • g4]

Чтобы преодолеть эти проблемы, в java 4. был введен пакет java.nio. Ключевыми функциями были:

  • Каналы и селектор: канал является абстракцией на нижнем функции файловой системы уровня, например файлы с памятью.
  • Буферы: буферизация для всех примитивных классов (кроме булевых).
  • Charset: Charset (java.nio.charset), кодеры и декодеры для отображения байтов и символы Unicode

В java 7 представлен пакет java.nio.file, обеспечивающий лучшую поддержку обработки символических ссылок, доступа к файлам и особенно для поддержки расширенной файловой системы через классы, такие как Путь, пути и файлы. Вы можете взглянуть на описание пакета java.nio.file , чтобы получить дополнительную информацию об этом.

С учетом этого:

Каковы некоторые большие изменения от NIO до NIO.2? (например, новые методы, функции)?

Они служат для разных целей. Чтобы указать на большие изменения, вы можете посмотреть на новый пакет java.nio.file.

Почему необходимо обновить исходный пакет NIO?

Это не так. Новый пакет был добавлен, а не обновлен.

Является ли NIO.2 просто синонимом пакета NIO в настоящее время? Как производительность NIO-пакета сравнивается с пакетом NIO.2?

Нет, они не являются синонимами. Также не имеет смысла сравнивать производительность между ними, поскольку они служат различным целям. NIO более абстрактные низкоуровневые данные ввода / вывода и NIO2 сосредоточены на управлении файлами.

Надеюсь, что это поможет.

[Библиография: Oracle Certified Professional Java SE7 - всеобъемлющее руководство по сертификации OCJP7, SGGanesh и Tushar Sharma - глава 9]

58
ответ дан Ismail Marmoush 19 August 2018 в 11:03
поделиться

NIO.2 представил асинхронный i / o .

Асинхронный ввод-вывод - это подход к неблокирующему вводу / выводу, который не поддерживается NIO.

NIO: селектор / шаблон реактора

NIO.2: обработчики завершения / шаблон проактора

Таким образом, когда в Windows, NIO. 2 использует порты завершения ввода / вывода , что должно повысить производительность. Кроме того, никто не знает, потому что никто не использует Windows на стороне сервера, и если они это сделают, они, вероятно, сделают это, потому что они сильно инвестированы в .net, и по этой причине, скорее всего, не рассмотрят использование Java.

37
ответ дан Community 19 August 2018 в 11:03
поделиться
  • 1
    Никогда не говори никогда. Существует много серверов на базе Windows, особенно когда прогнозируемая рабочая нагрузка не так высока. – Jonathan Rosenne 17 February 2017 в 14:34
  • 2
    реактор против проактора - это то, что я заметил больше всего – Lefteris Eleftheriades 17 August 2018 в 09:58
Другие вопросы по тегам:

Похожие вопросы: