Eclipse 3.1 새로운 사항
이클립스 3.4 가니메데가 나온 이 시점에 이클립스 3.1의 새로운 사항이라니 제목을 잘못적었나? 컴퓨터 자료를 정리하다가 예전 블로그에 올려둔 자료를 찾아서 다시 올린다. 2005년 7월쯤 작성한 자료인데 지상렬식 문장 구성의 예전 번역물을 보니 조금 부끄럽다. 이때 새롭게 등장한 많은 기능과 프로젝트들이 이제는 이클립스의 핵심 기능이 되었고, 메인 프로젝트로 안정화 되었다.
이 기사 외에도 이클립스 관련 문서를 몇 개 더 찾았는데 당시에는 워드로 문서를 만들어서 PDF로 공유했기에 정리가 필요하다.
Eclipse 3.1 새로운 사항
원문: http://java.sys-con.com/ read /99729_1.htm
번역: 김성안 (ccoroom@gmail.com), www.pragmatic.kr
Eclipse는 2001년 처음으로 배포 된 이후로 Java 개발 환경으로 유명해졌다. 2005년 3월 10일에서 5월 11일 사이에 하루 동안 평균적으로 정식 버전의 SDK는 17,000 카피가 다운로드 되었고 3,500여 카피의 안정버전의 개발 중인 SDK가 다운로드 되었다. 개발자와 플러그인 제공자, 저자 그리고 블로거로 구성된 Eclipse 생태계가 그에 따라 성장하였다. Eclipse는 또한 BEA, Borland, IBM, SAP와 SyBase와 같은 핵심적인 Java 벤더의지원을 얻었다. 개발자들은 Eclipse가 Java 어플리케이션 개발을 위한 훌륭한 플랫폼을 제공하기 때문에 좋아하고 회사들은 하나의 오픈소스 우산(umbrella)아래 소프트웨어 도구를 통합하기 때문에 Eclipse를 좋아한다.
올해(2005년)의 늦은 6월 eclipse.org에서 3.1 버전의 Eclipse 플랫폼을 얻을 수 있을 것이다. 이 기사에서는, Eclipse 3.1이 포함할 새로운 기능들에 대해서 강조할 것이다. 또한, 몇몇의 Eclipse 3.1과 함께 새로운 버전으로 배포 될 몇몇의 Eclipse 프로젝트에 대해서도 논의할 것이다.
개발자들의 새로운 희망
Eclipse 3.1의 혁신적인 변화는 하나는 J2SE 5.0 (예전에는 J2SE1.5라고 불렸던)의 완벽한 지원이다. Generics, annotations, enums, auto boxing, 향상된 for 루프문, 등의 모든 J2SE 5.0의 기능을 컴파일러 뿐만 아니라 UI와 코드 어시스트에서도 지원한다. Eclipse 3.1은 향상되고 새로운 리팩토링과 코드 어시스트 그리고 퀵 픽스(quick fix)를 J2SE 5.0과 결합하여 지원한다. 예를 들어, 그림 1과 같이 배열만큼 반복하는 일반적인 for 루프문 커서를 위치하고서 Ctrl+1 을 누르면 그림 2와 같이 Eclipse는 새로운 형태의(J2SE 5.0에서 지원하는 향상된 스타일의) for 루프문으로 변경할 수 있도록 해줄 것이다.
그림 1. 일반적인 배열을 향상된 for 배열로 변경하기 위해 Ctrl+1을 누름
그림 2. J2SE 5.0의 향상된 for 루프문으로 변경한 후
Eclipse의 Java 지원의 핵심은 완벽하게 호환되는 Java 컴파일러이다. Java로 작성되었으며 Java언어 1.3, 1.4, 5.0을 지원한다. 자신만의 컴파일러를 가지므로 Eclipse 는 빠른 호환성(compilation) ,부드러운 디버깅과 리팩토링 그리고 수많은 경고(warning) 의 진단 등의 장점을 가진다. Eclipse 외부에서의 사용도 많이 발견할 수 있다. 수많은 유명한 Linux 배포판과 상용 어플리케이션에 포함되었으며 최신 버전의 Apache Tomcat에서는 JSP를 컴파일 하기 위해서 Eclipse 컴파일러를 사용한다. 또한 Eclipse 컴파일러는 AspectJ 컴파일러의 기본을 구성한다. 그리고 최근에 발표된 Apache Harmony 프로젝트에서 Eclipse 컴파일러를 사용한다는 것은 별로 놀랍지 않다.
다른 편리성 향상이 Eclipse 3.1을 좀 더 생산적으로 만든다. 예를 들어, 새로운 배포판의 새로운 통합된 도움말 시스템은 사용자가 하는 작업에 따라서 변화한다. 또 하나의 커다란 향상은 설정(preferecnce) 영역 이다. 사용자의 요청에 따라 설정 다이얼로그는 키워드에 의해 필터링 할 수 있는 기능을 지원한다. 예를 들어, “tabs”를 사용 하는 모든 옵션을 필터 박스에 입력함으로써 찾아낼 수 있다. 게다가, 웹 스타일의 네비게이션이 설정 다이얼로그의 링크에 추가되었고 앞으로 가기와 뒤로 가기 히스토리 기능이 지원된다.
설정을 더 쉽게 찾기 위해 Eclipse 3.1 에서는 많은 에디터(editor)와 뷰(view) 는 컨텍스트 메뉴(context menu –팝업 메뉴) 를 통해서 직접 설정 다이얼로그를 열 수 있다. 예를 들어, Java 에디터에서 오른쪽 마우스를 클릭하고 Preferences (설정) 를 선택 하면 다이얼로그가 나타난다. 다이얼로그는 오직 Java 편집에 관련된 옵션과 Java 에디터가 텍스트 에디터로부터 상속받은 옵션들만을 포함할 것이다.
Eclipse 3.1은 최신의 Ant 와 Ant 스크립트 디버거(그림 3)를 포함함으로써 향상된 Ant의 지원을 제공한다. 또 다른 환영할 추가사항은 Ant 빌드 파일로부터 프로젝트를 import할 수 있다는 것과 존재하는 프로젝트로부터 Ant 빌드 파일을 생성해서 export 할 수 있다는 것이다. 이를 통해, 몇 번의 클릭만으로 build.xml 파일과 CLASSPATH를 동기화 할 수 있다. 생성된 build.xml 파일은 간단하며 깔끔하며 build-user.xml을 제공함으로써 사용자가 override할 수 있도록 하면서 생성된 build.xml 파일의 장점은 유지한다. import/export 기능은 eclipse2ant plugin 을 만든 Richard Höfter의 기여에 바탕을 두고 있다.
한 가지 주목할 만한 점은 새로운 기능들이 성능 하락을 가져오지 않는 다는 점이다. Eclipse 3.1은 같은 작업에서 3.0보다 더 작은 양의 메모리를 사용하면서 더 많이 빠르다. 못 믿겠다고? 다운로드 페이지에서 최신 빌드의 성능 테스트 결과를 확인해 보라. 이러한 향상은 윈도우 사용자에게만 해당하는 것은 아니다. Mac과 Linux 사용자들은 이러한 플랫폼에의 특별한 관심을 알 수 있을 것이다. 그래프가 모든 것을 말해주지는 않지만 Eclipse 3.1은 사용하면서 이전 버전보다 더 빠르다는 것을 발견했다.
그림 3. Ant 디버거 (Java 프로그램에서와 같이 Ant 스크립트를 한 단계씩 시험해 볼 수 있다.)
개발자들이 크고 복잡한 프로젝트에서 작업할 때 IDE는 최상의 상태로 프로젝트를 유지해야 한다. 큰 워크스페이스가 가지는 문제점을 경험하고 연구하기 위해서 플랫폼 팀은 135개의 개별적인 프로젝트와 70,000개의 클래스와 다른 리소스를 만들었다. 그리고 나서, 성능측정(profiling) 도구 를 이용하여 메모리 사용과 I/O에 관련된 많은 병목현상을 식별하고 해결하였다. 결과적으로, Eclipse 3.1은 더 큰 문제를 전보다 더 적은 시간에 다룰 수 있게 되었다. 테스트 워크스페이스를 시작(launching)하는데 2분 가까이 걸렸었지만 Eclipse 3.1에서는 10초 아래이다.
다시 Java 클라이언트로 환경으로
Java는 데스크톱(desktop) 으로 시작하였고 지금은 서버 사이드로의 소풍을 마치고 다시 데스크톱 환경으로 돌아오고 있다 . 리치 클라이언트 플랫폼(Rich Client Platform, RCP) 은 이러한 부흥기 를 활기 차도록 도울 것이다. RCP는 어플리케이션 개발을 위한 프레임 웍으로 Eclipse의 일부분이 다. RCP는 화면을 구성하는 위짓(Widget) 툴 킷인 SWT, 플러그인 로더(plug-in loader), 도움말 시스템과 개발하는 프로그램 에서 사용 가능한 다른 컴포넌트들을 포함한다.
자유롭고 무료인 “클라이언트 미들웨어(client middleware)”의 이점을 취함으로써 핵심 역량과 시장 진입을 위한 시간(time-to-market)을 줄이는데 집중할 수 있다. Eclipse’s corporate-friendly license (EPL)을 통해 오픈소스로 코드를 공개 하지 않아도 Eclipse의 코드를 재사용할 수 있다. Eclipse의 코드를 수정하고 재배포하는 것도 가능하다.
Eclipse 3.1의 RCP의 커다란 변화는 RCP 어플리케이션을 생성, 빌드, 브랜드화(branding)하고 배포할 수 있는 마법사와 에디터를 제공한다는 점일 것이다. RCP 어플리케이션을 만들고자 한다면 단순히 플러그인 프로젝트를 생성하고 “Create an RCP application”체크박스를 클릭하고 템플릿을 선택 한 후 Finish 버튼을 클릭하면 된다. 추가적인 몇 번의 클릭만으로 프로젝트를 배포 가능한 어플리케이션으로 export하는 것이 가능하다. 더 이상 플러그인 의존성(plug-in dependencies )과 설정파일 수정 그리고 손으로 플러그인을 복사할 필요가 없다. 이러한 모든 작업들 을새로운 배포판에서 처리한다.
새로운 Product Configuration Editor를 통해 브랜드화된 어플리케이션을 생성할 수 있다. Window 타이틀, 아이콘 과 스플래쉬(splash) 스크린 그리고 다른 브랜드화된 요소들을 프로그램에서 쉽고 빠르게 변경할 수 있다. 그리고 RCP Delta Pack을 이용하여 모든 지원하는 플랫폼에 해당하는 배포판을 동시에 만들 수 있다. (그림 4)
그림 4. 새로운 export 마법사 (몇 번의 클릭으로 브랜드화된 다수의 플랫폼에 해당하는 배포판을 만들 수 있다.)
RCP 어플리케이션은 동적인 플러그인의 장점을 얻을 수 있다. 즉, 플러그인이 런타임에 배포 가능 하다. 이러한 성질은 유연한 RCP 어플리케이션 배포(delivery) 모델을 제공한다. 커다란 어플리케이션은 플러그인이 로드되면서 또는 새로운 기능의 요구에 따라 점진적으로 배포될 수 있다. 이러한 기술은 원래 OSGi 서비스 플랫폼의 일부분으로 이동전화를 위해 설계되었다. Eclipse는 OSGI의 활발한 참여자이고 Eclipse 3.1은 OSGi 버전 4표준에서 지원할 예정인 많은 기능을 포함한다.
EclipseCon에서 보였던 one proof-of-concept 예제에서 개발자들은 처음에는 더하기와 빼기 버튼만을 가진 계산기 프로그램을 선보였다. Eclipse의 Update Manager 와 동적인 플러그인을 사용하여 계산기는 새로운 플러그인을 다운로드 하여 곱하기 버튼을 추가하였다. 이러한 모든 작업이 재시작 없이 동작하는 JVM에서 처리되었다.
RCP 기반 어플리케이션 에서 대해 가장 자주 질문하는 것 중에 하나 는Java Web Start를 이용하여 배포할 수 있냐는 것이다. Eclipse 3.1에서는 가능하다. 새로운 export 마법사는 쉽게 가능하게 한다. JAR에 서명하고 .jnlp 파일로 템플릿을 생성해 주기까지 한다. Java Web Start 지원에서 대부분의 Eclipse 플러그인은 기존의 Java의 .jar파일로 변환된다. 확장점, 플러그인 의존성 등의 정보는 JAR파일 안의 manifest 파일에 포함된다.
Eclipse 3.1에서는 클라이언트 개발자는 어플리케이션이 전보다 더 좋게 보이고 더 나은 기능을 가지도록 하는 UI 향상의 이득을 얻을 수 있다. 예를 들어, SWT는 두 개의 새로운 위짓( widget )을 포함한다. 수적인 데이터를 등록하는 Spinner 위짓 과 하이퍼링크(hyperlink) 를 텍스트 레이블에 포함 될 수 있는 Link 위짓이 그것이다. 많은 다른 위짓들 또한 성능향상 되었다.
이제는 Tree 위짓이 컬럼(column)을 지원한다 (이전의 TableTree 위짓은 deprecated 되었다.) . 이것은 TableTree 위짓을 이용 시 생기던 미묘한 문제 (첫 번째 컬럼에는 이미지를 삽입할 수 없던 것과 같은 문제) 를 해결 할 수 있 고 native 구현을 허락한다. 또한, Table 위짓 은 많이 요청되던 기능인 컬럼을 드레그 앤 드랍(drag and drop) 해 순서를 바꿀 수 있는 기능을 수용하였다. 늦은 로딩을 지원하는 Virual table도 지원된다.
Browser 위짓 역시 지속적인 관심을 받고 있다. 이 위짓은 Windows 의 IE나 Mac 의 Safari와 같은 특정 플랫폼의 원시적인 HTML 브라우저를 감싼다 . 이벤트 메커니즘을 포함한 많은 다수의 조그마한 성능향상이 있다. 아마도 가장 흥미로운 기능은 현재 로드된 페이지 의 임의의 JavaScript 를실행할 수 있는 능력일 것이다.
또 다른 성능향상을 보인 부분은 SWT 그래픽 이다. Eclipse 3.1은 alpha blending, anti-aliasing, 기하학적인 모형과 선을 위한 paths 그리고 transformations를 지원한다 (그림 5) . Windows에서는 이러한 새로운 기능들은 Microsoft GDI+ 라이브러리 를 이용하여 이점을 얻 는다 (Windows XP와 2003에 기본으로 포함되어있으며 기존의 시스템에는 추가적으로 다운로드 하여 설치할 수 있다.) . GTK와 Motif에서는 Cairo 그래픽 라이브러리를 이용하여 새로운 그래픽을 구현하였다.
그림 5. SWT의 alpha blending과 anti-aliased 텍스트 지원
커뮤니티의 반격
커뮤니티의 관련은 Eclipse를 성공으로 이끈 매우 중요한 요소이다. 훌륭한 Eclipse 커뮤니티의 일원 으로서 개선사항 을 제안하거나 발견한 버그를 레포팅하 는 것 이 필요하다. 소스코드는 공개되어있기 때문에 다음단계를 작성하거나 패치를 작성해 보내는 것이 가능하다. 7,000개 이상의 개성사항에 대한 요구와 버그 리포트가 Eclipse 3.1 배포에 언급되었다.
새로운 프로젝트와 함께 Eclipse 커뮤니티는 계속해서 커지고 있다. 수십 개의 새로운 프로젝 트제안 이 대기 중이고 최근에 승인되었다. 이들 중 다수는 다수의 사용자 그룹이 필요성을 해결하기 위해 모인 "기술"프로젝트이다. 예를 들어, Mylar 프로젝트는 the University of British Columbia 가 프로그래밍 중에 중요치 않은 클래스와 산출물을 필터링 함으로써 정보 부하(information overload) 문제를 해결하기 위해 제안했다.
Eclipse Platform 3.1 버전의 배포에 따라서 다수의 Eclipse 프로젝트가 배포될 것으로 예상된다. 이들 중 가장 주요한 프로젝트 중 하나로 Web Tools Platform 프로젝트 (줄여서 WTP) 가 늦은 7월 새로운 버전의 배포를 계획하고 있다. WTP는 IBM과 ObjectWeb 의 기여에 의해 시작 되었지만 최근에 합류한 BEA를 비롯한 커뮤니티의 많은 회사들과 개인이 현재는 WTP 에 대한 작업을 하고 있다.
Web Tools Platform은 현재 두 개의 서브 프로젝트를 포함한다. Web Standard Tools (WST)와 J2EE Standard Tools (JST) 가 그것이다.
WST는 웹 어플리케이션 개발을 위한 공통적인 기반환경을 제공 하고 에디터(editor), 검증기(validator) 와 다양한 종류의 웹 언어 (HTML/XHMTL, CSS, JavaScript, Web services, SQL, XML, XSD, WSDL, 등) 를 위한 문서 생성기를 지원한다.
웹 어플리케이션을 배포나 공개(publish) 할 수 있고 실행과 디버깅 과 타겟 서버에서 웹 어플리케이션을 시작하거나 정지할 수 있다 (그림 6). WST는 또한 HTTP 트래픽 (SOAP Web services 를 포함) 을 디버깅하기 위해 TCP/IP 모니터 서버 와 테스팅을 위해 손쉽게 사용할 수 있는 Web services 탐색기를 포함한다. 현재 WST는 관계형 데이터베이스 관리와 쿼리도 지원하고 있다. 이 기능은 아마도 곧 새로운 Data Tools 프로젝트로 옮겨질 것이다.
JST는 J2EE 어플리 케이션과 서버를 지원하기 위해 WST를 확장한다. 도구의 범위 는 개발을 단순화하기 위 해 JSP, JCA, JDBC, JTA, JMS, JMX, JNDI ,Web services 와 같은 J2EE API 의 지원에 있다. JST는 J2EE 서블 릿 엔진과 EJB 컨테이너(Apache Tomcat, apache Geronimo과 ObjectWeb Joans 와 같은)를 지원하기 위해 WST 를 기 반으로 제작되었다. 서버 벤더들 의 자신들의 서버를 지원하기 위한 어댑터를 개발을 장려한다.
그림 6. WST (톰캣과 같은 다수의 오픈소스 서버에 대한 지원이 포함될 것으로 기대된다.)
또 다른 기대되는 프로젝트는 Business Intelligence and Reporting Tools (BIRT) 프로젝트이다. BIRT 1.1은 7월을 목표로 개발되고 있고 Eclipse 3.1을 기반으로 할 것이다. 현재 BIRT는 세 개의 컴포넌트를 포함한다.
-
XML 리포트 템플릿을 설 계하고 개발하기 위한 Report Designer
-
XML 템플릿을 기반으로 리포트를 생성하는 Report Engine (독립된 어플리케이션으로 사용할 수도 있고 다른 어플리케이션에 포함해서 사용할 수도 있다.)
-
BIRT 리포트 를 또는 독립된 API (Swing이나 SWT 어플리케이션에 차트를 그리기 위해) 를 이용하여 차트를 만들어 주는 Chart Engine
BIRT의 차후 계획에는 웹기반의 Report Designer도 포함된다.
예전에는 Hyades로 알려졌던 Eclipse Test and Performance Tools Platform Project (TPTP) 의 4.0 버전 배포가 7월 중에 예정되어있다. TPTP 네 개 분야의 컴포넌트를 포함한다.
-
공통된 UI 와 표준 데이터 모델을 가진 테스팅 도구를 제작하기 위한 플랫폼
-
Web 서버 분석과 같은 모니터링 도구
-
JUnit 지원을 포함하는 테스트 도구
-
추적(tracing)과 프로파일링 (profiling) 도구
TPTP 4.0은 향상된 JUnit 통합 을 지원하고 테스트 케이스를 요구사항과 결함과 쉽게 링크시킬 수 있 으며 향상된 사용성을 지원한다.
Visual Editor (VE) 프로젝트의 1.1 버전은 Eclipse 3.1이 배포되고 약 2주 후쯤에 배포될 것이다. 주목할 만한 사항은 아래와 같다.
-
새로운 SWT 컨트롤 지원
-
향상된 Swing 테이블 지원
-
복사/ 붙여넣기 지원
-
Eclipse View 의직접적인 수정 지원 (특히 RCP 프로그램에 유용함)
-
향상된 코드 생성과 역 파싱(parsing) – 좀 더 손으로 작업한 모양의 코드 제공
AspectJ Techonology Project 는Eclipse 3.1이 배포된 후 곧 AspectJ 5.0을 배포할 것이다. 새로운 버전은 J2SE5의 기능을 완벽하게 지원하고 AspectWerkz 스타일 코드의 통합 , 향상된 배포( 특히 컨테이너 기반환경에서 향상됨) , 빨라진 성능 그리고 더 다양해진 IDE 지원 을 포함한다. 예를 들어, 제네릭(generics )은join points, pointcut, advice와 inter-type declarations와 같은 AOP 언어의 기능과 통합될 것이다. 어노테이션(Annotation) 은 순수한 Java 소스 파일을 AOP에 제공하므로 계속해서 마음에 드는 Java 컴파일러를 사용하고 나서 다음 빌드 단계 또는 클래스가 로드 되었을 때 aspect으로 엮을 수 있다.
J2EE 컨테이너에 배포하는 것은 쉬워졌고 컴파일과 aspect 엮어내는 것은 전보다 빨라졌으며 향상된 코드를 생성해 낸다. 클래스 로딩과 런 타임에 AspectWerkz을 이용하여 aspect을 엮어내는 편리한 기능 역시 지원된다.
AOP에 흥미를 느낀다면 Concern Manipulation Environment (CME) 프로젝트 를살펴보고자 할지도 모르겠다. CME는 강력한 코드 네비게이션 기능을 제공해 존재하는 Java 코드에서 크로스 커팅(cross-cutting) aspect를 식별하는데 도움을 줄 것이다.
결론
Eclipse가 등장한 4년이라는 짧은 시간 만에 Eclipse는 Java IDE 시장에서 우위를 차지 하였다. 세계 곳곳에서 사용자 그룹이 만들어졌고 Eclipse에 관한 많은 책과 기사가 나왔다. Eclipse 3.1 에서의 J2SE5의 지원과 성능향상 그리고 리치 클라이언트 와 같은 기능의 개발 에 대한 노력은 올해의 가장 가치 있는 일이다. 이것으로 충분하지 않을지 모르지만 Eclipse Foundation과 파트너의 다음 소프트웨어 배포판의 흐름을 위한 기본이 될 것이다. 킬러 어플리케이션(Killer App) 을개발하고자 하는 프로그래머이거나 오픈소스 위에 비즈니스 모델을 구축하고자 하는 기업가이거나 Eclipse에 동참할 수 있는 흥미로운 시기이다.
감사의 글
Chris Gross, Philippe Ombrédanne, Ng Chin Kiong, Sam Mesh, Bob Foster, David Orme, mgallego, lmandel 그리고 nobodaddy와 같은 www.eclipsepowered.org의 많은 독자들에게 감사한다. 그리고 우리가 드레프트 버전을 작업했던 Eclipse Wiki (http://eclipse-wiki.info) 사이트를 관리하는 Xavier Méhaut 에게는 특별히 감사한다.
© 2005 SYS-CON Media Inc.
이 글은 스프링노트에서 작성되었습니다.
'개발 이야기' 카테고리의 다른 글
| [스크린캐스트] 자바 개발자를 위한 이클립스 3.4 가니메데 (0) | 2009/12/06 |
|---|---|
| 자바 개발자를 위한 이클립스 3.4 가니메데 (0) | 2009/12/06 |
| Eclipse 3.1 새로운 사항 (0) | 2009/12/06 |
| 플러그인 스파이(Plug-in Spy) (0) | 2009/12/06 |
| Eclipse 애플리케이션에서 웹 브라우저 띄우기 (0) | 2009/12/06 |
| Snow Note (0) | 2009/12/06 |



