반응형

이클립스에서 SVN 사용시 업데이트 또는 커밋시 Checksum 관련 에러가 간혹 발생한다.

svn: Checksum mismatch for while updating 

또는

svn: Working copy 'xxxxxxxxxxx' locked; try performing 'cleanup'

위와 같은 에러 발생시 해결 방안

1. 프로젝트 Cleanup
   1) 해당하는 프로젝트 우클릭 > Team > Cleanup

위 방법으로 해결이 안될 시 아래 방법 시도

2. 탐색기로 해당 파일이 있는 폴더 삭제(주의요망!!)
   1) 탐색기로 해당하는 프로젝트 접근 > svn 에러가 발생한 상위 폴더 삭제
    (예로 testSrc/test.jsp 에서 에러가 발생했다면 testSrc 폴더를 삭제)
    !!주의  절대 이클립스로 삭제하면 안됨. 탐색기에서 삭제 해야 한다.

   2) 이클립스의 svn으로 다시 싱크를 맞추고 진행

 

 

반응형

이클립스 내에서도 메신저를 사용할 수 있다고 하네요.

업무 틈틈히 메신저를 켜지 않고도 이클립스를 통해 메신저가 가능하니 편할꺼 같네요.

그리고 농땡이 부리는 것 같이 보이지도 않으니... +_+

자 설명을 시작하도록 하죠.

일단 메뉴의 Help > Software Updates 에서 Available Software 탭을 선택하고
Add Site 버튼을 눌러서 http://download.eclipse.org/rt/ecf/2.1/3.4/updateSite/site.xml 을 추가
이클립스 3.4에서 돌아가는 2.1버전의 ECF를 설치 하면 하면된다.

다를 이클립스 버전은 http://www.eclipse.org/ecf  참고



MSN과 IRC default로 지원하고 , Jabber API를 사용하는 구글토크는 XMPP 항목을 이용하면 된다.

참고로 스카이프는 default 에서 빠져 있으므로 위와 같은 방법으로 추가 하면 된다.
http://ecf1.osuosl.org/update/2.0/site.xml



Communications 퍼스펙티브의 툴바를 보면 각 메신저 항목들을 확인할수 있다.


MSN 메신저에 로그인 해보자.


로그인된 화면이다.


여기서 대화하고자 하는 상대를 더블클릭하면 채팅창이 뜬다.


그리고 참고로 Skype 메신저를 사용하기 위해서는 프로그램이 설치되어 있어야 한다.
Skype 메신저에 로그인 한 다음 이클립스에서 Skype 로그인 할 경우 실행중인 스카이프에 신호가 온다.

이러헤 인증을 해부면 eclipse에서 사용이 가능하다.

관련 정보
http://www.okjsp.pe.kr/seq/131593 okjsp techtrend article
ECF; Eclipse Communication Framework
http://www.eclipse.org/ecf
http://download.eclipse.org/rt/ecf/2.1/3.4/updateSite/site.xml

skype provider (맥용만 없음)
http://ecf1.osuosl.org/update/2.0/site.xml
dev wiki
http://wiki.eclipse.org/index.php/Skype_Provider
skype java api
https://developer.skype.com/wiki/Java_API

반응형


이클립스를 에서 BUILD_PATH를 변경해서 사용하자.

- 왜?   자바 API 코드를 보고 싶으니까..

그리고 Java API Docs(도움말) 설정하는 방법도 알아보도록 하자.

-왜? 도움말을 한글 도움말로 설정도 할수 있고 외부라이브러리 도움말도 볼수 있게 할수 있으니까.

일단 설정을 위해 이클립스 프로젝트 구조를 보도록 하자.



일단 설정을 위해 주의깊게 봐야할 것은 JRE System Libray[jre1.6.0_03] 이부분이다.

일단 어느 부분때문에 설정을 하면 더 편리한지 이유나 알아보고 설정하자.



왼쪽은 Declaration 뷰의 모습이고 오른쪽에 떠있는 것은 Java API Docs (이하 도움말이라 칭하자) 의

출력 상태를 보여준것이다.

기본적으로 Java 에서 지원하는 클래스의 메소드의 도움말은 영문 도움말이 뜰것이고 Declaration은 볼수가 없다.

아.. 굳이 내가 영어가 약하기 때문에 한글로 된 도움말이 필요한게 아니다. ㅡㅡ;

단지 도움말이 한글로 떳으면 바랄 뿐이고 자바의 클래스나 메소드의 소스 코드를 볼수 있길 바랄 뿐이다.

원하는 메소드를 클릭하고 F3 을 눌러 소스코드를 한번 보라..

소스코드 대신 다른 것이 나온다. 소스코드를 찾을수 없다는 것이다.

소스코드를 보기 위해서는 먼저 플러그인을 추가해 줘야 한다.


방법1. 플러그인 추가.

<자바디컴파일러 추가부분 09년 1월 6일 >

http://www.pmguda.com/276 (Jad Decompiler 사용법)

이클립스 디컴파일러인 JAD를 설치하는 방법입니다.

이클립스로 개발을하다보면 F3버튼으로 열심히 따라가는 경우가생깁니다.

그러다 라이브러리로 묶여있는 클래스파일들을 로딩하게되면 읽긴읽되 내용을 분석하지못하죠~

그래서 디컴파일러 ~ 컴파일한클래스파일을 다시 자바파일로 보여주는 도구를 설치하게되면

클래스파일도 자바파일처럼 열수있게됩니다^^~

우선 jad.exe, jadclipse_3.1.0.jar를 다운로드 합니다.

jad.exe파일은 이클립스 폴더에 jadclipse_3.1.0.jar파일은 플러그인 폴더에 카피합니다.

window->preference->general->editors->file assosiationsd에서 *.class선택후

하단의 JadClipse Class File Viewr 를 선택후 default 를 선택합니다.

window->preference->java->JadClipse를 선택한후 ignore existing source를 체크해줍니다.

이렇게하시고 이클립스를 실행시키시면 *.class파일을 찾아갈경우 자동으로 디컴파일해줍니다~

http://sourceforge.net/projects/jadclipse

</자바디컴파일러>

방법2. JDK 설정

JRE System Libray[jre1.6.0_03] 이부분 문제인 것이다. JRE에는 소스코드가 포함되어 있지 않기 때문

Java Runtime Environment  이기 때문에 실행만을 위한 것이기 때문이다.

build path 를 JRE 가 아닌 JDK로 바꿔주면 된다. JRE 와 JDK 의 차이는 모두다 알고 있을꺼라 생각한다.^^

메뉴 항목에서 Window -> Preferences 를 선택한다.


Java -> Installed JREs

이클립스에서 인식하고 있는 JRE 목록이 출력된다.

나는 각 버전별로 설치가 되어있지만 나타나지 않는군.. Search로 찾아보자.

Java 가 설치된 경로를 찾아 지정해 준다.  그러면 지정한 위치에서 설치된 Java 목록을 추가해서 보여준다.


다 검색되서 나온다.. 여기서 JDK 버전을 원하는 것으로 선택하고 OK 하면 된다.

일단 여기까지가 F3키를 누르거나 Declaration 뷰를 통해서 소스코드를 볼수 있게 하는 설정방법이다.

이렇게 해도 소스코드가 보이지 않는다 하면 설정부분을 또 확인해 보자.


Explorer -> JRE System Libray -> rt.jar -> 마우스 오른쪽 클릭 -> Properties 선택

Location path에 설정한 JDK디렉토리에 가보면 src.zip 이라고 압축되어져 있는 소스 파일이 있다.

설정하도록 하자 기본적으로 PATH는 아래와 같다.

ex) C:\Program Files\Java\jdk1.6.0_10\src.zip  <-- 이런식으로 설정해주면 소스 내용을 볼수 있다. 

방법1은 라이브러리에 포함된 클래스 파일을 디컴파일해 보여주는 것이고
방법2는 JDK에 포함된 소스 코드를 보여주는 것이다. 

이젠 도움말이 한글로 뜨길 바랄 뿐이고.. ㅎㅎ 시작해보자.

이것 또한 Package Explorer(탐색창) 에 있는 JRE System Libray 를 보도록 하자.

JRE System Libray 옆 + 아이콘을 클릭하면 jar 파일들의 목록이 나온다.

여기서 rt.jar  runtime java를 나타내는 즉 jvm이 돌아갈 때 기본적인 자바 api를 담고 있는 파일이다.

Package Explorer -> JRE System Libray -> rt.jar -> 마우스 오른쪽 클릭 -> Properties 선택

Location path를 지워준다.
이런 이걸 지우면 Declaration 뷰에서 소스 코드가 보이지 않는다.
(방법1 플러그인 설치시) F3 을 이용하면 볼수 있으니 도움말을 한글로 보기 위해서 과감히 지워주도록 하자.


그리고 Javadoc Location 에 한글 api 경로를 입력해주자.
한글API가 파일시스템에 있다면 파일시스템의 경로를 입력하고 없다면 웹주소를 입력해주도록 하자.
(내가 사용하는 한글API URL이다. http://xrath.com/javase/ko/6/docs/ko/api/ )

JRE System Libray 설정은 위에서 하는 방법 외에도 프로젝트 단위로 설정할수도 있다.

이 부분은 앞에서 설명한 것과 유사하니 스샷만으로 감을 잡을수 있으리라 생각한다.

그리고 도움말 부분도 좀 더 응용하면 외부 라이브러리를 포함한 도움말도 Java Docs 경로를 설정하면 ㅎㅎ

해당 외부라이브러리의 JavaDoc Location 을 설정하자.



이제 이클립스 설정을 통해 더 편리해진 이클립스에서 Java 소스 코드와 도움말을 체험해 보도록 하자.

앞에서 설정했던 도움말 한글로 뜬다..떠 ㅋㅋ ^^;; 

F3키를 누르면 새로운 창이뜨고 Java 소스가 보인다 보여.. ㅎㅎ  열공되겠넹.. ㅎㅎ



이렇게 해서 이클립스에서 자바 API 도움말을 한글로 볼수 있게 하는 방법과
 
자바 API 소스를 볼수 있게 되었다.

정리를 해보자면 Explorer -> JRE System Libray -> rt.jar -> 마우스 오른쪽 클릭 -> Properties 에서

Java Source Attachment 항목에  src.zip 경로설정하면 자바소스를 볼수가 있고

Javadoc Location 항목에서는 자바 API 문서에 대한 설정을 할수 있다.

여기서 유의 할것은 한글 api 문서를 보기 위해서는 Java Source Attachment  항목을 공백으로 해야 된다는 것이다.

양자택일을 해야 한다는 말이 되는것이다. 소스를 볼수 있게 하던지 아니면 한글 API를 보던지...

둘다 택한다면 디컴파일러를 활용하는 방법1을 사용하도록 하자.

외부 라이브러리의 API 도움말도 설정 할수 있다는 것을 알게 되었으니 아주 편리하게 사용할 수 있다는것 ㅎㅎ

스샷을 남발하느라..글이 길어지고.. 장황해지고 .. 또 글재주가 없다보니 참 도움이 될런지 ㅠㅠ.

<참고 : http://byeonely.tistory.com/entry/이클립스에서-Java-API-Docs-도움말-한글화 , http://blog.kfmes.com/207 >

반응형

Install TPTP 4.5.2 using the Ganymede update site

Ganymede is the Eclipse simultaneous release in 2008. It includes TPTP 4.5.2 and all of its dependencies. The Ganymede update site provides an easy way to install TPTP and its dependencies. Step-by-Step illustration is also available on the TPTP wiki page.

  1. Install Eclipse SDK version 3.4
  2. From the menu, select Help > Software Updates.
  3. Select the "Available Software" tab in the "Software Updates and Add-ons" dialog box.
  4. Expand the "Ganymede" entry.
  5. Expand the "Testing and Performance" entry and choose the options to install. Equinox p2 will automatically install the required dependencies.
  6. Click Install, and follow the instructions to complete the installation. Restart Eclipse when prompted.

 

반응형

이클립스 문서 번역 사이트(노트)
퍼온곳: http://silent.springnote.com/pages/98847

출처 : http://www.eclipse.org/articles/Article-TPTP-Profiling-Tool/tptpProfilingArticle.html

설치를 간편하게 하기 위해선 기존 eclipse 는 그대로 두고 아래 올인원 패키지를 다운받으시는걸 추천

http://www.eclipse.org/tptp/home/downloads/

  Copyright © 2006 International Business Machines Corp.

 Eclipse Corner Article

 

TPTP 를 이용한 자바 어플리케이션 프로파일링

요약
이클립스 테스트 & 성능 툴 플랫폼 (TPTP) 프로파일링 툴은 이클립스 플러그인을 프로파일하기 위해 사용할 수 있다. 로컬 자바 어플리케이션은 물론 여러 개의 호스트나 서로 다른 플랫폼에서 동작하는 복잡한 어플리케이션에도 가능하다. 이 툴은 이클립스에 통합되어 있으며, 이클립스 상에서 동작하는 어플리케이션의 프로파일링을 해준다.
이 문서는 TPTP 프로파일링 툴을 가지고 문제가 있는 동작을 확인하기 위해 자바 어플리케이션을 프로파일 하는 방법을 설명한다. 프로파일 세션을 시작하는 방법, 데이터 분석을 위한 다양한 TPTP 뷰를 사용하는 방법, 실행 시간이 긴 메소드를 확인하여 성능 문제를 해결하기 위해 소스 코드로 이동하는 것까지 보여준다.
 
By Valentina Popescu, IBM
February 21, 2006 (updated July 11, 2006)
 
번역 : 이상훈(calm1979@gmail.com)
2007 4 7

 

어플리케이션 프로파일링

지금처럼 제품을 만들어 내기 위한 단기적인 개발 사이클을 돌고 있는 상황에서는, 개발자들이 테스트, 디버깅, 코드 수정을 통한 함수의 기능적인 측면에만 중점을 두는 경향이 있다. 그러나, 대다수의 문제는 어플리케이션이 (하루 24시간, 일주일에 7일 그리고 예상치 못한 피크 타임에의 한계까지 도달하게 되는) 실제 제품으로 동작할 때까지 쉽게 드러나지 않는다.

이런 류의 성능 문제는 디버깅 단계에서는 볼 수 없는 것들이다. 제품을 배포하기 전에 실제 상황에서 돌려보는 것이 중요하다. 어플리케이션의 동작을 분석하고, 병목현상, 객체 누수, 시스템 자원 제한 같은 성능 문제를 찾아내기 위해 프로파일링 툴을 사용하는 것은 중요하다.
이 문서는 TPTP 프로파일링 툴을 소개한다. 그리고, 성능 문제를 확인하고 수정, 검증하기 위해 자바 어플리케이션을 프로파일링 할 수 있도록 TPTP 프로파일링 툴의 사용법을 설명한다.

TPTP 프로파일링 툴

이클립스 테스트 & 성능 툴 플랫폼 (TPTP) 프로젝트는 병목현상, 객체 누수 그리고 시스템 자원 제한 같은 성능 문제를 확인하고 처리할 수 있는 프로파일링 툴을 제공한다. 이 툴은 단순한 독립적인 자바 어플리케이션부터 이클립스 플러그인까지 혹은 서로 다른 플랫폼이나 다양한 머신에서 돌아가는 복잡한 엔터프라이즈 어플리케이션까지 목표로 한다.

이클립스 프로젝트와 완벽하게 통합되어 있기 때문에, 사용하기 쉽고 확장하기도 쉽다. 이것은 사용자가 자신의 데이터 분석 화면을 붙일 수도 있고, 데이터 수집 에이전트에서 자신의 구현을 통해 데이터 수집 메타포어(metaphor)를 확장할 수 있음을 의미한다.

이 문서는 이클립스 3.2.0을 필요로 하는 EMF 2.2.0 과 XSD 2.2.0 기반으로 하는 TPTP 4.2.0 을 사용해서 작성했다. 여기에서 이것들을 구할 수 있다. TPTP 4.2.0 설치를 위한 설명을 보려면 TPTP 다운로드 페이지 로 가면된다.

TPTP 를 이용한 자바 어플리케이션 프로파일링

이 문서에서 사용한 제품 카탈로그 샘플 어플리케이션은 각각의 xml 파일에 저장된 제품 정보를 분석해서 콘솔 화면에 결과를 출력하는 간단한 자바 어플리케이션이다. 제품 정보를 포함하는 xml 파일들이 위치한 디렉토리 경로는 Product.java 프로그램의 인자로 주어진다. 제품 정보를 포함하고 있는 xml 파일들은 예제 실행하기에서 제공한다.

프로파일링 모드로 어플리케이션 시작하기

샘플 어플리케이션을 설치한 후에, 첫 단계로 제품 카탈로그 어플리케이션을 프로파일링 모드로 실행한다. 아래 그림 1처럼 Product.java 를 선택하고 팝업 메뉴의 Profile As > Java Application 를 선택해서 어플리케이션을 프로파일한다.

그림 1 제품 카탈로그 어플리케이션 프로파일 하기

프로파일링 모드로 어플리케이션을 실행하는 다른 방법은 자바 퍼스펙티브의 툴바 메뉴에 있는 Profile 액션을 사용하는 것이다. Run 이나 Debug 툴바 액션 처럼, Profile 액션은 런치 설정(launch configuration) 다이얼로그를 나타낼 것이다. 다이얼로그에서 프로파일 하고 싶은 어플리케이션의 타입을 선택할 수 있다.

자바 프로그램 인자 설정하기

The Profile As > Java Application 을 선택하면 그림 2와 같은 런치 설정 마법사(Launch Configuration Properties wizard)가 열릴 것이다.

이 예제에서는 제품 xml 파일의 경로를 프로그램의 인자로 넘겨준다. 이 문서의 제일 아래에서 제공되는 파일을 x:\myPath 에 풀었다고 할 경우 x:\myPath\products 를 아래 그림 2에서 보여지는 것처럼 프로그램 인자로 설정한다.

Program arguments

그림 2 제품 카탈로그 샘플 – 프로그램 인자(Program arguments)

프로파일링 필터 설정하기

다음 단계로 메소드 실행 정보를 수집하기 위한 프로파일링 옵션을 설정한다.
이 옵션을 설정하기 위해, 런치 설정 마법사(Launch Configuration Properties wizard)의 모니터(Monitor) 탭을 선택하고, 측정하고자 하는 프로파일링 옵션을 설정한다.

프로파일링 필터 셋(Profiling filter set)은 프로파일링 필터의 재사용 가능한 셋(set)이다. 프로파일링 필터 셋을 만드는 이유는 같은 어플리케이션을 연속적으로 실행하거나, 어플리케이션 간에 같은 종류의 프로파일링 정보를 수집하기 위해 필터 셋을 재사용하기 위함이다.
아래에서 제품 카탈로그 어플리케이션을 프로파일 하기 위해 사용되는 새로운 필터 셋을 만드는 방법을 설명한다. com.sample.product 로 시작하는 패키지에 대해서만 사용하는 ProductFilterSet 이라는 새로운 필터 셋을 만들 것이다.

1. 실행 정보를 수집하기 위해 모니터(Monitor) 탭에서 실행 시간 분석(Execution Time Analysis) 옵션을 선택한다.

Execution Time Analysis option

그림 3 실행 시간 분석(Execution Time Analysis) 옵션

위 그림 3에서 보는 바와 같이 실행 시간 분석(Execution Time Analysis) 옵션을 선택했다. 이것은 제품 카탈로그 어플리케이션의 연속적인 실행 중에 사용될 수 있다. 이 어플리케이션의 다음 실행 때에는 “프로파일링 필터 설정하기” 단계는 건너뛸 수 있다.

2. 프로파일링 실행 옵션을 설정하기 위해 “옵션 수정(Edit Options)” 버튼을 누른다.

2a. "Collect boundary classes excluded by the filter set" 옵션을 선택하고 Boundary class depth 값으로 3을 입력한다.

이 옵션을 선택함으로써, 필터 범위 내에서 실행되는 메소드들 중에 입력된 단계(depth)까지 호출되는 메소드에 대한 정보를 수집하겠다고 설정 한 것이다.

예를 들어, MyMethod 라는 메소드에 대해 정보를 수집하도록 설정했고, M1, M2, M3, M4 메소드에 대해 필터 설정을 했다고 하자.

다음과 같은 invocation stack 이 실행되었다고 한다면: MyMethod > M1 > M2 > M3 > M4 ( MyMethod 가 M1 을 호출하고, M1이 M2를 호출하고, M2가 M3를 호출하고, M3가 M4를 호출했다.), 2a 에서 설정한 필터 범위 값에 따라, 프로파일러는 콜 스택을 다음과 같이 보여줄 것이다: MyMethod > M1 > M2 > M3 그리고 마지막 M3>M4는 표시되지 않을 것이다. (호출 단계(depth)가 3을 초과했기 때문이다).

Profiling Execution options

그림 4 실행 정보 수집을 위한 설정

 

3. 프로파일 하기 위한 클래스들을 선택하기.

     모니터(Monitor) 탭에서, 자바 프로파일링(Java Profiling) 아이템을 선택하고 옵션 수정(Edit Options)을 선택한다. 그러면 필터 셋 마법사(Filter Set wizard)가 뜬다.
필터 셋 페이지는 프로파일 하고자 하는 클래스를 선택하기 위해 사용한다. 사용 가능한 필터들이 설정되어 있을 것이다. 그러나 이 예제에서는 com.sample.product 로 시작하지 않는 모든 패키지를 제외하는 ProductFilterSet이라고 하는 새로운 필터 셋을 만들 것이다.
필터 셋을 만들기 위한 단계:

3a) 필터 셋(filter set) 목록에서 추가(Add...) 버튼을 선택한다. 새로운 필터 셋의 이름을 ProductFilterSet 을 입력하고 확인(OK)을 누른다.

3b) 그림 5에서 보는 것 처럼 두 개의 필터를 추가하기 위해 선택된 필터 셋(Contents of selected filter set) 목록에서 추가(Add…) 버튼을 누른다.

 

Select the classes to be profiled

그림 5 프로파일 하고자 하는 클래스 선택하기

 

 

어플리케이션 실행하기


런치 설정 마법사(Launch Configuration wizard)에서 확인(OK)을 누름으로써 제품 카탈로그 어플리케이션(Product catalog application)을 실행한다. 프로파일링 & 로깅(Profiling and Logging) 퍼스펙티브로 전환하겠냐는 다이얼로그가 뜨면 예(Yes)를 선택한다.
아래 그림 6에서처럼 콘솔 화면에 프로그램 실행 결과가 출력되는 것을 볼 수 있을 것이다.

Product application terminated

그림 6 제품 카탈로그 어플리케이션(Product catalog application)이 실행되었다

 TPTP 프로파일링 툴은 어플리케이션과의 상호 작용을 할 수 있도록 한다. 모니터링을 일시 정지, 다시 시작 할 수 있으며, GC(garbage collection)를 실행할 수도 있고 객체 레퍼런스(object references)를 수집하거나 어플리케이션을 종료할 수도 있다.


실행 통계(Execution Statistics) 뷰를 이용한 성능 문제 확인하기


성능 문제를 확인하기 위해 실행 통계 뷰를 사용한다. 뷰를 열기 위해, 프로파일링 모니터 뷰에서 프로세스(process)를 선택하고 Open with > Execution Statistics 를 선택한다.
아래 그림 7 에서 보는 바와 같이 실행 통계 뷰에서는 실행된 메소드들을 누적 시간(cumulative time)으로 정렬해서 볼 수 있다. 메소드의 누적 시간은 다른 메소드를 호출하는 것을 포함한 실행 시간이다.

Execution statistics view

 

그림 7 실행 통계(Execution Statistics) 뷰

그림 7 보면, main(java.lang.String[]), readData(java.lang.String) 그리고 createParser()의 3가지 메소드가 가장 오랜 실행 시간을 사용한 것을 알 수 있다. Main과 readData 메소드가 상위에 있는 것은 걱정할 것이 아니다. 처음 것은 어플리케이션의 시작점이고, 두번째 것은 xml 파일로부터 제품 정보를 읽어들이는 것이기 때문이다.

우리가 지켜봐야할 것은 단지 xml 파일을 파싱(parsing) 하기 위해 SAX 파서 인스턴스를 만드는 creatParser() 메소드가 높은 실행 시간을 나타내고 있다는 것이다. 이 메소드의 실행 시간이 어플리케이션의 전체 실행 시간에 42.96%나 차지한다. 실행 통계는 이 메소드가 어플리케이션의 성능을 최적화하기 위한 가능성이 있는 부분임을 알게 해준다.

일단 이 것을 확인했으면, createParser() 메소드의 상세 실행 정보를 보기 위해 드릴 다운(drill down) 해보자.

createParser() 메소드에서 메소드 호출 상세(Method Invocation Details ) 뷰 열기

다음으로 우리는 createParser() 콜 스텍의 어떤 메소드가 이 메소드의 실행 시간을 느리게 하는지 보기 위해 메소드 호출 상세 뷰를 사용한다. 실행 통계 뷰에서 createParser() 메소드를 더블 클릭하여 메소드 호출 상세 뷰를 열자.

Method Invocation Details

그림 8 메소드 호출 상세(Method Invocation Details) 뷰

 


그림 8에서는 createParser() 메소드의 실행 정보를 보여준다. 보는 바와 같이 이 메소드는 readData(java.lang.String)에 의해서 한 번 호출되었고 5개의 다른 메소드들을 호출함을 알 수 있다. 호출한 메소드(Selected method invokes) 테이블을 보면 newSAXParser()와 newInstance() 메소드가 createParser() 메소드를 느리게 한다는 것을 알 수 있다. createParser() 메소드가 24번 호출된 것 처럼 이 두 메소드가 24번이나 호출되었다.

확인된 성능 문제로부터 해결책을 정의하기


이 데이터를 분석함으로써, 우리는 createParser() 메소드의 실행 시간 향상을 위해서는 두 개의 SAXParserFactory 메소드의 샐행 향상을 해야한다는 것을 알았다. 우리는 이 메소드의 구현에 관여할 수 없으므로, 우리의 어플리케이션 실행 향상을 위해서는 이 메소들의 호출을 최대한 줄여야한다.

해결책은 모든 파일 마다 새로운 파서를 만들지 않고, 하나의 파서 인스턴스를 만들고 이것을 재사용하는 것이다. 소스 코드를 열고 수정해보자.

이런식의 최적화 방향을 결정하기 전에, 코드 상에서 지원을 하는지를 확실하게 해둘 필요가 있다. 예를 들어, SAXParser는 여러 쓰레드에 의해서 동시에 사용될 수 없기 때문에 인스턴스를 재사용할 수 있는 것이다. 엄격하게 말하면 인스턴스는 재사용하기 전에 reset()해주어야 한다. 변경 내용을 적용할 수 있는 코드를 작성하기 전에 포괄적인 단위 테스트 조합을 구성해두는 것도 좋은 생각이다.

 

소스 코드를 열고 성능 문제를 수정하기

createParser() 메소드에 대한 소스 코드를 열기 위해 메소드 호출 상세(Method Invocation Details) 뷰에서 마우스 우클릭을 하고 팝업 메뉴에서 소스 열기(Open Source)를 선택한다.

Source code


그림 9 소스 코드

그림 9에 createParser() 에 대한 소스 코드가 있다. 이 메소드가 매번 호출될 때 마다 새로운 SAX 파서 인스턴스를 만드는 것을 알 수 있다.
아래 그림 10처럼 하나의 파서 인스턴스를 만들고 모든 xml 파일을 파싱하는데에 그것을 재사용하도록 코드를 수정하자.

Source code

그림 10 소스 코드 수정

그림 10에서 보는 것 처럼 전역 SAXParser 인스턴스를 만들어서 성능 문제를 해결했다. createParser() 메소드는 파서를 초기화 하고 메소드가 호출될 때 마다 만들어진 인스턴스를 리턴한다.

다시 돌아가서 제품 카탈로그 어플리케이션을 다시 프로파일링 모드로 동작시켜 수정 내용을 검증해보자.

성능 문제 해결 검증하기

성능 문제 해결을 검증하기 위해, 위에서 말한 것 처럼 Product 클래스를 선택하고 우클릭해서 Profile As > Java Application를 선택한다.

프로파일링 옵션 마법사는 나타나지 않을 것이다. 이전에 설정한 프로파일링 옵션이 어플리케이션 실행시에 사용된다. 어플리케이션을 실행한 후에 실행 통계(Execution Statistics) 뷰를 열고 실행 시간을 비교해보자.
그림 11에 수정된 코드를 적용한 후의 실행 시간이 있다:

 

Execution Statistics view

 

그림 11 실행 통계(Execution Statistics) 뷰

 

위 그림에서 보는 것처럼, 수정하기 이전에 거의 43% 였던 createParser() 메소드의 실행 시간이 단지 19%로 줄었다.
이 성능 향상은 파싱해야될 xml 파일이 많을수록 더 커질 것이다. 따라서 카탈로그에 추가되는 제품 정보 파일이 많아질수록 어플리케이션의 실행 시간이 엄청나게 줄어들게 될 것 이다.

결론

이 문서에서는 TPTP 프로파일링 툴을 사용해서 성능 문제를 확인하고 해결하는 방법을 설명했다. 이 문서에서는 다루지 못한 TPTP 툴의 많은 기능이 더 있다. 만약 이 툴의 기능을 더 알고 싶다면 여기에 있는 튜토리얼 슬라이드와 사용자 가이드들을 보기 바란다.

예제 실행하기

"ProductCatalog_example.zip" 파일에는 이 문서에 나와있는 예제의 소스 코드를 포함하고 있다. 이클립스의 “plugins” 디렉토리에 ZIP 파일을 풀면된다. 또한 제품 xml 파일들은 products.zip 파일에 있다. products.zip 파일을 시스템의 원하는 곳에 풀어놓고, 그 경로를 제품 카탈로그 어플리케이션의 프로그램 인자로 적어주면 된다.

Java and all Java-based trademarks and logos are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.


반응형
준비물

1. 윈도우 XP SP2 이상, 윈도우 비스타 SP1 (기타 운영체제는 차후에 지원한답니다.)
2. JDK 1.5.0_11 이상
3. Eclipse Basic 3.4.1 혹은 Eclipse IDE for Java Developers 혹은 Eclipse IDE Java EE Developers ( <- 이녀석이 추천작)
4. .Net Framework 3.5 이상
5. 실버라이트 2 런타임(2.0.31005.0 이상)
6. 실버라이트2 SDK


JDK의 설치

java.sun.com 으로 가서 jdk 를 설치합니다.


다운로드를 선택하십니다.


SE 버전을 다운 받습니다. EE 버전도 상관없을것 같습니다.



저는 64비트 윈도우를 사용하므로 x64 를 선택했습니다.


다운받고 설치합니다.

설치경로는 알고 계셔야 합니다.(이클립스 세팅할때 필요합니다)


이클립스의 설치

우선 http://www.eclipse.org 사이트로 가서 이클립스를 다운받습니다.

(※ 64 비트 윈도우 사용자는 다음의 경로에서 다운받습니다. http://download.eclipse.org/eclipse/downloads/
64비트 이클립스 빌드는 따로 있습니다.
Windows (x86_64
) 버전으로 다운 받습니다.
물론 OS, JDK 가 모두 64비트여야 합니다.
)

오랜만에 와봤더니 홈페이지가 바뀌었군요.



적당한 녀석을 다운 받습니다.

저는 EE버전을 추천합니다.


그 다음에 나오는 미러는 대충 아무데나 선택하시면 됩니다.



이클립스는 설치 프로그램이 별도로 없고 그냥 압축을 풀면 바로 사용할 수 있는 형태로 되어 있습니다.

압축을 풀어보면 다음과 같은 모습이 됩니다.



이제 이클립스 폴더를 적절한 곳으로 옮기고 바탕화면에 단축아이콘을 만든뒤 실행해봅니다.


자바환경변수를 안잡아서 그렇습니다.

아까 JDK 설치한 경로를 기억해두시고 환경변수를 설정합니다.








아래에는 아까 설치하였던 경로를 입력합니다.

저의 경우는 아래와 같군요.


마찬가지 방법으로 CLASSPATH 를 만들어 넣습니다.


이제 실행하면 이클립스가 잘 실행됩니다.



닷넷프레임워크, 실버라이트런타임, 실버라이트 sdk 설치

이 부분은 그냥 다운 받아 실행하시면 되므로 길게 설명 안하겠습니다.

닷넷프레임워크 3.5  :  http://www.microsoft.com/downloads/details.aspx?FamilyID=333325fd-ae52-4e35-b531-508d977d32a6&DisplayLang=en

실버라이트개발자용 런타임 : http://go.microsoft.com/fwlink/?LinkID=119972

실버라이트 SDK : http://www.microsoft.com/downloads/details.aspx?FamilyId=8D933343-038F-499C-986C-C3C7E87A60B3&displaylang=en


서비스팩은 필수사항으로 나와있지는 않지만 설치하시기를 강력하게 주장하는 바입니다. -_-;;

닷넷프레임워크 3.5 서비스팩 1 : http://www.microsoft.com/downloads/details.aspx?familyid=AB99342F-5D1A-413D-8319-81DA479AB0D7&displaylang=en


이클립스 플러그인의 설치

이클립스에서 Help -> Software Update 를 선택합니다.


Available Software 탭을 선택하신후 Add Site... 를 선택합니다.


Location 에 http://www.eclipse4sl.org/update/  를 입력하고 ok를 누릅니다.


이제 리스트가 나타나면 좌측에서 Eclipse Tools for Microsoft SIlverlight 를 선택하고 인스톨을 누릅니다.

(※ 만일 EE 버전이 아닌 Basic 등의 버전을 다운 받으셨다면
RCP 가 설치되어 있나 반드시 확인하시고 만일 설치되어 있지 않다면
RCP 를 먼저 설치하시고 eclipse4sl 을 설치하셔야 합니다.
RCP 를 나중에 설치하시게 된다면 eclipse4sl 을 지우고 RCP 설치후
재설치하셔야 합니다.
)


이제 프로그램을 다운받고 계약서에 동의하나면 설치를 시작합니다.



리스타트해야된다고 합니다.

리스타트 하면 잘 뜹니다.


이제 파일메뉴에서 New->Project 를 선택합니다.



귀여운 녀석 저 아래에 있군요.

이렇게 해서 프로젝트르 짜짠 만들면

실버라이트 프로젝트가 예쁘게 나옵니다.



하지만 중대한 문제가 있는데 말이죠...

64비트 시스템에서는 XAML 에디터가(Visual Editor for Silverlight) 정상적으로 작동하지 않는것 같습니다. -_-;;

32비트 시스템에서는 문제 없는것 같으니 참고하시고요.


당분간은 이클립스를 이용한 개발을 하시려면

Expression Blend 와 병행하시는것이 좋을듯합니다.



실행은 잘되는군요...

당연히 되야되는것이겠지만..

실버라이트 컴파일러도 잘 작동하는듯합니다.


반응형

시작하기 전에

새로운 기능을 알아보기 전에 윈도 운영체제 사용자들이 겪을 치명적인 문제를 포함한 몇 가지 문제점과 가능한 해결책을 간략히 알아본다.

  1. 이클립스가 실행 되지 않는 문제

    다운받은 가니메데 배포판의 종류에 따라서 ECLIPSE_HOME/eclipse.ini 파일에 기록된 메모리 크기 관련 설정값이 다르다. 보통은 윈도 버전의 이 클립스에서 메모리 부족 때문에 나타나는 현상으로 Java EE 버전이나 플러그인 개발 버전을 다운 받았다면, eclipse.ini 파일의 -Xmx512m를 – Xmx256으로 수정한다.

  2. 한글 깨짐 현상

    일부 영문 전용 폰트에서 한글 깨짐 현상이 발생한다. 대표적으로 많은 개발자의 사랑을 받고 있는 ‘Bitstream Vera Sans Mono’을 이용하면 문제를 확인할 수 있다. 임시방편으로 영문 전용 폰트에 한글 폰트를 추가해 새로운 폰트를 만들어 사용하는 방법이 있다.

 

자바 개발환경 개선사항

새로운 리팩터링

자바 리팩터링에 ‘Extract Class(클래스 추출)’가 추가됐다. Extract Class는 한 클래스가 너무 많은 책임을 수행할 때, 책임을 다른 클래스로 분리하는 리팩터링이다.

리팩터링 책의 예제를 활용해보자. <리스트 1>은 리팩터링 전의 Person 클래스로 간단하지만 개인 정보와 연락처 정보 관리라는 두 가지 책임을 가진다. Extract Class로 연락처 관리의 책임을 추출해보자.

 

<리스트 1>Extract Class 리팩터링을 적용하기 전 Person 클래스

  1. package refactoring;  
  2.   
  3. public class Person {  
  4.   private String name;  
  5.   private String officeAreaCode;  
  6.   private String officeNumber;  
  7.   
  8.   public String getName() {  
  9.    return name;  
  10.   }  
  11.   
  12.   public void setName(String name) {  
  13.    this.name = name;  
  14.   }  
  15.   
  16.   public String getOfficeAreaCode() {  
  17.    return officeAreaCode;  
  18.   }  
  19.   
  20.   public void setOfficeAreaCode(String officeAreaCode) {  
  21.    this.officeAreaCode = officeAreaCode;  
  22.   }  
  23.   
  24.   public String getTelephoneNumberNumber() {  
  25.    return "( " + officeAreaCode + ") "+ officeNumber;  
  26.   }  
  27.   
  28.   public String getOfficeNumber() {  
  29.    return officeNumber;  
  30.   }  
  31.   
  32.   public void setOfficeNumber(String officeNumber) {  
  33.    this.officeNumber = officeNumber;  
  34.   }  
  35. }  

 

먼저 Extract Class 메뉴를 선택한다. 최상단 메뉴나 <화면 1>과 같이 편집기 의 오른쪽 마우스 컨텍스트 메뉴에서 Refactor -> Extract Class를 선택한다.

 

<화면 1>Extract Class 메뉴 선택

 

Extract Class 메뉴를 선택하면 <화면 2>와 같이 설정 다이얼로그가 나온다. 설정 다이얼로그에서는 추출 대상 필드를 선택하고, 추출할 클래스 이름과 추출한 클래스의 객체를 참조할 필드 이름을 지정한다. 여기서는 연락처 정보와 관련된 officeAreaCode와 officeNumber 필드를 Telephone 클래스로 추출한다. Person 클래스가 참조하는 Telephone 클래스 인스턴스의 이름은 telephone으로 설정한다.

 

<화면 2>Extract Class 설정 다이얼로그

 

<리스트 2>와 <리스트 3>의 코드 로 리팩터링되었다. 위에서 선택한 두 필드를 가지고 있는 Telephone 클래스가 생성되었고, Person 클래스는 Telephone 클래스의 인스턴스를 필드로 가지고 이를 참조하도록 변경되었다. 이클립스가 자동으로 처리해주는 리팩터링 기능에서 특히 클래스간의 관계를 다루는 리팩터링에 대한 처리가 미흡한 편인데 편리한 리팩터링이 하나 더 추가되었다.

 

<리스트 2>Extract Class 리팩터링 적용 후 Person 클래스

  1. package refactoring;  
  2.   
  3. public class Person {  
  4.     private String name;  
  5.     private Telephone telephone = new Telephone();  
  6.   
  7.     public String getName() {  
  8.         return name;  
  9.     }  
  10.      
  11.     public void setName(String name) {  
  12.         this.name = name;  
  13.     }  
  14.      
  15.     public String getOfficeAreaCode() {  
  16.         return telephone.getOfficeAreaCode();  
  17.     }  
  18.      
  19.     public void setOfficeAreaCode(String officeAreaCode) {  
  20.         this.telephone.setOfficeAreaCode(officeAreaCode);  
  21.     }  
  22.      
  23.     public String getTelephoneNumberNumber() {  
  24.         return "( " + telephone.getOfficeAreaCode() + ") "+ telephone.getOfficeNumber();  
  25.     }  
  26.      
  27.     public String getOfficeNumber() {  
  28.         return telephone.getOfficeNumber();  
  29.     }  
  30.      
  31.     public void setOfficeNumber(String officeNumber) {  
  32.         this.telephone.setOfficeNumber(officeNumber);  
  33.     }  
  34. }  

 

<리스트 3>Extract Class 리팩터링 적용 후 Telephone 클래스

  1. package refactoring;  
  2.   
  3. public class Telephone {  
  4.     private String officeAreaCode;  
  5.     private String officeNumber;  
  6.   
  7.     public Telephone() {  
  8.     }  
  9.   
  10.     public String getOfficeAreaCode() {  
  11.         return officeAreaCode;  
  12.     }  
  13.   
  14.     public void setOfficeAreaCode(String officeAreaCode) {  
  15.         this.officeAreaCode = officeAreaCode;  
  16.     }  
  17.   
  18.     public String getOfficeNumber() {  
  19.         return officeNumber;  
  20.     }  
  21.   
  22.     public void setOfficeNumber(String officeNumber) {  
  23.         this.officeNumber = officeNumber;  
  24.     }  
  25. }  

 

Breadcrumb

자바 편집기 영역에 추가된 기능 중 단연 돋보이는 기능은 ‘Breadcrumb’다. 노트북 등 화면이 크지 않은 환경에서 개발할 때는 편집기 영역을 최대화(커맨드 + M)해서 작업하는 경우가 많은데, Breadcrumb를 통해 현재 위치를 한눈에 볼 수 있고, 편집기의 최대화를 해제하고 ‘Package Explorer (패키지 탐색기)’등을 이용해서 다른 파일을 열어야 하는 불편함을 해소한다.

사용법은 정말 간단한데 화면 상단 툴바의 ‘Toggle Breadcrumb’를 선택하거나, <화면 3>과 같이 편집기의 컨텍스트 메뉴 중 ‘Show in Breadcrumb’를 선택하면 된다. 컨텍스트 메뉴에서 Breadcrumb를 비활성화 시킬 수 있는 방법은 없으니 참고하자. Breadcrumb를 비활성화 시키려면 상단 툴바의 토글 버튼을 이용하자.

 

<화면 3> Breadcrumb 활성화

 

Breadcrumb가 활성화되면 <화면 4>와 같이 편집기 상단에 현재 위치를 표시해주는 표시영역이 생긴다. 이 영역을 통해 최대화 상태의 편집기에서도 현재 위치를 한눈에 볼 수 있고, 최대화 상태에서도 편리하게 다른 파일을 열 수 있다.

<화면 4>Breadcrumb의 활성화와 다른 클래스로 이동하기

 

향상된 Call Hierarchy

이클립스를 사용하는 자바 개발자에게 인기 좋은 기능 중 하나가 ‘Call Hierarchy (호출 계층)’를 살펴보는 기능으로 호출 관계가 복잡한 함수의 호출 관계를 트리 구조로 보여준다. 이클립스 3.3까지는 호출자(caller)를 찾을 때, 특정 함수나 생성자를 사용하고 있는 함수를 찾는 기능만을 제공했다.

이 정도로도 편리한 기능이지만 코드에 존재하지 않는 기본 생성자를 호출해서 객체를 생성하는 위치를 찾으려면, 기본 생성자를 코드에 추가해서 찾아야 하는 단점이 있었다. 또, 상수나 필드를 사용하는 위치를 찾는 기능은 없기 때문에 검색 기능을 이용해서 찾아야 하는 불편함이 있었다.

이클립스 3.4에서는 클래스를 선택하고 ‘Call Hierarchy’를 찾아보면(CTRL + ALT + H) 모든 생성자를 호출하는 위치를 찾아준다. 기본 생성자가 코드 상에 존재하지 않아도 찾아주니 편리하다. 또, 상수나 필드를 사용하는 위치도 ‘Call Hierarchy’를 통해 보여주니 더 이상 불편하게 검색하지 않아도 된다. <화면 5>과 같이 모든 생성자와 상수에 대한 호출 계층을 확인할 수 있다.

 

hierarchy1.jpg

hierarchy2.jpg

 <화면 5>향상된 Call Hierarchy. 모든 생성자의 호출 위치(상단)과 필드나 상수의 사용 위치(하단)를 확인할 수 있다.

실행 가능한 JAR 파일 내보내기

기존의 이클립스의 내보내기(Export) 기능에 실행 가능한 JAR(Runnable JAR) 파일을 내보낼 수 있는 기능이 추가되었다. 이를 통해 자바 실행 환경(Java Runtime Environment, JRE)이 설치 되었다면 JAR 파일을 더블클릭하는 것만으로 애플리케이션을 실행할 수 있다.

<리스트 4>는 “Hello Ganymede!”라는 메시지를 화면에 출력하는 단순한 자바 스윙 애플리케이션이다. 이 예제를 실행 가능한 형태의 JAR 파일로 배포해보자.

 

<리스트 4> main() 함수를 가지는 단순한 스윙 예제

  1. package runnable;  
  2.   
  3. import javax.swing.JFrame;  
  4. import javax.swing.JLabel;  
  5.   
  6. public class HelloSwing extends JFrame {  
  7.   
  8.   public HelloSwing() {  
  9.    setTitle("Eclipse 3.4 Ganymede");  
  10.    getContentPane(). add(new JLabel("Hello Ganymede!"));  
  11.    setSize(250, 100);  
  12.   }  
  13.   
  14.   public static void main(String[] args) {  
  15.   new HelloSwing().setVisible(true);  
  16.   }  
  17. }  

 

<화면 6> 실행 가능한 JAR 파일 내보내기

‘File -> Export -> Java -> Runnable JAR file’옵션을 통해 실행 가능한 JAR 파일을 생성할 수 있다. 먼저, Launch Configuration 중에서 JAR 파일을 생성할 대상을 선택한다. 선택한 대상이 MANIFEST.MF 파일에서 Main-Class로 이용된다. 대상 경로와 파일이름을 선택하면 실행 가능한 파일을 생성한다. 생성된 JAR 파일을 더블클릭하면 <화면 7>과 같이 애플리케이션이 실행된다.

 

<화면 7>JAR로 실행한 애플리케이션

 

<리스트 5>와 같이 자동 생성된 MANIFEST.MF 파일 은 이전에도 사용자가 직접 작성할 수 있었다. 하지만 이클립스는 단지 MANIFEST.MF 파일을 자동 생성해주는 기능 이상을 제공한다.

 

<리스트 5>자동 생성된 MANIFEST.MF 파일

  1. Manifest-Version: 1.0  
  2. Class-Path: .  
  3. Main-Class: runnable.HelloSwing  

 

예제는 외부 라이브러리를 사용하지 않으니 그리 복잡하지 않지만, 만약 애플리케이션을 구동하는 데 수많은 이클립스 프로젝트에 대한 참조와 라이브러리 파일이 필요하다면 사용자가 직접 작업하기에는 꽤나 복잡해진다. 그래서 이클립스의 실행 가능한 JAR파일 생성 기능은, 참조하는 프로젝트의 모든 클래스 파일과 포함된 모든 라이브러리의 압축을 해제한 클래스 파일을 함께 묶어주는 기능을 제공한다. 사용자는 압축을 해제한 형태로 라이브러리를 재배포하는 것이 라이센스를 위반 하는지만 주위를 기울이면 된다.

 

Outline 화면에서 코드 재배열하기

개요(Outline) 화면에서 코드의 구성 요소의 위치를 재배열 할 수 있는 기능이 이클립스 3.4에 조용히 추가되었다. 작업 중 추가한 한 뭉치의 코드에서 구성 요소간의 순서가 마음에 들지 않으면 하나씩 잘라내서 원하는 위치에 붙여넣는 작업을 반복하게 된다. 이제 개요 화면 에서 한눈에 전체 구조를 보면서 드래그 앤 드롭 기능을 이용해서 코드를 재배열 할 수 있다. <화면 8>에서 자바 메서드의 드래그 앤 드롭을 통한 위치 이동을 보여준다.

 outline1.jpg

outline2.jpg

<화면 8> Outline에서 구성 요소의 드래그 앤 드롭

 

이때, Outline의 자동 정렬 기능 을 이용 중이라면 드래그 앤 드롭은 동작하지 않는다. 특정 요소의 위치를 옮길 때 요소와 요소 사이의 빈 줄 삽입 여부가 의도한 대로 처리되지 않을 수 있으니 처리가 필요하다면 주의하자. Outline에서의 재배치 기능은 자바 에디터뿐 아니라 XML 에디터에서도 지원한다. 앞으로 다양한 에디터 환경에서 지원할 것으로 기대된다.

 

리치 호버

특정 요소 위에 마우스를 가져다 두면 나타나는 JavaDoc 설명을 보여주는 것과 같은 호버 기능이 향상되었다. JavaDoc 호버는 <화면 9>의 상단 화면과 같이 JavaDoc 화면에서 보기, 외부 브라우저에서 보여주기 등 더 풍부한 기능을 제공한다. 리치 호버 기능이 정말 유용하게 사용되는 때는 디버그 상황에서다. <화면 9>의 하단 화면에서 볼 수 있듯이 복잡한 자료구조에 대한 값도 한 눈에 볼 수 있는 기능을 제공한다. 예전처럼 Variables 화면을 뒤지거나, Expressions 화면에 표현식을 입력해 봐야 하는 불편함이 해소되었다.

 hover1.jpg

hover2.jpg

<화면 9> 향상된 호버 기능. JavaDoc 호버(상단)와 디버거 호버(하단)

 

저장 기본 동작 정의

아무리 팀에서 코드 형식을 정해놓고, 이클립스 자동 포맷에 맞춰서 만들어 두어도 자신만의 스타일에 익숙하다면 종종 잊어버리곤 한다. 또, 개발과정 중에 사용하다 남은 불필요한 Import 잔재를 한번에 없애고 싶지만 자동으로 처리해 주지 않으면(Organized Import 기능이 자동으로 처리해 주지만, 직접 명령을 수행해야 한다.) 역시 잊어버리기 쉽다.

이런 요구를 충족해 주는 기능으로 Save Actions 기능이 추가됐다. ‘Windows (윈도) /Eclipse (맥) -> Preferences -> Java -> Editor -> Save Actions’를 보면 저장 시 자동으로 문서 포맷 맞추기, 불필요한 Import 구문 정리하기 등의 기능을 제공한다. <화면 9>와 같이 저장 시 실행할 행동을 정의할 수 있으며, 문서 정렬은 전체 문서에 저장할 것인지 수정된 영역에만 적용할 것인지를 지정할 수 있다.

save.jpg

<화면 10 >저장 시 함께 처리할 행동 정의

 

Launch Configuration 내보내기/들여오기

Import(가져 오기)/Export(내보내기) 메뉴에 추가된 기능으로 그 동안의 실행 설정(Launch Configuration)을 XML 파일로 저장하고, 저장된 XML 파일을 가지고 오는 기능이 추가됐다.

이 설정은 JDK 버전을 여러 버전으로 맞춰놓고 작업하는 것(컴파일 레벨의 변경이 아니라 실제 JRE를 대체하면 전부 재빌드를 수행하므로 하나의 작업공간에서 모두 처리하기에는 번거롭다)과 같은 이유 등으로 이클립스를 여러 개 설치해 놓고 작업 하거나 작업 공간을 다시 구축해야 하는 경우 매번 복잡한 실행 설정을 하지 않아도 되기에 유용하다.

 

그 외 자바 개발 환경 개선사항

개발 중인 애플리케이션의 모든 메시지를 별도의 리소스 파일로 따로 뽑아서 관리한다면, 문자열 하나를 찾기 위해 키 값을 찾고, 리소스 파일을 열어서 다시 해당 키값으로 찾아가는 과정이 번거롭게 느껴진다. 가니메데에 새로 추가된 기능으로 리소스 파일로 바로 찾아가는 기능이 추가됐다.

이제 자바 빌드에서 멀티 코어 CPU를 지원한다. 기존의 프로젝트를 이클립스 3.4와 이전 버전의 이클립스에서 모두 새로 빌드해서 체감속도 향상을 느껴보자.

JUnit 테스트를 실행하면 이제 테스트케이스 별로 실행시간을 각각 표시해 준다. 오래 걸리는 테스트케이스를 따로 관리할 때 유용하다.

또, Content Assist 기능, Quick Fix 기능 등 에디터 영역이 전반적으로 편리해졌다.

 

자바 개발 환경외 주요 변경사항

여기서 다루는 내용은 이클립스 3.4의 자바 개발환경에서의 변경과 개선사항이지만, 자바 개발 환경 이외의 주요한 몇 가지 사항은 알아둘 가치가 있다. 물론 자바 개발과 관련 없는 가장 큰 변경 사항은 화려해진 시작 화면(스플래시 이미지)이다.

새로운 설치 /업데이트 서비스 – p2

기존에 업데이트 매니저를 이용해 플러그인을 설치하던 사용자라면 바로 알아차렸을 텐데, 이클립스의 플러그인 설치/업데이트 기능이 단순히 UI만 변경된 것이 아니라 완전히 새로 변경되었다.

다운로드 자동 재시도, 적합한 미러 자동 선택하기 등의 개선 사항이 있지만 무엇보다도, 기존 사용자들이 가장 불만을 가지고 있던 부분인 버전 의존성 확인 부분이 크게 개선되었다.

이클립스 소스 코드 보고 베끼기 - 플러그인 스파이

이클립스 3.4의 플러그인 개발 환경(Plug-in Development Environment, PDE) 에서 가장 눈에 띄는 기능은 ‘플러그인 스파이 (Plug-in Spy)’다. 이클립스를 사용하다 보면 플러그인 개발 자가 아닐지라도 , 어떻게 구현됐는지 코드 를 보고 싶은 경우가 있다. 기존에는 플러그인 개발자에게도 특정 영역의 코드를 찾아가는 작업이 쉽지 않았다. 이제 플러그인 스파이 덕분에 코드를 보고 싶은 관심 대상 화면을 선택한 후 ‘SHIFT +ALT+F1’을클릭하면 해당 화면이 정의된 플러그인과 해당 화면의 클래스 등 각종 정보를 쉽게 얻을 수 있다.

플러그인 스파이 기능을 활용하려면 PDE 관련 플러그인을 설치하거나 플러그인 개발자용 이클립스를 다운받아야 한다. 이클립스의 소스 코드를 참조해서 자신만의 플러그인을 만드는 내용에 대해서는 다음에 기회가 되면 자세히 알아보겠다.

자바스크립트 개발 툴킷

웹 개발 환경에서 가장 눈에 띄는 변화는 WTP 3.0에 새로 추가된 자바스크립트 개발 툴킷(JavaScript Development Toolkit, JSDT)이다. js 파일의 포맷팅 기능, 콜 계층 보기 지원 등의 기능이 눈에 띈다. 게다가 추가적인 자바스크립트 라이브러리의 지원을 위한 확장점도 제공하고 있으니, 자신만의 라이브러리를 지원하는 것도 용이하다. WTP 3.0에 포함된 기능이므로 WTP 3.0을 별도로 설치하거나 Java EE 버전 이클립스를 다운받으면 된다.

서브버전(SVN) 클라이언트 전쟁의 승자 –Subversive

가니메데에 서브버전 클라이언트로 Subversive 프로젝트가 채택되었다. 이미 그 전부터 예견된 일이었지만, 이로써 Subclipse보다 한 발 앞서 나가게 되었다.아직 서브버전 클라이언트를 결정하지 못했다면 Subversive를 도입해 보자. 승자라고 표현했지만, 정식 프로젝트로 합류가 빨랐을 뿐이지 아직 Subclipse가 사장되는 것은 아니 라는 점을 염두에 두자.

 

마치며

지금까지 이클립스 3.4 가니메데의 새로운 기능을 자바 개발자의 시각에서 알아보았다. 이클립스 는 새로운 버전이 나올 때 마다 하위 프로젝트의 규모가 계속 커지고 있 기에 새로운 기능을 모두 다루는 것은 현실적으로 불가능하다. 개인적으로는 여기서 소개한 내용 외에도 ECF 2.0 에 추가된 협업시스템을 이용한 인스턴스 메신저 와 짝 프로그래밍 지원 , DLTK프로젝트의 동적 언어 지원, 그리고 DSDP 프로젝트의 터미널 환경 지원 등 에 관심이 간다. 이처럼 자바 개발 환경 외에 새로운 기능 중에서도 자신에게 맞는 보석 같은 기능 들이 많이 숨겨져 있으니 간단히 한 번 살펴보는 것을 권한다 .

아직도 이클립스를 무거운 텍스트 에디터의 용도로 사용하 는 경우가 많은데, 시간을 조금만 투자하면 정말 훌륭한 IDE 로 활용할 수 있다. 필요한 기능부터 하나씩 적용해 나가보자 .

 

참고문헌

  1. 한눈에 보는 이클립스 가니메데
    http://www.ibm.com/developerworks/kr/library/os-eclipse-ganymede/index.html?ca=drs-kr

  2. Eclipse 3.4 – New and Noteworthy
    http://ganymede-mirror2.eclipse.org/eclipse/downloads/drops/R-3.4-200806172000/whatsnew3.4/eclipse-news.html

  3. Eclipse Ganymede: An in-depth look at JDT (Java Development Tools)

    http://www.infoq.com/news/2008/06/eclipse-ganymede-jdt

 

관련글

반응형

이클립스를 사용하다가 자주 버벅대는 경우와 뻗어버리는 경우가 생겼다.
heapsize를 체크해보니 64M 로 되어있는데 금방 차버리는 것이다.
분명 eclipse.ini 에 설정을 늘려놓았음에도 제대로 적용이 되지 않는것 같다.

이를 해결하는 방법
Eclipse.exe 아이콘의 오른쪽 버튼을 누른 후
[보내기] - [바탕화면에 바로가기 만들기] 로 생성한다
바탕화면에 생성된 Eclipse바로가기 아이콘에서 오른쪽 마우스를 누른 후
[속성]에서 대상 항목에 뒤에 다음과 같이 붙여 넣어주자

...\eclipse.exe -vmargs -XX:MaxPermSize=128m - Xms256m -Xmx512m

-Xms: Start memory
-Xmx: Extends memory

반응형

1. Project > Properties.

2. JRE System Library 의 앞 +를 클릭.

3. Native Library Folder Configuration을 클릭.

4. External Folder 나 Workspace를 선택하여 필요한 패스를 지정


반응형

이클립스 플러그인 중에 메모리 상태를 보여주는 플러그인입니다.

사용시에 좀 느리다 싶으시면 강제로 가비지컬렉션 버튼을 과감히 클릭하세요 ㅎㅎ

자세한 내용은 참조 하시길.. 프리웨어이니 맘껏 사용해도 됩니다..ㅋ

http://www.kyrsoft.com/downloads/downloads.html

위 링크가시면 그외 다른 플러그인 좋은게 많이 있네요..
Status line Monitor

Performing GC indication

Settings view
Warn color indication

+ Recent posts