최근에 많은 자바 개발자들이 기다려오던 자바2 SDK 1.4 베타 버전이 발표되었다. 이는 올해 안에 자바2 SDK 1.4 버전이 정식으로 발표될 것이라는 것을 나타내기도 한다. 필자는 자바 매니아의 한 사람으로서 자바2 SDK 1.4 버전의 특징을 새로 추가된 기능에 중점을 두어 나열하고자 한다. 참고로 필자는 자바2 SDK 1.4 Documentation 에 포함되어 있는 Summary of New Features (http://java.sun.com/j2se/1.4/docs/relnotes/features.html)에 기반하여 이 글을 작성했음을 밝힌다.
자바2 SDK 1.4 버전은 서버사이드를 제외한 클라이언트에서 필요로 하는 대부분의 API가 포함되어 있다고 해도 무리가 없을 정도로 그 크기가 방대해졌다. 또한, 서버사이드에서 기본적으로 필요로 하는 기능 역시 추가되었다. 자바2 SDK 1.4 버전은 그야말로 완벽한 개발도구를 지향하고 있다고 할 수 있다. 이 글에서는 모든 새로 추가된 특징이나 향상된 점에 대해서는 다루기 힘드므로 필자 나름대로 중요하다고 생각되는 것을 중점적으로 살펴보도록 하겠다.
JAXP API 포함
가장 먼저 살펴볼 내용은 자바에서 XML 처리할 수 있도록 해주는 API인 JAXP(Java API for XML Processing) API가 포함되었다는 점이다. 아직까지 XML을 응용한 제품이 극소수이긴 하지만, 이미 XML은 IT 업계의 중심에 자리잡을 기술로 인식되고 있다. 특히 대부분의 B2B 업체는 XML을 자신들의 영역에 도입하기 위해 부단한 노력을 기울이고 있으며, 정부차원에서 진행되는 프로젝트 역시 차기 프로젝트의 주요 모델로 XML을 선택하고 있다.
이러한 시점에서 발표되는 자바2 SDK 1.4에 XML을 처리할 수 있는 API인 JAXP가 추가된 것은 선택이 아닌 필수라고 볼 수 있다. 특히 JAXP API는 JAXP API 하부에 존재하는 DOM 파서나 SAX 파서를 교체할 수 있는 구조를 갖고 있어서 언제든지 원하는 파서를 사용할 수 있도록 하고 있다.
보안 관련 확장 API 추가
자바2 SDK 1.3 버전까지 J2SE(Java 2 Standard Edition)가 제공하는 보안 기능은 매우 빈약했었다. 물론 간단한 암호화 정도는 프로그래밍할 수 있었으나 대규모 프로젝트에서 사용하기에는 부족했던 것이 사실이었다.
자바2 SDK 1.4는 이처럼 취약한 자바2의 보안 기능을 대폭 강화하기 위해 기존에 존재하던 확장 API인 JCE(Java Cryptography Extension), JSSE(Java Secure Socket Extension) 그리고 JAAS(JavaTM Authentication and Authorization Service) API를 J2SE에 포함시켰다. 이 API를 통해서 개발자들은 클라이언트 사이드에서도 강력한 보안 기능을 손쉽게 제공할 수 있게 되었으며 서버 사이드 역시 별다른 확장없이 강력한 보안 기능을 구현할 수 있게 되었다.
또한 이와 더불어 새로운 시큐리티 API인 Java GSS API와 Java Certification Path API 를 제공하고 있다.
로깅API
JDK 1.4 이전까지 JDK는 로깅과 관련된 어떤 기능도 제공하지 않았다. 이로 인해 개발자들은 늘 로깅 API를 직접 구현하거나 log4j와 같은 로깅 API를 사용해야만했었다. 1.4 버전은 새롭게 로깅 API를 추가하였으며, 따라서 개발자들은 이제 로깅과 관련된 부분을 걱정할 필요가 없게 되었다. 참고로, 1.4 버전에서 제공하는 로깅 API는 로깅 기능이 필요로 하는 대부분의 기능을 제공하고 있다.
네트워크 기능 강화
네트워크와 관련해서 가능 큰 변화는 역시 IPv6를 지원한다는 점이다. IPv6의 지원뿐만 아니라 Unconnected/Unbound 소켓 지원, 연결된 UDP 소켓 지원, java.net.URI 클래스를 통한 URI(Uniform Resource Indentifier) 지원을 비롯한 실제 네트워크 프로그래밍에서 필요로 하는 다양한 기능들이 추가되었다.
자바 웹 스타트 제품(Java Web Start Product)
자바가 클라이언트 영역에서 힘을 못내고 있는 주요 이유중의 하나는 클라이언트 프로그램을 배포하는 것이 불편하다는 점이었다. 자바 웹 스타트는 자바 어플리케이션을 간단한 방법을 배치할 수 있도록 해 줌으로써, 클라이언트 영역에서 자바의 쓰임새가 증가할 수 있는 기반을 만들어주고 있다. 자바 웹 스타트를 이용하면, 간단히 웹 페이지에 있는 링크를 클릭함으로써 어플리케이션을 실행시킬 수 있다. 이 때, 클라이언트 머신에 어플리케이션이 설치되어 있지 않을 경우 자바 웹 스타트는 자동적으로 필요한 파일을 다운로드 받으며, 알맞게 파일들을 캐싱한다. 또한, 언제라도 어플리케이션을 다시 다운로드 받을 수 있도록 하고 있다. 즉, 실행시에 어플리케이션을 손쉽게 교체할 수 있는 기능을 제공하고 있는 것이다.
아직 자바 웹 스타트가 클라이언트 분야에서 맥을 못추고 있는 자바에 힘을 줄지는 모르지만, 자바 어플리케이션을 손쉽게 배포할 수 있는 방법이라는 것만은 확실하다.
새로운 I/O API
NIO(New I/O) API는 기존의 I/O API에 비해 다음과 같은 특징을 제공하고 있다.
기본 데이터 타입을 위한 버퍼
캐릭터 셋 인코더와 디코더
정규 표현식에 기반한 패턴 매칭 기능
새로운 I/O 개념인 채널
락(lock)과 메모리 매핑을 지원하는 파일 인터페이스
JDBC 3.0 API
JDBC 3.0 API가 추가되었다. 이제 개발자들은 JDBC 3.0 API를 사용하여 관계형 데이터베이스에서부터 스프레드쉬트 파일에 이르기까지 가상의 어떠한 데이터 자원에도 접근할 수 있게 되었다.
Preferences API
자바를 사용하여 설정 API를 작성해본 사람이라면 java.util.Properties 클래스를 유용하게 사용했던 기억이 날 것이다. 1.4 버전에서는 Properties 클래스보다 한층 강화된 Preferences API를 제공하고 있다. Preferences API는 어플리케이션이 사용자별로 설정 정보를 관리할 수 있도록 해 주고 있다. 실제로 Preferences API는 java.util.Properties 클래스를 대체할 것으로 목적으로 하고 있으며, java.util.Properties 클래스의 단점은 개정하고 장점은 그대로 유지하고 있다.
정규 표현식(Regular Expressions)
JDK1.4 버전에 새롭게 추가된 것 중에 흥미로운 것 중의 하나가 바로 정규 표현식을 처리할 수 있는 API가 추가되었다는 점이다. 정규 표현식을 사용할 경우 사용자가 입력한 값이 올바른지의 여부를 매우 간단하게 처리할 수 있게 된다. 예를 들어, 전화번호와 같이 그 값이 일정한 구조를 가져야 하는 값들을 검사할 때 기존에는 개발자가 일일이 검사해주어야 했지만, JDK1.4 부터는 java.util.regex 패키지에 제공되는 Pattern 클래스와 Matcher 클래스를 사용하여 매우 간단하게 검사할 수 있다.
엔터프라이즈 기능의 강화
앞에서 살펴본 JDBC 3.0의 지원을 비롯한 인터넷 DNS(Domain Naming System) 서비스 프로바이더가 1.4에 포함되었으며, LDAP(Lightweight Directory Access Protocol)의 보안 기능이 강화되었다.
GUI 기능 강화
기존의 AWT와 Swing 사이에서 호환되지 못하던 부분을 포커스 관리와 같은 일부 기능을 개선했으며 새로운 API인 Full-Screen Exclusive Mode API를 지원하고 있다. Full-Screen Exclusive Mode API는 스크린에 직접 그릴 수 있는 기능을 제공함으로써 고성능의 그래픽 기능을 제공하고 있다. 또한 휠 마우스 역시 지원하고 있다.
Swing 역시 형식에 맞춰 텍스트를 입력받을 수 있도록 하는 JFormattedTextField 컴포넌트를 비롯해 다양한 컴포넌트와 다양한 특징이 새로 추가되었다.
또한 두 어플리케이션 사이에서 데이터를 드래그 앤 드롭 할 수 있는 기능이 추가되었다.
성능 향상
전체적으로 성능이 향상되었다. 자바 가상 머신, 입출력 스트림, 네트워크, 자바 2D를 비롯한 많은 부분에서 성능 향상이 이루어졌다.
결론
JDK 1.4는 많은 기업들이 공동으로 참여하여 완성된 것이다. 이는 다양한 기업들이 공동으로 필요로 하는 기능이 JDK 1.4에 포함되었다는 것을 의미하기도 한다. 아직 JDK 1.4가 베타 버전이고 또한 지금 상업용 제품에서 지원하고 있는 JDK 버전이 1.2.x 이긴 하지만, 앞으로 JDK 1.4가 정식으로 출시되면 많은 기업들이 JDK 1.4를 지원하는 제품을 내 놓을 것이다. 이 때를 위해서 자바 개발자들은 지금부터 미리 JDK 1.4를 공부하는 것도 좋을 것이다.
관련링크:
참고.
'JAVA > 버전.' 카테고리의 다른 글
자바 버전별 신규기능, 특징 정리 - JDK10 (0) | 2018.07.02 |
---|---|
자바 버전별 신규기능, 특징 정리 - JDK9 (0) | 2018.07.02 |
댓글