Offcanvas

개발자 / 애플리케이션

오픈JDK, 새 제안 공개··· "호스트 이름 및 주소 확인을 위한 SPI 정의"

2021.09.10 Paul Krill  |  InfoWorld
오픈JDK(OpenJDK) 커뮤니티가 호스트 이름 및 주소 확인을 위한 SPI(Service Provider Interface)를 개발 중이다. 자바 애플리케이션에서 인터넷 주소 지정을 세밀하게 제어할 수 있도록 하는 것이 목표다. 
 
ⓒNathan Dumlao (CC0)

현재 검토 중인 JEP(JDK Enhancement Proposal)에 따르면 호스트 이름 확인을 위한 SPI가 개발될 예정이고, 이를 통해 java.net.InetAddress는 운영 플랫폼의 내장 리졸버 이외의 리졸버도 사용할 수 있다. 

java.net.InetAddress API는 호스트 이름을 IP(Internet Protocol) 주소로 확인하고 그 반대의 경우도 마찬가지다. 현재 API는 운영체제의 네이티브 리졸버를 사용하며, 일반적으로 로컬 호스트 파일과 DNS(Domain Name System)의 조합을 사용하도록 구성돼 있다. 이름 및 주소 확인을 위한 SPI를 정의하는 목표는 다음과 같다. 

• 사용자 정의: 리졸버 API를 사용하면 프레임워크와 애플리케이션이 확인 결과를 세밀하게 제어할 수 있고, 기존 라이브러리를 사용자 정의 리졸버로 개조할 수 있다. 

• ‘프로젝트 룸(Project Loom)’: InetAddress API를 사용한 확인 작업은 현재 OS 호출에서 차단된다. 이는 룸(Loom)의 사용자 모드 가상 스레드에 관한 문제다. 확인 작업이 완료되길 기다리는 동안 기본 플랫폼 스레드가 다른 가상 스레드를 서비스하는 것을 막기 때문이다. 대체 리졸버는 DNS 클라이언트 프로토콜을 차단 없이 직접 구현할 수 있다. 

• 새로운 네트워크 프로토콜: 리졸버 API를 사용하면 QUIC(Quick UDP Internet Connections)를 통한 DNS, TLS(Transport Layer Security), HTTPS와 같은 새로운 확인 프로토콜을 원활하게 통합할 수 있다. 

• 테스트: 프로토타입 및 테스트에서 호스트 이름 및 주소 확인 결과를 제어해야 하는 경우가 많다. 

오라클은 이 제안이 자바에서 비동기식 프로그래밍을 제공하기 위한 일환이라고 말했다. 레거시 DNS 조회가 동기식이기 때문이다. InetAddress의 현재 구현은 차단 호출에서 OS를 활용한다. 

해당 제안은 표준 자바의 특정 버전을 대상으로 하고 있지 않다. 여기에 제안된 것과 같은 SPI가 없으면 애플리케이션은 현재 사용 가능한 해결 방법을 계속 써야 한다. 이를테면 애플리케이션은 JDNI(Java Naming and Directory Interface)와 DNS 공급자를 사용하여 네트워크 주소 및 이름을 조회할 수 있다. 이는 DNS 조회를 미세하게 제어해야 하는 애플리케이션에 유용할 수 있지만 InetAddress에서 분리되기 때문에 플랫폼의 네트워크 API를 사용하려면 추가적인 조치가 필요하다. 

이 밖에 애플리케이션은 JNI(Java Native Interface) 또는 프로젝트 파나마(Project Panama)의 외부 함수 API를 통해 OS의 리졸버 라이브러리를 직접 사용할 수 있다. 하지만 JDNI와 마찬가지로 이 접근법도 InetAddress와 분리돼 사용하기 어렵다는 문제가 있다. ciokr@idg.co.kr

 
CIO Korea 뉴스레터 및 IT 트랜드 보고서 무료 구독하기
추천 테크라이브러리

회사명:한국IDG 제호: CIO Korea 주소 : 서울시 중구 세종대로 23, 4층 우)04512
등록번호 : 서울 아01641 등록발행일자 : 2011년 05월 27일

발행인 : 박형미 편집인 : 천신응 청소년보호책임자 : 한정규
사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.