programing

Java: NIO와 NIO.2의 차이점은 무엇입니까?

bestcode 2022. 12. 27. 21:18
반응형

Java: NIO와 NIO.2의 차이점은 무엇입니까?

두 패키지가 서로 어떻게 다른지 잘 몰라서 문의드립니다.

, 한 것 .NIO 패키지 " " " " "를 NIO.2JDK7을 사용하다

  1. NIONIO.2★★★★★★★★★★★★★★★★★?
  2. NIO로로 합니다.NIO.2 방법, (「 」, 「 」
  3. 왜왜 why why NIO키지지 ?? ?? ??? ?? ???
  4. 이는?NIO.2NIO★★★★★★★★★★★★★★★★?

코드에 레거시 패키지를 사용하고 싶은 것이 아니라, 매우 궁금할 뿐입니다.그들의 차이점을 알려주세요.

에 Java를 되었습니다.File 「」에서는,java.io파일 시스템에 액세스하기 위한 패키지입니다.이 개체는 파일/디렉토리를 나타내며 파일/디렉토리가 존재하는지 확인하고 속성을 가져오고 삭제하는 등의 작업을 수행할 수 있습니다.하지만 몇 가지 단점이 있었다. 가지를 들자면:

  • 파일 클래스에 복사 방법과 같은 몇 가지 중요한 기능이 없었습니다.
  • , 「」를 반환하는 했습니다.boolean수 에러가 , 에러가 발생했을 경우,false예외를 두는 대신 반환되었습니다.개발자는 실제로 왜 실패했는지 알 길이 없었습니다.
  • 심볼릭 링크 지원에 대한 적절한 처리가 제공되지 않았습니다.
  • 제한된 파일 속성 집합이 제공되었습니다.

이러한 문제를 해결하기 위해 java.nio 패키지가 Java 4에 도입되었습니다.주요 특징은 다음과 같습니다.

  • 채널 및 셀렉터:채널은 메모리 매핑 파일 등 하위 수준의 파일 시스템 기능에 대한 추상화입니다.
  • 버퍼: 모든 프리미티브클래스의 버퍼링(부울 제외).
  • 문자 집합:바이트 및 Unicode 기호를 매핑하기 위한 Charset(java.nio.charset), 인코더 및 디코더

Java 7에서는 java.nio.파일 패키지가 도입되어 심볼릭링크 처리, 파일 속성 액세스, 특히 경로, 파일 등의 클래스를 통한 확장 파일시스템 지원이 향상되었습니다.java.nio를 보는 게 좋을 거야자세한 내용은 파일 패키지 설명을 참조하십시오.

이 점을 염두에 두고:

NIO에서 NIO.2로 크게 변경된 것은 무엇입니까? (새로운 방법, 기능 등)

그들은 다른 목적을 가지고 있다. New Package를 .java.nio.file.

원래 NIO 패키지를 업데이트해야 했던 이유는 무엇입니까?

안 했어요.업데이트가 아닌 새로운 패키지가 도입되었습니다.

현재 NIO.2는 NIO 패키지와 동일한 의미입니까?NIO 패키지와 NIO.2 패키지의 퍼포먼스는 어떻습니까?

아니요, 그들은 동의어가 아닙니다.또한 서로 다른 용도로 사용되므로 성능을 비교하는 것은 그다지 의미가 없습니다.NIO 파일 관리에 중점을 둔 보다 추상적인 로우 레벨 데이터 I/O 및 NIO2.

이게 도움이 됐으면 좋겠다.

[Bibliography: Oracle Certified Professional Java SE7 - 포괄적인 OCJP7 인증 가이드, S.G.Ganesh와 Tushar Sharma - 9장]

NIO.2에서는 비동기 I/O가 도입되었습니다.

비동기 I/O는 NIO에서 지원되지 않는 논블로킹 I/O에 대한 접근 방식입니다.

NIO: 실렉터/리액터 패턴

NIO.2: 완료 핸들러/프로젝터 패턴

따라서 Windows에서는 NIO.2가 I/O 완료 포트를 사용하여 성능을 향상시킬 수 있습니다.단, 서버측에서 Windows 를 사용하고 있는 사람은 없기 때문에, 만약 사용하고 있는 경우는, .net 에 많은 투자를 하고 있기 때문에, Java 의 사용을 고려하지 않는 경우가 대부분입니다.

제 의견:

쇼트 버전

및 파일 기능을 javajava.nio 파일 되었습니다파일 및 파일 시스템 기능이 대폭 강화된 파일 패키지입니다.
네트워크 소켓 또는 로우 레벨 파일 액세스의 관점에서 볼 때, NIO == NIO.2월 2일

긴 버전

자바 IO

★★★★★★★★★★★★★★★★★★:java.io
I API 'I/O API'

자바 NIO

Java 1.4 API
★★★★★★★★★★★★★★★★★★:java.nio
Java IO ('' )Selector,SelectorKey,Channel.
는 네트워크 NIO)에 큰 이었던 것 .Selector,SelectorKey,SocketChannel,ServerSocketChannel,Buffer I(「I/O」)의 는, FileChannel ★★★★★★★★★★★★★★★★★」Buffer★★★★★★★★★★★★★★★★★★」이것은 네트워크와 파일 부분 모두에 대해 상당히 낮은 수준의 API입니다.

Java NIO.2

Java 7에 추가되었습니다.주로 훨씬 개선된 파일 및 파일 시스템 조작과 API 주소 지정에 관한 것입니다.새로운 파일 및 파일 시스템 관련 API는 비교적 높은 수준입니다.

패키지: java.nio.file부모에 대한 추가가 거의 없습니다.java.nio.
이 추가는 파일 I/O를 위한 것으로 네트워크 I/O 또는 저수준 파일 API에 대한 소수의 추가만 가능합니다.

가장 주목할 만한 낮은 수준의 파일 관련 API 추가는 다음과 같습니다.AsynchronousSocketChannel,AsynchronousServerSocketChannel그리고.AsynchronousFileChannel콜백 배리언트를 일부 메서드에 추가합니다.의 비동기 버전은 주로 편리한 추가 기능으로 이전에도 이러한 매핑인터페이스가 함께 해킹될 수 있었지만 현재는 JRE에서 즉시 사용할 수 있습니다.

새로운 파일 API는 Path를 통한 파일 시스템 주소 지정, 커스텀 파일 시스템 프로바이더를 통한 ZIP 파일 조작, 특수 파일 속성 액세스, 하나의 명령으로 파일 전체를 읽기, 하나의 명령어로 파일을 복사하는 등 많은 편리한 방법을 제공합니다.그러나 모두 파일/파일 시스템과 관련된 수준이며 상당히 높은 수준입니다.

앞서 말한 바와 같이 네트워크 소켓 또는 로우 레벨 파일 액세스의 관점에서 NIO == NIO.2

관련 링크

  • Java NIO - 비차단 채널 대 비동기 채널이라는 잘못된 이름의 질문. 채널과 소켓의 동기 및 비동기 변형 모두 실제로 비차단입니다.
  • https://docs.oracle.com/javase/7/docs/technotes/guides/io/enhancements.html#jdk7 – NIO.2 섹션에 파일 관련 변경만 기재되어 있습니다.

언급URL : https://stackoverflow.com/questions/25537675/java-what-exactly-is-the-difference-between-nio-and-nio-2

반응형