BLOG main image
OSGi Story (31)
Hot Issue (11)
Equinox (9)
Spring-OSGi (0)
J2ME (7)
OSGi-UFK (2)
Visitors up to today!
Today hit, Yesterday hit
daisy rss
tistory 티스토리 가입하기!
2008. 2. 15. 16:26

본 원고는 필자가 2008년 1월호 마이크로소프트웨어에 기고한 내용입니다. 자료를 옮기시거나 사용하시려면 출처를 밝혀주시면 됩니다.

요즘 임베디드 혹은 모바일 S/W 개발자들사이에 회자되는 이슈는 아마도 구글폰의 안드로이드 플랫폼이 아닌가 싶다. 구글폰에 대한 루머들은 예전부터 나오고 심지어 상상한 모델 디자인까지도 인터넷에서 떠돌기도 했다. 애플 아이폰이 성공적으로 런칭한 뒤에는 더욱 궁금증이 깊어졌는데, 공개된 구글폰은 하드웨어가 탑재된 하나의 디바이스라기보다는 웹2.0을 이끄는 플랫폼의 리더답게 안드로이드(Android) 라는 OHA를 표방한 모바일 플랫폼이었다. 안드로이드 역시 VM 기반의 자바 애플리케이션을 구동한다. 우리가 지난 호에서 살펴본것처럼 이제 모바일 환경에서도 자바 애플리케이션이 실행되면서 지금보다 훨씬 더 다양하고 강력한 서비스들이 우리들을 찾아오게 된것이다.

결국 모바일 시스템에도 본격적인 플랫폼의 시대가 도래된 것이다.
J2ME, J2SE, J2EE로 구분되어 있는 자바 플랫폼은 J2SE만 보더라도 1.1에서 1.2로 현대화된 이후로 1.4 1.5에 이르면서 상당히 큰 변화가 있었음에도 불구하고 계속 1.x의 버전 번호를 고수해왔다. J2SE 1.4는 코어 플랫폼에 있어 가장 많고 중요한 API 추가가 있었고, J2SE 1.5는 자바 언어 자체에 심대한 발전이 있었다. J2EE도 상황은 마찬가지여서 1.2로 시작하여 1.3에서 EJB 2.0으로 크게 도약한 분산 컴포넌트 기술은 1.4에서 웹 서비스 지원의 추가로 날개를 달았지만 여전히 1.x라는 빈약한 버전을 가지고 있었다. 이러한 상황은 J2SE 1.6 J2EE 1.5부터는 J2라는 약자를 버리고 자바라는 완전한 이름으로 돌아옴과 동시에 1.6대신 6, 1.5대신 5라는 과감한 버전 업그레이드를 단행하게 되었다. 그리고 Java 7으로 또다른 도약을 꿈꾸고 있다. 물론 아직도 여전히 J2SE J2EE라는 말은 자바 플랫폼의 대명사로 많이 쓰이고 있지만, 새 술을 새 부대에 담듯이 자바SE 6와 자바EE 5는 그 새로운 이름과 함께 ‘2’라는 굴레를 벗어나 도약의 로드맵을 사용자에게 제시하는 첫걸음을 디디게 된다.

한편, 자바 ME는 지난 호에서 다루었듯이 버전 번호의 큰 변경은 없지만 내부적으로는 아키택쳐의 큰 변화를 가져왔다. 제약이 많던 CLDC(connected Limited Device Configuration)에서 거의 PC급인 CDC(connected Device Configuration)로 빠른 이전 현상을 보이며 새로운 아키텍쳐 MSA(Mobile Service Architecture)의 실질적인 변화가 일어나고 있다. 자바2 버전이 기존의 버전에 비해서 갖는 가장 큰 중요한 전략은 바로 플랫폼으로서의 자바(Approach to Java Platform)에서 찾을 수 있다.
  MS라는 한 기업이 내부적인 절차에 의해 개발하는 방식에 비해, 자바는 매우 일찍부터 많은 개발사 혹은 개발자들과 함께 시장을 키워왔다. 또한 이런 기술 주도와 사업 성공의 독립성은 전체 시장의 활성화에 매우 중요하다. 하지만, JCP의 표준화가 아무리 투명한 절차로 진행되더라도, 자바는 여전히 100% 오픈 플랫폼이라는 평가를 받기 어려웠다. 이는 오픈 소스의 대명사인 리눅스와 비교해보면 더욱 확연히 드러난다. 리눅스라는 OS적 오픈 플랫폼에 이은 자바라는 애플리케이션적 오픈 플랫폼의 등장이 장애로 여겨지기도 했다.

물론, 여기에는 두 가지 측면이 있다. 하나는 썬이라는 한 회사가 자바 기술에서 차지하는 비중이며, 또 하나는 그 동안 표준을 강제하며 변종을 억제해 온 통제 시장 구조이다. 물론 이러한 다소 폐쇄적인 구조속에서도 꾸준히 오픈 플랫폼이라는 노력들은 계속 되어져왔다. 자바EE 5의 참조 구현체(Reference Implementation, 이하 RI)가 글래스피시(GlassFish)라는 오픈 소스 프로젝트로 진행되었고, 사용상의 라이선스도 CDDL(Common Development and Deployment License) OSI(Open Source Initiative)가 인증한 라이선스이며 GPL(GNU Public License)보다도 쓰기가 편하다. 또한 그 유명한 자바SE 6 RI도 머스탱(Mustang)이라는 오픈 소스 프로젝트로 공개되어 있다. 물론 여전히 라이선스는 매우 제한적이고 실제 내부 코드 개발 및 사용도 어렵지만, 올해 2007 자바원 컨퍼런스에서 썬의 CEO인 조나단 슈왈츠가 조만간 글래스피시처럼 될 것이라고 공식 발표했다.

이러한 오픈 플랫폼으로 발전하려는 자바의 노력은 시장상황에 어느정도 유리하게 작용하고 있는데, 단적으로 개별적으로 존재하던 많은 기술들이 자바EE와 자바SE라는 구도하에 모여들고 있는 것을 보면 잘 알수가 있다. <그림 3>을 과거 J2EE 1.4와 비교해보면 점점 더 포함되는 JSR이 많아짐을 느낄 수 있다.

한편으로는 비대해지는 듯 보이지만(실제로 플랫폼 자체의 배포판 크기도 늘고 있다), 자바를 지탱해주는 하드웨어의 발전(CPU, 메모리, 하드 디스크, IO 버스 대역폭 등)에 비하면 오히려 하드웨어를 제대로 활용하기 위한 방향이라고 할 수 있다. 특히 자바SE 6의 포용력은 경이롭다. 자바EE 5에도 포함된 XML과 웹 서비스 관련 기술(JSR 109 JAXR을 제외한 JAXP, StAX, JAXB, SAAJ, JAX-WS)을 모두 포함하고 있다. 심지어 자바 DB라는 100% 자바 기반 RDBMS까지 내장하게 되었다. 이제 Java SE 6 하나만 설치하면 네트워크, XML 처리, 그래픽, 그리고 DB의 저장까지 가능하게 되는 것이다. 그렇다면 어떤 일이 가능해지는 것일까? 사용자가 XML을 주면 그것으로부터 일정 정보를 뽑아 DB에 유지하는 프로그램을 짜야 한다고 생각해보자. 전에는 자바SE뿐만 아니라, XML 처리를 쉽게 하기 위해 JAXB도 따로 깔고(단순히 라이브러리뿐만 아니라 스키마를 처리하는 툴도 필요하다), MySQL과 같은 DBMS와 거기에 맞는 JDBC 드라이버도 구해 넣어야 했다. 그런데 이제 그런 인프라 구축 과정이 일체 필요 없게 되는 것이다. 여기에 자바 퍼시스턴스(Java Persistence) API까지 가미되면, XML 처리와 DB 처리에 XML 이해와 SQL 쿼리가 전혀 필요 없는 자바 지향적 프로그래밍까지 가능해진다. 달리 말하면, 자바 2.0의 컨버전스는 단순히 API의 수집이 아니라 개발 방식에 있어서도 통합을 의미한다고 할 수 있다
. 새로운 자바 플렛폼 JAVA7에 탑재되는 새로운 신기술들은 다음과 같다. 

 

Java SE 7
 
- JSR 277 Java Module System
 
- JSR 292 Supporting Dynamically Typed Languages on the Java Platform
 
- JSR 294 Improved Modularity Support in the Java Programming Language
 
- JSR 295 Beans Binding
 - JSR 296 Swing Application Framework

 

Java EE 6
 
- JSR 208 Java Business Integration (JBI)
 
- JSR 225 XQuery API for Java (XQJ)
 
- JSR 235 Service Data Objects (SDO)
 
- JSR 283 Content Repository for Java Technology API (JCR) 2.0
 
- JSR 286 Portlet Specification 2.0
 - JSR 299 Web Beans