Моя думка:
Коротка версія
Це доповнення пакету java.nio.file з його значно покращеним функціоналом файлів та файлової системи.
З точки зору мережевих сокетів або низькорівневого доступу до файлів, NIO == NIO.2 з деякими зручностями.
Більш довга версія
Java IO
Пакет: java.io
Старий API блокування вводу-виводу
Java NIO
Додано в Java 1.4 новий неблокуючий API.
Пакет: java.nio
Java неблокуючий введення-виведення. Класи подобається Selector
, SelectorKey
, Channel
.
Це , мені здається, НДО був великий крок для мережі I / O ( Selector
, SelectorKey
, SocketChannel
, ServerSocketChannel
, Buffer
), набагато менше для файлу I / O ( FileChannel
і Buffer
тільки, в тому числі файли , відображені на пам'ять). Це досить низький рівень API як для мережевих, так і для файлових частин.
Java NIO.2
Додано в Java 7. Йдеться, головним чином, про додавання значно вдосконаленого API для роботи з файлами та файловою системою та адресації. Новий API для файлів та файлових систем має відносно високий рівень.
Пакет: java.nio.file
і кілька доповнень до батьківського java.nio
.
Ці доповнення призначені для файлового вводу-виводу та лише кілька незначних доповнень до мережевого вводу-виводу або API низького рівня файлів.
Найбільш примітний низький рівень, що не необхідний файл , пов'язаний, API додаток AsynchronousSocketChannel
, AsynchronousServerSocketChannel
і AsynchronousFileChannel
, що додає зворотні виклики варіантів деяких методів. Асинхронні версії в основному є зручністю; такі інтерфейси відображення могли б бути зламані разом і раніше, але зараз вони доступні нестандартно в JRE.
Новий файловий API приносить багато смакот - набагато корисніша адресація файлової системи за допомогою Path, набагато покращена обробка ZIP-файлів за допомогою власного постачальника файлової системи, доступ до спеціальних атрибутів файлів, безліч зручних методів, таких як читання цілого файлу за допомогою однієї команди, копіювання файлу за допомогою одна команда і т. д. Але все це пов'язано з файлами / файловими системами і все досить високого рівня.
Повторюючи те, що я вже говорив вище, з точки зору мережевих сокетів або доступу до файлів низького рівня, NIO == NIO.2
Відповідні посилання