지난 11월 9일부터 이틀간 자바는 달라진 모습을 보여주었다.
Dynamic Java, 10년을 넘어 새로운 시대를 자바를 표현하기에 이보다 좋은 단어는 없어 보인다.
이틀이라는 시간이 현재와 미래를 향한 자바의 역동성을 오롯이 보여주기에는 부족하지만, 최신의 자바 기술을 총망라했던 이번 썬 테크데이는 참가자들에게 자바의 차세대 원동력의 방점을 확실히 찍어주었다는 느낌이다.
특히 일반적이고 일방적인 세션을 보완하는 실습과 심화 세션은 최근 각광받고 있는 스크린캐스트(screencast, 간단한 예제를 아주 짧은 시간 안에 만들어 내는 것을 비디오로 찍어 보여주는 것)처럼 청중들의 관심과 집중을 모으기에 좋은 시도였다고 생각한다.
첫날 행사장을 들어서는 순간, 예상보다 훨씬 많은 참가자들의 수에 놀랐다. 이번 행사 참가자들의 성향은 개인보다는 법인이 우세해 보였다. 이는 바로 자바가 두터운 엔터프라이즈 사용자층을 확보하고 있다는 반증으로 볼 수 있다.
그렇다면, 다이나믹 자바의 어떤 면면들이 소개되었는지 차근차근 짚어 보자.
더욱 강력해지는 모바일 (Mobile goes powerful)
자바가 원래 추구했던 정보 단말기 플랫폼에 가장 부합하는 시장이 바로 모바일 자바, 더 구체적으로는 핸드폰 자바 플랫폼일 것이다. 핸드폰의 사양은 눈부시게 진화하고 있다. 이제 핸드폰은 음성통화의 도구만이 아니라 현대인의 정보 소비 창구로 자리 잡았다.
핸드폰에서 TV를 보는 것이 미래의 일일 것이라고 여겼지만, DMB 장착은 이제 기본 사양이 되었다. 음성 통화 + 문자 송수신 + 카메라 + MP3 + DMB까지 핸드폰으로 할 수 없는 것은 없어 보일 정도로 풍부해진 기능성은 또 다른 가능성으로 이어지기에 충분하다.
이렇게 강력해진 하드웨어 플랫폼에 걸맞는 미들웨어를 추구하는 것은 당연한 이치 아닐까? 애플리케이션과 하드웨어를 이어주는 미들웨어 계층은 점점 더 고도화하고 있다. 핸드폰용 OS도 그렇지만, 애플리케이션 개발에 좀더 가까운 자바는 MSA(Mobile Service Architecture)라는 접근을 취하고 있다.
사실 Java ME는 유연하고 가벼운 미들웨어층 구성을 위해 부가 패키지(Optional Package)를 기능 추가의 단위로 하고 있다. 하지만 너무 많은 부가 패키지는 통일된 플랫폼의 이미지가 부족했다. MSA는 다양한 핸드폰의 기능에 부합하는 부가 패키지의 통합체이며, 이로 인해 개발자와 사용자가 기본적으로 기대할 수 있는 API와 기능이 완전해졌다고 볼 수 있다.
이미 해외에는 스마트 폰의 보급과 더불어 MSA를 이끌고 있는 노키아와 이에 적극 참여중인 모토로라, 소니, 에릭슨 등의 핸드폰 제조사들이 MSA를 통해 모바일 자바 애플리케이션의 새로운 장을 열 태세다. 국내에서는 이동통신 서비스 제공사가 핸드폰 제조사보다 시정 운영에 강한 관계로 기술적 드라이브가 강하게 이루어지지 않고 있다.
하지만 전세계 시장 측면에서 모바일 자바는 총체적인 세대교체가 한창인 셈이다.
MSA와 더불어 모바일 자바의 더욱 근본적인 변혁은 CDC(Connected Device Configuration) 의 부상이다. 사실 CDC은 핸드폰과 같은 작은 단말기보다는 셋톱박스나 콘솔 게임기 등의 비이동성 중대형 장치를 위한 플랫폼이었다. 하지만 하루가 다르게 발전하는 소형 모바일 장치의 성능을 타고 새롭게 조명되고 있다.
이미 CDC를 탑재한 스마트폰이 출시되고 있으며, 고사양의 핸드폰들을 중심으로 채택이 확대되어 갈 것으로 보이는 CDC는 Java SE에 준하는 API와 파워가 최대 장점이다.
물론 CLDC 자체의 성능과 API도 개선되고 있지만, 근본적인 제약을 바탕으로 설계된 CLDC는 한편으로 한계가 뚜렷한 플랫폼임이 분명하다. 많은 전문가들이 소형 모바일 단말기과 PC의 성능차가 점차 사라지리라는 장밋빛 전망을 내놓는 것을 보면, 모바일 자바에 있어서도 마찬가지 현상이 나타나며 따라서 CDC는 CLDC와 Java SE를 이어주는 가교 역할이 기대된다.
새로운 핵심과 민첩한 웹(New Core and Agile Web)
모바일 자바를 먼저 이야기하긴 했지만 한국에 있어 자바는 기업 IT에서 먼저 성공을 거두었고 저변도 넓다. 웹 애플리케이션 개발에 자바가 널리 쓰이긴 했지만, 기업 IT에서의 인기가 폭넓은 저변으로 이어지기에는 PHP와 같은 스크립트 기술에 개발 효율성과 생산성 등 매우 중대한 면들에 있어 뒤져왔던 것이 현실이다.
물론 JSP가 점차 자바 코드 없는 웹 페이지 개발로 탈바꿈하고 있지만, 여전히 그 뒤를 받쳐주는 컴포넌트와 데이터 모델이 정적인 자바 언어로 작성되는 한 동적 언어의 민첩한 개발과 배치 모델을 따라잡기에는 정말 역부족일 수밖에 없다.
그렇다고 자바가 이런 점들을 그냥 수수방관한 것은 아니다. JDK 6는 JSR 223 Scripting for the Java Platform을 기본 포함하면서 스크립트 언어와 자바 언어를 API로 이어놓았고, JDK 7은 마치 .NET의 CLR(Common Language Runtime)처럼, 모든 언어에 VM의 문호를 열려고 계획 중이다. 그렇다면 왜 이토록 자바의 타언어에 대한 구애가 뜨거워진 것일까?
“Time to Market.” 이것은 웹 애플리케이션 개발에 있어서도 마찬가지이고, 오히려 더욱 극명하다. 웹 2.0의 시대에 다시 한번 벤처는 기회를 부여받았고, 구글과 같은 대형 인터넷 서비스 업체에 인수되는 뚜렷한 수익 모델을 바라볼 수 있게 되었다.
좋은 아이디어를 남들보다 빨리 구현하여 세상에 내놓으면 성공이다. 그 목적을 이루는 데에 자바에 대한 개인적인 혹은 기업 IT에서의 선호도 따위는 문제가 되지 않는 것은 당연하지 않을까? 이 시장은 확실히 떠오르고 있고, 기업 IT에서의 성공이 아무 노력 없이 민간 IT로 이어지지 않는다는 인식이 자바에도 반영되기 시작했다.
그 움직임의 또 한 축을 이루는 것이 자바의 Ajax 지원이다. 서블릿 2.5 스펙 리드로 알려진 그레고리 머레이(Gregory Murray)가 이끄는 jMaki(https://ajax.dev.java.net/)는 Dojo와 같은 Ajax 툴킷을 확장하여 Ajax 컴포넌트를 개발하고 운영하는 경량 모델을 제시하는 Ajax 프레임워크는 이번 테크 데이에서 가장 주목 받은 이슈 중의 하나였다.
투어는 다양한 분야에 다양한 시뮬레이션들로 OS, Server, Storage등 다양하게 준비 되어 있었는데, 내게 가장 흥미로 왔던 부분은 Sun Ray 2 였다. 한국내에서는 한국적인 어플리케이션들이 많아서 가능할까 싶은 부분도 있었지만, 예전보다 훨씬 작아지고, 그전에는 그냥 넘어갔던 Sun Ray를 다시 보게 된 부분은 보안성과 flexible office 환경에 있었다. 회사내에서도 개별로 지급된 컴퓨터는 개인 설정하고 나서는 개인들만 쓰기 좋고 다른 사람들은 쓰기 위해서는 시간이 필요하고, 자료 공유도 잘 안되는게 사실인데, Sun ray의 경우 아무나 동일한 클라이언트에서 작업할 수 있고, 개인의 환경 설정한 부분들을 어디서 던지 사용이 가능했다. 그리고 타란텔라라는 소프트웨어를 통해서 윈도우 클라이언트도 구동이 가능했다. 재미난 투어를 마치고 온뒤 Pauline의 한마디는 우리를 경악하게 하였다. 우리가 점심 전에만 왔으면 현재 CEO에서는 물러난 Scott하고 점심을 먹을 수도 있었다는 것이다. 원래 정해진 것은 아니였지만, 정말 아쉬운 자리였다. 컨퍼런스에서만 보던 Scott을 식탁을 마주하고 볼 수 있었다니 참 아쉬웠다.
사실 jMaki의 j는 Java가 아닌 xxJavaScript이다. Maki는 일본어로 ‘감싸다’라는 뜻으로, 흔히 우리가 말하는 레퍼(wrapper)인 셈이다. 즉, jMaki는 자바에 연연하지 않고 Ajax의 핵심 프로그래밍 언어인 xxJavaScript를 활용하기 위한 전방위적 접근을 시도하고 있으며 그 수단으로 자바 표준의 JSP나 JSF가 쓰인다는 점이 자바 개발자들에게도 친근하게 다가갈 수 있는 면이다.
하지만 여전히 xxJavaScript가 껄끄럽다면, 구글이 내놓은 GWT(Google Web Toolkit, http://code.google.com/webtoolkit)은 매우 매력적인 대안이 될 수 있다. GWT는 마치 스윙으로 GUI를 짜듯이 웹 UI를 자바로 작성할 수 있는 모든 환경을 제공한다.
GWT의 개발 언어가 자바라는 것은 곧 IDE의 지원도 의미하는데, 벌써 넷빈즈, 이클립스, IDEA 등이 지원에 나서 개발 편의성에 더욱 탄력을 받을 전망이다.
이쯤에서 썬이 매우 공을 들이고 있는 넷빈즈(NetBeans)에 대해 언급하지 않을 수 없겠다. 이클립스가 사실상의 자바 표준 IDE가 되어가고 있는 가운데 넷빈즈의 불꽃 투혼은 당장의 선전도 좋지만 앞으로의 가능성도 높게 칠 수 있다.
아직 에디터 본연의 기능에서 관록의 이클립스를 바로 따라잡기는 힘들지만, 글래스피시(GlassFish)와 연동하는 완전한 Java EE 5 애플리케이션 개발은 사실상 넷빈즈 밖에는 할 수 없다는 생각이 든다. 물론 EJB 3 지원은 다른 IDE에서도 시작하고 있지만, Java EE 5 전체를 아우르는 지원은 넷빈즈가 현재에도 갖고 있는 강점으로 꼽을 만 하다.
더욱 매끈해지는 Java SE의 GUI와 성능이 넷빈즈에게도 큰 힘이 되리라 보여지며, 개발자에게는 더 다양한 선택지가 생긴다는 점에서도 환영 받을 일이다.
커넥티드 엔터프라이즈
MS의 .NET으로 포문을 연 웹 서비스는, 자바가 뒤쫓아가는 형국으로 내내 비춰졌다. 그러나 실제 기업 IT의 주도권을 잡고 있는 자바의 부족한 연결성은 많은 문제를 야기해왔고, Java EE 5는 전례 없는 빠른 기술 공개와 전파로 문제의 해결을 서두르고 있다.
JAX-WS는 JAX-RPC의 굴레를 벗어 던지고 XML 기반 웹 서비스 본연의 자바 API로 돌아왔다. 불완전했던 Object-XML 매핑도 이제 W3C XML 스키마 100% 지원이라는 목표를 달성, 자료 표현력의 부족을 해결했다.
한편 SOAP/WSDL만이 웹 서비스의 전부가 아님은 MS의 WSE(Web Services Enhancement)의 호평으로 입증이 되었다. 특히 기업 환경에서 시큐리티의 중요성은 더 말할 나위도 없다. 하지만 WS-Security와 같은 WS-* 스펙의 난해함은 많은 사용자와 개발자들에게 손사래를 치게 했고, .NET-자바 진영간의 상호운영성에까지 영향을 미치며 웹 서비스 채택에 걸림돌로 자리 잡는 듯 보였다.
WSIT(Web Services Interoperability Technologies)는 MS의 WSE에 해당하는 JAX-WS의 확장팩이다. 다양한 WS-* 스펙의 지원 뿐아니라, 넷빈즈의 툴지원도 기대할 수 있다. MS와 직접 만나 상호운영성 테스트를 정기적으로 가질 정도로 현실적인 문턱을 낮추는 데에도 매우 열심이다.
솔직히 Java SE 6에서 JAX-WS가 기본으로 탑재된 것도 환영할 일이지만, WSIT까지 들어갔으면 어땠을까 생각도 해본다. 그도 그럴 것이, .NET 측의 차기 버전인 WCF에는 WS-* 스펙 지원이 기본으로 들어가 있기 때문이다. 아직 자바 API 표준이 아닌 문제가 있긴 하지만, WSIT은 자바의 연결성에 또 다른 차원을 연 것임이 분명하다.
Java EE 5의 RI인 글래스피시의 성장은 매우 고무적이다. 그 동안 썬이 내놓은 Java EE RI는 학습용 이상의 의미를 지니기 힘들 정도로 완성도나 성능에 한계가 있었다. 물론 EJB가 필요 없다면 서블릿/JSP의 RI인 톰캣을 쓰면 되고, EJB라면 JBoss도 무료로 쓸 수 있었다.
하지만 오늘날의 Java EE 기술은 서블릿/JSP/EJB라는 3대 주요 웹 애플리케이션 구성 요소 이상의 기술들이 점차 필수로 자리잡고 있어 완전한 지원이 절실하다. XML을 다루는 JAXB와 웹 서비스를 위한 JAX-WS, 그리고 JSTL과 JSF와 같은 웹 티어 등이 그러하다. 기존 Java EE RI와는 다르게 오픈 소스 프로젝트로 개발되고 있다는 점은 글래스피시의 커뮤니티로서의 성장성을 가늠하게 한다.
글래스피시에 기여해 온 나로서는 매우 보람찬 일이기도 한데, 표면적으로 좋은 기술 이상의 역할을 하기 위해서는 매우 중요한 움직임이라고 생각한다.
올해 한국 자바계의 대미를 장식하는 썬 테크데이는 흥미로움과 견실함을 모두 선사하는 뜻 깊은 자리라고 말하고 싶다. 아직 Java SE 6 출시와 자바 코어 플랫폼의 오픈 소스화 등 연말을 훈훈하게 할 소식들이 남아 있지만, 2007년은 완전히 오픈된 Java EE 5와 Java SE 6로 더더욱 신나는 자바 개발이 가능하지 않을까 점쳐본다.
일반 세션의 정보가 이미 웹에 있는 것들이 많았고, 발표자들의 중복이 있어 다소 아쉬움이 남지만, 2년만에 재개된 썬 테크데이는 자바를 사랑하는 이로서 무척 반갑고 또 유익했다. 앞으로도 이와 같은 개발자간의 만남이 계속 이루어지길 고대한다.