Bloch씨는 Core Java Platform Group 소속 기술자로서 유명한 Java Collections Framework를 설계, 구현한 당사자다. Bloch씨는 Software Develop-ment Magazine의 Jolt Award 대상을 수상한 ‘Effective Java Programming Language Guide’의 저자이기도 하다. 또한 그는 Carnegie-Mellon University의 컴퓨터 사이언스 박사 학위를 소지하고 있으며 다양한 기사들과 연구 논문을 낸 바 있다. 누구보다도 자바에 대해 잘 알고 있는 그에게 자바 프로그래밍 언어의 향후 전망에 대해 들어본다. | ||
Q:J2SE 의 기능상 개선 사항은 호환성에 영향을 미치지 않고도 보다 정확하고 안전하게 그리고 신속하고 쉽게 프로그램을 개발할 수 있도록 하는데 초점이 맞추어져 있다. 그렇다면 J2SE 1.5(Java 2 Platform, Standard Edition 1.5)에서 개선된 자바 언어의 특징은 무엇인가? | ||
A:새
로운 언어 기능들은 모두 한 가지 공통점을 가지고 있다. 즉, 공통된 표현 형식이 사용되고, 이를 위한 언어적 지원이 제공된다.
다시 말해 프로그래머가 아닌 컴파일러가 반복 사용 코드(Boilerplate code) 기록 작업을 대신 수행하게 되는 것이다.
따라서 쓰기 및 읽기 작업이 쉬워지며, 또한 프로그래머와는 달리 컴파일러는 절대로 실수를 하지 않으므로 최종 코드에서 버그가
발생할 가능성도 그만큼 줄어들게 된다. | ||
![]() | ||
Q:개발자가 수정하는데 가장 곤란을 겪게 될 사항으로는 어떤 것이 있는가? | ||
A:특
별히 개발자가 수정할 필요가 있는 부분은 없지만, 굳이 한 가지를 꼽으라면 개발 언어의 Generic을 들 수 있다. 선언문에
추가 정보를 제공해야 하는 경우가 발생할 수 있기 때문이다. 이 경우에는 a대신 b와 같이 수정한다. | ||
Q:썬 마이크로시스템즈가 지난 2월 10일 J2SE 1.5 베타판을 발표했다. 이번 버전의 수정 부분은 전적으로 JCP(Java Community Process)를 통해 이루어졌다. 수정 사항들이 현 시점에서 정확하게 구현이 될 것인지, 또 개발자들은 어떤 형태로 참여하게 되는지 궁금하다. | ||
A:AJSR(14,
201 및 175)과 관련한 전문가 그룹이 현실적으로 구현 가능한 초안을 다듬었다. 이 초안의 전체적 내용은 최종 릴리즈와 별
차이가 없을 것이라고 확신한다. 가장 바람직한 개발자의 참여 방법은 우선 제시된 안을 살펴보고 관련 전문가 그룹에게 의견을
전달하는 것이다. Generics에 관한 최근 초안의 내용은
http://jcp.org/aboutJava/communityprocess/ review/ jsr014/에서 볼 수 있다. 또한
http://developer.java. sun.com/
developer/earlyAccess/adding_generics/에서 임시 버전의 컴파일러를 다운받아 활용하면
generics에 대한 이해를 높일 수 있고, 시험 작업을 시도하는데 도움이 될 것이다 | ||
Q:새로 향상된 6가지 기능에 대해 간략하게 설명해 달라. | ||
A:새
로운 언어 기능들은 모두 한 가지 공통점을 가지고 있다. 즉, 공통된 표현 형식이 사용되고, 이를 위한 언어적 지원이 제공된다.
다시 말해 프로그래머가 아닌 컴파일러가 반복 사용 코드(Boilerplate code) 기록 작업을 대신 수행하게 되는 것이다.
따라서 쓰기 및 읽기 작업이 쉬워지며, 또한 프로그래머와는 달리 컴파일러는 절대로 실수를 하지 않으므로 최종 코드에서 버그가
발생할 가능성도 그만큼 줄어들게 된다. | ||
Q:J2SE 의 기능상 개선 사항은 호환성에 영향을 미치지 않고도 보다 정확하고 안전하게 그리고 신속하고 쉽게 프로그램을 개발할 수 있도록 하는데 초점이 맞추어져 있다. 그렇다면 J2SE 1.5(Java 2 Platform, Standard Edition 1.5)에서 개선된 자바 언어의 특징은 무엇인가? | ||
|
Q:현재 specifics로 옮겨가고 있는 추세이며, generics는 이미 시작됐다고도 볼 수 있다. 그렇다면 요즘의 컬렉션 필터링과 generics를 사용한 컬렉션 필터링은 어떻게 다른가? | ||||||
A:우선 요즘에 사용하는 컬렉션 필터링 방법은 다음과 같다. | ||||||
Q:향상된 for 반복문(enhanced for)’에 대해 알고 싶다. | ||||||
A:컬 렉션 반복(Iterating) 작업은 차라리 하지 않는 것보다 못하다. 왜냐하면 컬렉션 반복 작업이 이루어지는 동안 대부분 구성 요소(Element)를 액세스하는 경우를 제외하고는 반복자(Iterator)를 사용할 일이 없기 때문이다. 반면, ‘Enhanced for’문은 컴파일러로 하여금 반복자를 처리할 수 있도록 한다. 반복자를 사용하여 Timer Task 컬렉션을 Traverse하는 방법을 예로 들어보자. | ||||||
| ||||||
Q:Autoboxing에 대해서도 설명해 달라. | ||||||
A:이
미 알고 있듯이 Java 프로그래밍 언어에는 ‘분리형 시스템(Split Type System)’이 사용된다. 이 중 일부
타입으로 기본형(Primitives)과 객체 참조형(Object References)을 들 수 있다. 한편, 기본형은 컬렉션에
포함시킬 수 없다. 컬렉션에 저장할 필요가 있을 경우에는 결국 int 같은 기본형과 integer 같은 랩퍼형 간을
전환시켜주어야 한다. 하지만 이 작업의 결과가 그다지 만족스러울 수는 없다. 다음 프로그램을 예로 들면, 커맨드 라인에 워드
도수분포표가 생성된 것을 알 수 있다. 여기에는 Map이 사용되는데, 이 Map의 키는 워드를, Map의 값은 라인에 각 워드가
발생한 횟수를 나타낸다. | ||||||
| ||||||
Q:그렇다면 새로운 typesafe enum 언어 기능은 Typesafe Enum 패턴과 어떤 연관성을 가지고 있는가? | ||||||
A:근사 해석법 차원에서 보면 단순히 패턴에 대한 언어적 지원이라 할 수 있다. 패턴과 관련한 오류 유발성 코드(error-prone code)는 우리에게 익숙한 C/C++ enum 선언과 유사해 보인다. [출처] J2SE 1.5 환경에서의 개발 능력 향상과 새로운 개발 언어의 특징|작성자 글쎄 |