1995년 이후로 자바 플랫폼 발전의 가장 중요한 전기가 될 것으로 예상되는 Java 2 Platform Standard Edition 5.0 (J2SE 5.0)이 출시되었습니다. 코드명 "타이거"로 알려진 이 새로운 릴리즈는 고품질, 개발 용이성 향상, 빠른 속도, 강력한 성능, 그리고 탁월한 모니터링 및 관리 기능을 발휘할 수 있도록 특별히 설계되었습니다.
J2SE 5.0에 대한 예비 지식을 갖추는 차원에서 썬마이크로시스템즈의 자바 플랫폼 팀의 일원이자 부사장인 그래엄 헤밀턴 씨를 만나보았습니다. 헤밀턴 씨는 J2SE 릴리즈 1.3, 1.4, 그리고 지금의 5.0 설계를 지휘했으며, 현재는 후속 타이거 JDF 릴리즈(J2SE 개발 용이성 프로젝트)와 Java 2 Platform Enterprise Edition (J2EE) 계획 프로젝트에 참여하고 있는 동시에 썬의 툴 그룹과 함께 새로운 툴 개발 프로젝트를 진행하고 있습니다.
J2SE 5.0이 전하고자 하는 기본 메시지는 무엇이며, 또한 헤밀턴 씨가 J2SE를 통해 개발자들에게 가장 어필하고 싶은 부분은 무엇입니까?
타이거는 코어 자바 플랫폼 전체에 걸친 가장 우수하고 광범위한 업데이트라 할 수 있습니다. 1995년, 처음으로 자바 언어가 나왔을 때와 비교하면 지금은 정말 놀라울 정도의 언어적 변화가 생겼을 뿐 아니라 로-레벨 버추얼 머신에서부터 하이-레벨 GUI에 이르기까지 J2SE의 거의 모든 영역에 대한 대대적인 업데이트가 이루어진 상태입니다.
본인은 또한 타이거가 여태까지의 것들 중 "최고 품질"의 J2SE 릴리즈라는 점에 대해 매우 기쁘게 생각합니다. "품질"에 관한 부분은 릴리즈 개발 전 과정에 있어서 가장 중요한 사안이었고, 이에 따른 결과는 아주 성공적이었습니다. J2SE 수석 엔지니어인 마크 레인홀드의 최근 블로그를 보면 우리가 다양한 품질 메트릭스를 설정해 놓고 이를 얼마나 철저하게 분석하고 있는지 잘 알 수 있습니다.
개발의 용이성
개발의 용이성과 관련해서 타이거는 개발자들에게 어떤 방식으로 도움을 제공하게 됩니까?
아주 다양한 방법들을 통해서입니다. 예를 들어, 우리는 제네릭 타입(generic type)을 추가했는데, 이것은 언어와 컴파일러가 타입 검사를 더욱 강화할 수 있도록 해줍니다. 이전에 자바 컬렉션 라이브러리로 작업을 했던 개발자들은 수 많은 종류의 타입 정보를 숙지해야만 했던 동시에 언어는 이 타입 정보를 처리할 수 없었습니다. 하지만 이제는 제네릭을 사용하여 소스 파일의 일부로서 타입 정보를 지정할 수 있게 되었으며, 컴파일러는 더 많은 검사를 수행할 수 있게 되었을 뿐 아니라 과거에는 개발자들이 포기해야 했던 수 많은 일들도 처리할 수 있게 되었습니다. 결국, 개발자들은 제네릭을 통해 작업 능률을 높이고 프로그램을 더욱 안정되게 작성할 수 있게 된 것입니다.
이 외에도 우리는 언어의 여러 부분을 수정하여 개발자의 생산성 향상을 배려했습니다. 한 예로 컬렉션과 어레이(array)에서의 이터레이션(iteration) 단순화를 들 수 있습니다(소위 "향상된 for 반복문(enhanced for loop)" 구문). 또한 우리는 "boxing"과 "unboxing"을 추가함으로써 기본 데이터 타입(primitive type)과 객체 타입(object type) 간의 매핑이 자동으로 이루어지도록 하고 있습니다. 물론 이 모두가 언어의 작은 부분을 수정한 것이라고 볼 수 있지만 개발자들의 성가신 일상 작업의 부담을 덜어주었다는 점에서 의미가 있다고 할 수 있겠습니다.
또, 개발의 용이성을 위해 "C" style printf 함수 지원을 추가했습니다. C 언어를 기반으로 했던 우리 대부분에게는 단순 포맷팅을 위한 강력하고도 간편한 printf 함수 기능이 매우 유용합니다. 이제는 자바 언어를 통해서도 이 printf 함수를 사용할 수 있게 된 것입니다.
다른 큰 변화로 자바 언어 애너테이션(annotation, 주석)을 들 수 있습니다(JSR 175). 이로 인해 기존의 객체 지향 언어, 즉 "x.doThis()" 또는 "y.doThat()"와 같은 완전한 명령형 연산으로 시작됐던 선언형 프로그래밍(declarative programming) 스타일이 자바 언어에서도 지원이 가능하게 된 것입니다. 한편, 라이브러리 진화에 따라 선언형 프로그래밍 스타일도 점진적으로 플랫폼에 스며들고 있는 상태입니다. 예를 들어, JavaBeans로 메소드 명명(naming) 패턴(getFoo와 setFoo)을 사용하여 JavaBeans "foo" 속성을 정의할 수 있습니다. 이와 유사하게, 우리는 순차화(serialization)의 일환으로 특정 마커 인터페이스(marker interface)의 상속이 클래스 순차화 가능 상태 표시에 사용될 수 있도록 지정했습니다. 또한 Enterprise JavaBeans를 통해 다양한 마커 규칙이 만들어져 EJB 동작 방식을 지정할 수 있게 되었습니다.
다시 원래로 돌아가서, 우리는 다음의 두 가지를 알게 되었습니다. 첫 번째는, 자바 플랫폼이 이와 같이 다양한 종류의 여러 마커 기술들을 지원하게 되었다는 것이고, 두 번째는, 이것이 매우 효과적이었다는 점입니다. 덕분에 개발자들은 특징을 지니고 있는 것으로 메소드나 클래스를 선언형으로 마크하여 툴 또는 라이브러리가 이 클래스나 메소드에 대해 특수 프로세싱을 수행할 수 있도록 할 수 있습니다. 이 경우 이전에는 반드시 필요했던 명시적 프로그래밍(explicit programming)의 양을 줄이거나 이를 단순화할 수 있게 됩니다.
그러나, 우리가 사용했던 마커 규칙은 다소 임시방편적인 것이었을 뿐, 더 깊이 들어가서 안정되게 사용하기에는 무리가 따르는 것으로 밝혀진 바 있습니다. 따라서 우리는 타이거에서 선언형 프로그래밍이란 아이디어를 자바 언어 그 자체의 일차적 개념으로써 추가하기에 이르렀던 것입니다. 이제는 애너테이션 타입을 정의할 수 있는 메커니즘이 구축되었고, 또한 이 타입을 클래스, 필드, 그리고 메소드를 애너테이트(annotate)하는데 사용할 수 있게 되었습니다. 그런 다음 툴과 라이브러리는 이 애너테이션을 처리할 수 있게 되고, 개발자를 대신해서 작업을 수행합니다. 이것은 단순한 이론적 개념이 아닙니다. 바로 이 개념이야말로 우리가 J2EE 5.0에서, 특히 EJB 3.0과 같은 프로젝트에서 실질적으로 추구하고 있는 주요 프로그래밍 스타일 중 하나인 것입니다. 이런 식으로 애너테이션을 활용할 수 있다면 J2EE 프로그래밍을 단순화하는데 상당한 도움이 될 것이라 기대됩니다.
타이거에 대한 6가지 주제를 말씀해 주십시오.
첫 번째 주제는 바로 "품질"입니다. 여기서 품질이란 안정성, 강건함, 그리고 호환성을 의미합니다. 우리는 여러분의 초기 애플리케이션들이 타이거와 함께 매끄럽게 잘 돌아가길 바라고 있습니다. 즉, 우리는 기존의 작동 방식이 그대 유지될 수 있기를 바라는 동시에 이 릴리즈가 수 개월 또는 수 년간 안정되게 유지될 수 있기를 원합니다.
우리는 릴리즈 개발의 한 부분으로써 품질에 관한 부분을 가장 중요한 과제이자 사안으로 취급해 왔습니다. 예컨대, 우리는 더욱 세심하게 기능 수정을 관리하고, 테스팅의 효율성을 제고하여 릴리즈의 품질 수준을 전체적으로 개선할 수 있도록 수 많은 내부 엔지니어링 프로세스를 향상시키는데 전력을 기울여 왔습니다. 이렇게 품질에 초점을 둔 것은 매우 효과적이었다고 본인은 생각합니다.
두 번째 주제는 성능과 확장성에 관한 부분입니다. 메모리 재활용(garbage collection)에 관한 연구의 일환으로 우리는 500 기가바이트 이상의 물리적 메모리로 테스트를 수행해 왔습니다. 이와 비슷하게 JVM가 초대규모의 멀티 프로세서 시스템 상에서 실행될 수 있을 것이라고 우리는 확신했습니다. (썬 하드웨어 사람들은 매우 친절했으며, 이따금씩 우리에게 그들의 커다랗고 번쩍이는 장난감을 빌려주곤 했습니다.) 그렇다고 해서 지금 가정용으로 500 기가바이트 또는 100-way 프로세서가 필요하다는 말은 아닙니다. 더욱 뛰어난 하이엔드 환경으로까지 영역을 확장할 수 있다는 것은 반가운 소리긴 하지만 우리는 보다 현실성 있는 시스템들을 대상으로 튜닝 및 테스팅 작업을 수행하고 있습니다.
고객들이 대규모 시스템에 대해 실제로 어떻게 배치를 하는지 살펴 보고 있노라면 우리가 설정한 가정이 잘못됐다는 것을 깨닫게 됩니다. 오랜 동안 우리는 매우 상세한 구성 플래그를 제공하여 여러분이 최상의 서버 클래스 시스템에 대해 직접 JVM을 구성할 수 있도록 했습니다. 여러분이 플래그를 제대로 설정하는 방법을 알고 계셨다면 대규모 시스템의 성능을 혁신적으로 강화할 수 있었을 것입니다. 우리는 이 모든 구성 옵션들에 지나치게 몰입해 있었고, 실제로 많은 고객들은 이 옵션들 대부분을 무시하고 있었다는 사실을 이제서야 알게 된 것입니다.
따라서 우리가 타이거에 도입하려는 여러 요소 중 한 가지가 바로 소위 "성능 인간공학(performance ergonomics)이며, 이를 적용할 경우 JVM은 시동 시 자신이 속해 있는 환경의 유형을 분석하고 그 동안 사용자가 주로 직접 설정해야 했던 옵션들을 자동으로 구성하게 되는 것입니다. 여러분이 대용량 메모리가 탑재된 대규모 시스템을 사용하고 있다고 가정할 경우, 이 시스템은 높은 쓰루풋을 위해 제공된 많은 옵션들을 사용해야 할 것입니다. 여러분이 이것을 원한다면 여전히 수동으로 이 모든 옵션들을 구성할 수 있지만 본인이 전달하고자 하는 바는 이것을 아예 처음부터 기본값으로 잡아 주자는 것입니다. 아마도 이 것이 수동 구성 작업보다는 훨씬 나은 방법일 것입니다.
세 번째 주제는 모니터링과 관리 용이성에 관한 부분입니다 이 주제와 관련한 목표는 개발자가 JVM과 자바 애플리케이션 내부의 상태를 파악할 수 있도록 하는데 있습니다. 따라서 우리는 새로운 API를 추가하여 성능과 관리 정보를 알 수 있도록 했으며, 동시에 몇 가지 간단한 모니터링과 관리 툴을 J2SE 5.0 릴리즈와 함께 제공하고 있습니다. 가령 JConsole 툴을 예로 들 수 있는데, 사용자는 이 툴을 사용하여 힙(heap) 활용 상태와 현재 실행 중에 있는 스레드 수 등과 같은 다양한 관리 정보를 파악할 수 있습니다.
네 번째는 데스크톱 클라이언트에 관한 사항입니다. 우리는 자바 데스크톱 클라이언트의 성능 뿐 아니라 GUI 룩 앤드 필(look-and-feel)의 수준을 향상시키기 위해 많은 노력을 기울였으며, 또한 우리는 깔끔하고 모던한 크로스 플랫폼 룩 앤드 필(일명 "Ocean")을 새로 추가했습니다
이 외에도 우리는 GUI에 대한 프로젝트 계획을 세워 놓고 있으며, 이미 초기 Microsoft Longhorn 빌드에 대한 타이거 테스트에 들어갔습니다. 개발자들에게 있어서 Longhorn 릴리즈는 매우 중요하므로 우리는 반드시 J2SE가 Longhorn에서 잘 돌아가도록 해야 합니다.
다섯 번째 주제는 이미 앞에서 얘기한 개발 용이성에 관한 부분이며, 여기에는 printf를 비롯한 다양한 API 업데이트가 포함됩니다. 또한 앞 부분에서 언급했던 새로운 언어 기능에 관한 부분도 빠뜨릴 수는 없습니다.
여섯 번째는 코어 XML 지원입니다. 우리는 새로운 버전의 SAX 파서, DOM (Document Object Model) 및 XSLT 변환엔진을 추가함으로써 J2SE의 코어 XML 지원을 업데이트했습니다.
현재 자바 플랫폼 상의 XML과 웹 서비스 지원 분야가 급속하게 발전하고 있으며, java.sun.com을 방문하시면 JWSDP (Java Web Services Developer Pack)와 함께 최신 XML과 웹 서비스 지원을 다운 받을 수 있습니다.
타이거의 가장 중요한 기능
J2SE 5.0의 가장 중요한 기능 한 가지를 꼽으라면 어떤 것을 선택하시겠습니까?
그건 사람마다 다르겠지만, 많은 이들이 제네릭을 가장 선호하는 것 같습니다. 저 개인적으로는 타이거의 가장 중요한 단일 기능은 JSR 175 애너테이션이라고 생각하는데, 왜냐하면 이 기능이 지속적으로 J2EE 5.0에 영향을 미치고 있기 때문입니다. 예컨대, 웹 서비스 메타서비스(JSR 181)에 관한 BEA의 최근 공개용 제안이나 EJB 3.0 (JSR 220)에 대한 초기 제안 내용을 살펴보면 이들의 애너테이션 활용 방식을 알 수 있습니다.
개발자들의 의견
지금까지 개발자들의 반응은 어떻습니까?
전반적으로 반응이 매우 좋으며, 특히 새로운 언어 기능이 높은 점수를 받고 있습니다. 대부분의 자바 커뮤니티가 언어 수정 부분에 대해 신중한 태도를 보이고 있으며, 모두들 제임스 고슬링의 독창적인 언어 설계에 대한 부분을 높이 사고 있습니다. 뿐만 아니라 제네릭, boxing, 그리고 확장 for 반복 구문 등에 대해서도 찬사도 쏟아지고 있습니다. 개발자들은 이번 릴리즈가 매우 성공적이라고 평가하고 있으며, 9 개월 동안의 베타 테스트 기간에 다른 기능들에 대한 반응도 매우 호의적이었습니다
릴리즈 품질에 대한 좋은 의견도 많습니다. 우리는 타이거가 역대 최고 품질의 J2SE 릴리즈가 될 것이라고 확신하고 있습니다. 물론 사소한 버그들 하나 하나를 모두 수정할 수는 없겠지만 전반적으로 품질이 매우 뛰어나고 탁월한 안정성을 지닌 릴리즈를 만들기 위해 우리는 최선을 다하고 있습니다.
"" 저 개인적으로는 타이거의 가장 중요한 단일 기능은 JSR 175 애너테이션이라고 생각하는데, 왜냐하면 이 기능이 지속적으로 J2EE 5.0에 영향을 미치고 있기 때문입니다." "
- Graham Hamilton,
썬마이크로시스템즈 자바 플랫폼 팀
연구원 겸 부사장
타이거 프로젝트는 그 규모가 정말 방대하다고 들었습니다. 이 대규모 작업을 어떻게 무사히 진행시킬 수 있었나요?
|
|
JCP(Java Community Process)를 통해 여러 광범위한 자바 커뮤니티가 타이거 프로젝트에 참여했으며, 이들의 참여가 우리에게 상당한 도움이 되었습니다. 15개의 컴포넌트 JSR(Java Specification Request)이 있었고, 각각 강력한 업계간 협업 전문가 그룹의 공동 작업을 통해 새로운 스펙이 만들어지기에 이릅니다. 도움을 제공한 모든 관계자들에게 감사의 말씀을 드리는 바이며, IBM, BEA, 그리고 Oracle 등과 같은 많은 기업들도 이 스펙의 개발과 개선 작업에 많은 도움을 제공해 주셨습니다. 또한, 학계의 세부적이고 실무적인 도움, 특히 주요 컴포넌트 JSR을 주도하고 이를 성공으로 이끌어 주신 Doug Lea와 Bill Pugh 교수님께 감사의 마음을 전합니다.
썬은 타이거의 스펙 리드(TransDog 주: 스펙을 개발하거나 대폭적인 수정, 스펙에 관련된 RI 및 TCK를 완성하는 데에 있어서 주도적이며 책임있는 역할을 수행하는 전문가)로서의 역할은 물론이고 여러 다른 부분들의 통합, 조정 작업을 무리 없이 수행해 냈습니다. 또한 우리 내부 썬 인력 수 백 명이 동원되어 API 설계나 구현 또는 중요한 플랫폼 테스팅과 안정화 등과 같은 타이거의 다양한 분야의 업무를 처리했습니다. 마지막에 언급한 영역들은 그 과정이나 성과가 눈에 잘 띄지는 않는 것처럼 보일 수 있지만 타이거와 같은 대규모 릴리즈에 있어서 없어서는 안 될 매우 중요한 요소입니다.
우리는 수 많은 노력들을 타이거에 쏟아 부었으며, 또한 최종 릴리즈는 그만한 가치가 있다고 본인은 생각합니다.
참조 페이지- Graham Hamilton blog
- Graham Hamilton at 2004 JavaOne Conference
- The All-New Java 2 Platform, Standard Edition (J2SE) 1.5 Platform: Programming with the New Language Features in J2SE 1.5
- J2SE 5.0 in a Nutshell
- New Language Features for Ease of Development in the Java 2 Platform, Standard Edition 1.5: A Conversation with Joshua Bloch
- Mark Reinhold Weblog
![]() | ![]() |
"썬특집기사" 카테고리의 다른 글
- 파워 오프 자바 (댓글 3개 / 트랙백 0개) 2006/01/01
- 타이거, 포효하다 (타이거 : J2SE 5.0 코드명) (댓글 1개 / 트랙백 0개) 2006/01/01


댓글을 달아 주세요
좋은 정보 감사해요~
2007/09/19 04:54