2013년 9월 15일 일요일

JAVA EE 7에 추가된 "핫" 한 기능들

오늘은 6월 12일 발표된 자바 엔터프라이즈 에디션 7(이하 Java EE 7)에 새로이 추가된 기능들을 간략히 살펴보고자 한다.

전체적인 방향성은 Spring의 장점을 받아들인 Java EE 6 의 흐름을 계승하고 있으며, 눈에 띄는 큰 변화라고 한다면 HTML5를 비롯해 WebSocket과 JSON서포트 그리고 크라우드 환경에 대한 지원을 들 수 있겠다. 이 외에 잡 플로 컨트롤을 가능하게 하는 배치 프레임워크의 등장이 눈에띈다.

Glassfish4를 필두로 Java EE 7을 지원하는 어플리케이션 서버가 속속 등장하고 있는 상황에서 조만간 Spring과 함께 엔터프라이즈 어플리케이션의 표준으로 자리 잡을것으로 기대된다.

HTML5
우선 가장 큰 특징으로 꼽는것이 HTML5의 지원이 되겠다. 단순히 스팩에 대한 지원 뿐만이 아니라 보다 편리하게 HTML5를 이용 할 수 있도록 여러 기능들을 추가해 놓았다. 아울러 최근 웹 트렌드를 반영하고자 크롬을 포함한 웹 브라우저들이 잇달아 지원을 시작한 WebSocket과 웹상에서 데이터 프로토콜의 표준으로 자리잡은 JSON에 대한 서포트도 주목 할 만 하다.WebSocket과JSON은 아래 별도항목으로 자세히 다루도록 하겠다.

WebSocket
Java EE 7의 WebSocket지원은 HTML5의 등장과 더불어 미래 웹 기술을 방향성을 보여준다. WebSocket은 장점은 기존의 HTTP상에서 구현되던 Ajax나Comet에 비해 보다 적은 오버헤드로 쌍방향 통신이 가능하다는 점 이다. 즉, HTTP기반 프로토콜은 각각의 Request와 Response별로 HTTP헤더를 첨부해 보내는 형식으로 커넥션을 반복해서 맺어야 했던것에 비해 WebSocket은 한번의 핸드쉐이크 이후에 하나의 연결을 계속해서 재 사용 할 수 있다는 것이 매리트이다.

JSON
군살 없는 데이터 표현방식으로 최근 각광받는 JSON에대한 API가 추가되었다. 개인적으로 JSON은 확작성과 가벼움을 동시에 갖춘 텍스트 베이스 데이터 포멧으로 향후 웹 뿐만 아니라 다양한 분야에서 기존 데이터 포멧을 대체해 나갈것으로 기대하고 있다.

JMS 2.0 API
Java EE에서 JMS지원은 특별히 새로울것도 없지만 JMS2.0의 경우 송수신을 위한 간편한 API가 추가된 점이 눈에 띈다.

클라우드 환경 지원
사실 Java EE 7 사양 발표시에 가장 주목하고 있던 부분이지만 아쉽게도 이번 7에서는 기본적인 사항들만 지원한다고 하는 어정쩡한 형태가 되고 말았다. (이러한 어정쩡함 때문에 아마도 상용 프로젝트에서 이 Java EE 7 의 클라우드 지원 기능을 이용하는 케이스는 찾아보기 어려우리라.) 본격적인 클라우드 지원은 Java EE 8부터 가능할 것이라고 하는 예측이 많지만 완벽한 형태의 네이티브 클라우드의 지원이 가능할 것인지에 대해서는 클라우드 자체도 아직 표준이 정착되지 않은 상황인지라 회의론도 만만치 않다.

배치 프레임워크
엔터프라이즈 어플리케이션에서 배치 어프릴케이션이 차지하는비중을 생각한다면 이제와서야 프레임워크에서 지원된다는 점은 다소 늦은 감이 있다. 그동안 Jboss나 WebSphere와 같이 밴더별로 지원해 오던 배치잡 관련 기능(스케줄링, 잡 플로우 컨트롤)이 표준 사양화 됨에 따라 향후 엔터프라이즈 어플리케이션 개발에 많은 영향을 끼칠것으로 기대된다.

JAX-RS 2.0
심플함을 추구하는 경향상 SOAP보다 REST가 대세로 자리를 굳혀가는 모양새다. 7부터는 JAX-RS 2.0의 지원으로 RESTful서비스와 관련하여 보다 다양한 기능들을 제공하고 있다.

병렬처리 관련 기능 강화
병렬처리와 관련한 유틸리티가 추가되었다. 특히 주목할 부분은 7 부터 도입된 하이레벨 스레드 컨트롤 기능이다.

CDI
큰 인기를 끈 Java EE 6에 이어서 7에서도 CDI가 지원되고 있다.

Servlet 3.1
당연하게 들릴지도 모르지만 최신 서블릿 사양인 Servlet3.1이 7에서 지원된다.
Servlet 3.1은 논-블로킹 I/O를 포함한 향상된 HTTP프로토콜 매커니즘과 보안기능 향상을 제공한다.