Akashic Records

자바 nio - 1 본문

오래된글/Java

자바 nio - 1

Andrew's Akashic Records 2018. 4. 9. 11:17
728x90

1. nio 패키지 소개

New I/O는 JDK1.4에서 새로 추가된 패키지이다. JDK1.4의 정식 명칭은 Java 2 Standard Edition JDK1.4이다. 흔히 Meriln이라고 부르는데 이는 개발시 프로젝트의 이름이다. 참고로 Meriln은 중세시대 아더왕의 전설에 나오는 마법사의 이름이기도 하지만 쇠황조롱이라는 매의 일종인 새의 이름이기도 하다.

New I/O는 java.nio 패키지로 제공되는 기능으로 크게 버퍼 관리 클래스류, 확장된 네트워크 그리고 파일 I/O, 문자 집합 지원, 그리고 정규식 문자 표현에 새로운 특징들과 개선된 성능을 제공한다. java.nio 패키지는 다음과 같은 클래스류로 나누어진다.

  • java.nio

  • java.nio.channels

  • java.nio.channels.spi

  • java.nio.charset

  • java.nio.charset.spi

여기서 spi가 붙은 것을 볼 수 있는데 이는 SPI(Service Provider Interface)로 프로그래머가 제공하는 클래스로 대체할 수 있는 기능을 제공해준다. 이는 관련된 클래스들의 기본 구현을 프로그래머가 바꿀 수 있다는 뜻이 된다. 단, 이것은 특별한 경우에만 해당되므로 이런 것이 있다는 정도만 알아두자.

1. 특징.

  • 기본 데이터형용 버퍼를 클래스로 제공해 준다.

  • Character-set 인코더들과 디코더.

  • 패턴과 어울린 기능은 Perl-style 정규식들로 설정.

  • 채널, 새로운 I/O 추상화.

  • 메모리 매핑과 파일의 lock(잡금장치)를 지원해주는 인터페이스.

  • non-blocking 입출력이 가능.

2. 패키지 소개

  • java.nio.package : 자바 기본형 유형에 맞는 버퍼 클래스들.

  • java.nio.channels.package : 채널과 셀렉터.

  • java.nio.charset.package : 문자 암호화들.

  • java.nio.channels.spi.package : Service 프로바이더는 채널들을 위해 분류.

  • java.nio.charset.spi.package : Service 프로바이더는 문자셑를 위해 분류.

  • java.util.regex.package : 정규식들에 의해서 지정된 패턴들에 대해서 문자 표현에 대한 클래스들.

  • java.lang.CharSequence.인터페이스 : 다양한 종류의 문자 순서에의 통일된 read 전용 액세스를 제공.

3. 정리

java.nio 패키지에서 눈여겨 봐둘것은 지금까지 지원이 되지 않았던 io의 nonblocking의 지원이다. 이러한 nonblocking의 지원으로 주요한 장점은 크게 다음 두가지이다.

  1. 스레드는 더이상 읽기나 쓰기에 블록킹되지 않는다.

  2. selector의 도입으로 클라이언트의 많은 접속을 처리할 서버의 부하가 상당히 줄어든다.

그리고 또 다른 한가지 java.nio 패키지에서 네트워크 기능이 강화 되었다. 채널의 도입으로 새롭게 강화된 네트워크를 다루려면 반드시 java.net 패키지의 이해는 필수이다.

==> 여기서는 nio패키지를 크게 두부분으로 나누어서 강좌를 할 예정이다. 하나는 java.nio의 Buffer류 클래스와 java.nio의 Channels 클래스이다.

728x90

'오래된글 > Java' 카테고리의 다른 글

자바 nio - 3  (0) 2018.04.09
자바 nio - 2  (0) 2018.04.09
Java theory and practice: 웹 티어의 상태 복제  (0) 2018.04.09
Java Testing with SPOCK  (0) 2018.04.09
Java Persistence with MyBatis 3  (0) 2018.04.09
Comments