등록 일 : 2008 - 04 - 23 14 : 06 : 48 
 제목 : 애플리케이션 테스트 , 프로파일 , 모니터링 
 자 바 ™ 애플리케이션 프로파일링 을 위해 Eclipse Test & Performance Tools Platform ( 이하 , TPTP ) 를 어떻게 사용 하 는지 와 메모리 사용량 을 측정 하 고 , 메모리 누수 ( memory leaks ) 를 확인 하 며 , 성능 병목 ( performance bottlenecks ) 을 없애 는 법 을 배우 겠 습니다 . 
 이번 튜토리얼 에 대해 
 이 튜토리얼 은 이클립스 와 TPTP 를 어떻게 설치 하 고 , 실행 한 자바 애플리케이션 의 프로파일링 을 어떻게 하 는지 보여 주 기 위해 , 한 단계 씩 차근차근 진행 할 것 이 다 . 
 필요 한 지식 과 소프트웨어 
 자바 소프트웨어 개발 이나 테스트 와 프로파일링 을 포함 한 개발 주기 전체 에 걸친 경험 이 있 으면 유리 하 다 . 또한 직접 커맨드 로 소프트웨어 를 설치 한 경험 이나 , 자바 CLASSPATH 처럼 셸 ( shell ) 이나 전역 시스템 환경 변수 를 설정 , 관리 해 본 경험 이 있 으면 더 좋 다 . 이클립스 와 SWT ( Standard Widget Toolki ) 에 대한 경험 또한 도움 이 된다 . 
 시 작하 기 전 에 , 여러분 이 사용 하 는 UNIX ®, Linux ®, Mac OS X 나 Microsoft ® Windows ® 시스템 에 몇 가지 소프트웨어 를 설치 해야 만 한다 . 자바 가상 머신 ( JVM ) , 이클립스 플랫 폼 의 복사본 , Eclipse TPTP 런타임 과 TPTP 에 의존 하 는 소프트웨어 몇 가지 가 필요 하 다 . 또한 애플리케이션 을 시작 하 고 , 프로파일링 을 해 주 는 TPTP 의 에이전트 컨트롤러 ( Agent Controller ) 가 필요 하 다 . 정리 해 보 면 다음 과 같 다 . 
 J 2 SE V 1 . 4 SDK 
 J 2 SE V 1 . 4 J 2 RE 
 이클립스 V 3 . 1 SDK 
 Eclipse Modeling Framework ( EMF ) SDK V 2 . 1 
 XML Schema Infoset Model ( XSD ) SDK V 2 . 1 
 이클립스 UML 2 V 1 . 1 . 1 
 TPTP 런타임 
 에이전트 컨트롤러 런타임 ( 사용 하 는 시스템 에 맞 는 버전 선택 ) 
 이클립스 업데이트 관리자 ( 선택 사항 ) 
 사 용 하 는 시스템 에 JVM 과 이클립스 가 설치 되 어 있 지 않 다면 , 모든 소프트웨어 를 위해 사용 할 수 있 는 여유 공간 이 적어도 300 MB 이상 있 는지 확인 하 자 . 또한 JVM 구동 을 위한 충분 한 물리 적 메모리 가 필요 하 다 . 일반 적 으로 64 MB 나 그 이상 의 물리 적 메모리 를 추천 한다 . 
 TPTP 소개 
 자바 코드 로 애플리케이션 이나 서블릿 을 작성 하 는 것 은 , 견고 하 며 개발 완료 수준 의 품질 이 보장 되 는 프로그램 을 전달 하 기 위한 긴 과정 중 첫 번 째 단계 일 뿐 이 다 . 코드 는 반드시 해당 오퍼레이션 과 정확 성 을 점검 하 기 위해 테스트 해야 한다 . 코드 는 성능 저하 를 불러오 는 병목 현상 과 특히 메모리 와 같 은 자원 낭비 와 부주 의 한 사용 을 제거 하 기 위해 프로파일링 되 어야 한다 . 또한 애플리케이션 오류 와 미수 로 그쳤 거나 실제 행해진 공격 을 세밀 하 게 찾아내 기 위해서 뿐 만 아니 라 개선 과 최적화 를 위한 가능 성 과 사용 패턴 을 확인 하 기 위해 모니터링 되 어야 한다 . 
 이클립스 TPTP 는 무엇 인가 
 테 스 트 , 프로파일 , 코드 모니터링 을 위한 도구 는 많이 존재 하 지만 , 대 규모 로 통합 된 도구 는 거의 없 다 . 게다가 이러 한 도구 는 일반 적 으로 벤 더 별로 각각 제공 되 어 , 매번 다른 사용자 인터페이스 ( UI ) , 컴파일러 , 진단 도구 를 파악 하 고 배우 는 데 값진 시간 과 노력 을 허비 하 게 된다 . 시간 과 돈 을 측정 해 볼 때 , 이렇게 특정 회사 소유 의 ( proprietary ) 도구 는 터무니 없 을 정도 의 투자 를 필요 로 한다 . 
 그러나 만약 테스트 , 프로파일러 , 모니터링 도구 가 오픈 소스 라면 어떻게 생각 하 는가 ? 그리고 이 도구 가 확장 성 이 뛰어나 , 어느 벤더 나 개발자 라도 새로운 도구 를 만들 거나 기존 도구 를 향상 시킬 수 있 다면 ? 그리고 이 도구 가 대중 적 이 고 친숙 한 기존 도구 와 매우 훌륭 하 게 통합 된다면 ? 꿈 같 은 얘기 일까 ? 전혀 꿈 이 아니 다 . 
 이클립스 TPTP 는 소프트웨어 아키텍처 이 며 테스트 , 성능 , 모니터링 도구 를 포함 하 도록 이클립스 플랫 폼 을 확장 한 몇 가지 컴포넌트 로 되 어 있 다 . 일부 자바 , C , C ++ 개발자 들 은 다른 개발자 들 을 위해 독특 한 도구 를 만드 는 데 TPTP 를 이용 하 기 도 하 고 또 다른 개발자 들 은 사용 자 들 을 위해 애플리케이션 을 빌 드 하 고 배치 하 는 데 TPTP 기반 도구 와 기타 이클립스 기능 을 한 데 엮 기 도 한다 . 
 TPTP 의 목적 
 간 단 하 게 말 해 TPTP 는 " 소프트웨어 개발자 들 이 전문 화 되 고 , 차별 성 을 갖 고 , 공동 으로 사용 할 수 있 는 일반 적 이 고 , 확장 가능 하 며 , 표준 기반 도구 플랫 폼 구축 " 을 목적 으로 하 는 이클립스 재단 의 최고 수준 ( top - level ) 프로젝트 다 . 핵심 만 다시 정리 해 보 면 , TPTP 는 자동 화 된 소프트웨어 품질 관리 를 위해 또 다른 도구 를 빌 드 해 주 는 도구 다 . 
 실제로 현재 발표 된 TPTP 는 핵심 부분 과 핵심 부분 에 기반 을 둔 세 가지 도구 를 포함 한다 . 
 TPTP 는 UI 개발 , 데이터 컬렉션 , 역할 기반 ( rule - based ) 의 데이터 쿼리 와 애플리케이션 컨트롤 을 위한 핵심 기반 을 제공 한다 . 예 를 들 어 , TPTP 는 다른 도구 가 재 사용 하 고 , 확장 할 수 있 는 많 은 마법사 기능 을 제공 한다 . 또한 프로그래밍 인터페이스 와 로컬 혹은 원격 에서 데이터 컬렉션 실행 을 편리 하 게 해 주 는 데 몬 을 제공 한다 . 
 TPTP 테스 팅 도구 
 이 프로젝트 는 모든 종류 의 애플리케이션 테스트 를 자동 화 하 기 위한 부 가 서비스 를 제공 한다 . 현재 발표 된 버전 에서 는 자동 화 된 테스트 기능 을 갖춘 JUnit 을 지원 한다 . 이 기능 은 직접 테스트 를 작성 하 고 , 결과 를 보관 하 며 , 테스트 지점 을 지정 할 수 있 는 시스템 과 웹 애플리케이션 테스트 를 위한 자동 화 된 시스템 을 제공 한다 . 이 웹 애플 리케 에 션 테스트 시스템 에 는 웹 브라우저 세션 과 인증 결과 를 녹화 하 고 , 다시 재생 할 수 있 는 기능 을 갖 고 있 는 녹화기 ( recorder ) 가 포함 된다 . 또한 이클립스 V 4 . 1 에 는 SWT 기반 인터페이스 에서 마우스 와 키보드 이벤트 를 녹화 하 고 , 재생 할 수 있 는 GUI 녹화기 ( recorder ) 의 초기 배포 버전 이 이미 포함 되 어 있 다 . 
 TPTP 모니터링 도구 
 이 프로젝트 는 애플리케이션 에서 수집 된 통계 정보 와 로그 파일 에서 데이터 를 수집 분석 해 시각 화 한다 . 
 TPTP 트레이싱 / 프로파일링 도구 
 이 프로젝트 는 운용 중 인 애플리케이션 에서 CPU 와 메모리 를 포함 한 자원 사용 을 수집 하 고 분석 하 기 위해 TPTP 를 확장 한다 . 또한 트레이싱 도구 를 이용 해 실행 중 인 프로세스 와 상호 작용 할 수 있 다 . 예 를 들 어 , 가비지 컬렉션 을 직접 강제 로 실행 할 수 있 고 , 메모리 " 누수 " 를 찾아내 수정 하 기 위해 현재 있 는 객체 풀 을 점검 할 수 있 다 . 
 그 외 에 도 TPTP 에 는 에이전트 컨트롤러 라 는 데몬 이 들 어 있 다 . 에이전트 컨트롤러 는 이클립스 워크 벤치 ( Eclipse Workbench ) 와 테스트 대상 이 되 는 애플리케이션 사이 의 연락 을 책임진다 . 이클립스 대신 에 자바 애플리케이션 을 로컬 이나 원격 에서 실행 할 수 있 으며 , 애플리케이션 로그 파일 을 포함 해서 애플리케이션 메트 릭스 를 워크 벤치 에 전달 한다 . 
 이제 이번 튜토리얼 에서 남 은 것 은 자바 기술 을 위한 TPTP 프로파일링 도구 의 몇몇 부분 을 시연 하 는 것 이 다 . 
 필수 적 으로 필요 한 소프트웨어 와 컴포넌트 설치 하 기 
 이 튜토리얼 을 시작 하 기 전 에 필요 한 소프트웨어 와 컴포넌트 를 설치 하 고 구성 해야 만 한다 . 
 J 2 SE 와 J 2 RE 설치 
 J 2 SE V 1 . 4 와 V 1 . 4 J 2 RE 를 다운로드 해 설치 하 자 ( 이미 시스템 에 J 2 SE V . 1 . 4 . 2 _ 10 이나 그 이상 의 버전 이 있 다면 이 단계 는 지나가 도 된다 ) . 
 일반 적 으로 J 2 SE SDK 와 JRE 는 스스로 압축 이 풀리 는 바이너리 로서 배포 된다 . 리눅스 에서 설치 도 다음 과 같이 매우 쉽 다 . 
 Listing 1 . J 2 SE SDK 와 JRE 설치 
 j 2 re 1 . 4 . 2 _ 10 / j 2 sdk 1 . 4 . 2 _ 10 / 
 이클립스 업데이트 관리자 를 사용 해 TPTP 설치 하 기 ( 선택 사항 ) 
 이미 이클립스 가 설치 되 어 있 다면 , TPTP 를 설치 하 기 위해 이클립스 업데이트 관리자 ( Eclipse Update Manager ) 를 사용 해도 된다 . 
 Help > Software Updates > Find and Install 클릭 
 Search for new features to install 옵션 을 선택 하 고 , Next 클릭 
 New Remote Site 를 클릭 하 고 , TPTP Update Site 와 http : / / eclipse . org / tptp / updates / site . xml 를 각각 이름 과 URL 로 정하 고 , Finish 클릭 
 설치 하 려는 기능 을 모두 선택 하 고 , Next 클릭 
 라이선스 동의 를 체크 하 고 , Next 를 클릭 한 다음 , Finish 를 클릭 
 확인 창 에서 Install All 을 클릭 하 면 설치 가 완료 되 고 이클립스 가 재 시작 된다 . 
 이제 에이전트 컨트롤러 설치 에 대해 상세 하 게 설명 하 고 있 는 에이전트 컨트롤러 설치 부분 을 넘어갈 수 있 다 . 아직 이클립스 를 설치 하 지 못 했 다면 , 계속 읽 어 나가 자 . 
 이클립스 V 3 . 1 SDK 설치 
 사용 하 는 플랫폼 에 맞 는 이클립스 3 . 1 SDK 를 다운로드 하 자 . Eclipse Downloads 에 서 SDK 를 찾 을 수 있 다 . 일반 적 으로 설치 는 Eclipse . tar . gz 파일 을 원하 는 디렉터리 에 압축 만 해제 하 면 끝날 만큼 매우 쉽 다 . 예 를 들 어 , 리눅스 를 사용 한다면 이클립스 V 3 . 1 SDK tar 버전 을 받 아서 , 다음 명령어 를 사용 해 ~/ java / 디렉터리 에 압축 을 해제 하 면 된다 . 
 % tar zxvf eclipse - SDK - 3 . 1 . 1 - linux - gtk . tar . gz 
 이클립스 가 제대로 설치 되 었 는지 확인 해 보 려면 이클립스 를 압축 해제 한 디렉터리 로 가 서 , PATH 에서 java 명령어 를 실행 할 수 있 는 지지 확인 하 고 , java - jar eclipse / startup . jar 를 실행 하 자 . 예 를 들 면 다음 과 같 다 . 
 Listing 2 . 이클립스 가 성공 적 으로 설치 되 었 는지 확인 하 기 
 % java - jar eclipse / startup . jar 
 워크스페이스 생성 을 위해 디렉터리 는 $ HOME / java / workspace 를 선택 하 자 . 이 디렉터리 에 이클립스 에서 만들 어 지 는 모든 프로젝트 가 포함 될 것 이 다 ( 물론 프로젝트 가 많 다면 , 워크스페이스 당 하나 의 프로젝트 를 포함 할 수 있 도록 나중 에 워크스페이스 를 다른 디렉터리 로 변경 할 수 있 다 ) . 
 EMF SDK 2 . 1 설치 
 실 행중 인 이클립스 가 있 다면 종료 하 고 , EMF SDK V 3 . 2 를 다운로드 하 자 ( EMF 웹 사이트 에 의하 면 , EMF 는 " 모델 링 프레임워크 이 며 , 구조 화 된 데이터 모델 을 기반 으로 하 는 애플리케이션 과 빌딩 도구 를 위한 코드 생성 기능 을 제공 한다 "). 파일 을 다운로드 한 후 에 , 이클립스 를 받 은 폴더 로 이동한 다음 emf - sdo - SDK - 2 . 1 . 0 . zip 을 압축 을 해제 하 자 . 예 를 들 면 다음 과 같 다 . 
 Listing 3 . emf - sdo - SDK - 2 . 1 . 0 . zip 압축 풀기 
 XSD 2 . 1 설치 
 XSD SDK 2 . 1 을 다운로드 하 자 ( 이 프로젝트 의 웹 사이트 에 따르 면 , XSD 는 " W 3 C XML 스키마 규약 에 따른 XML 스키마 컴포넌트 를 처리 하 기 위한 API 를 제공 하 는 라이브러리 다 "). 받 은 파일 을 이클립스 를 포함 하 고 있 는 디렉터리 로 옮기 고 , unzip xsd - SDK - 2 . 1 . 0 . zip 를 실행 하 자 . 예 를 들 면 다음 과 같 다 . 
 % unzip xsd - SDK - 2 . 1 . 0 . zip 
 어떤 파일 을 덮어쓰 기 해야 한다고 하 면 , 간단히 y ( 소문자 ) 를 누르 자 . 
 UML V 2 . 0 메타 모델 ( Metamodel ) 구현 체 설치 하 기 
 TPTP 에서 UML ( Unified Modeling Language ) 을 사용 하 려면 UML V 2 . 0 메타 모델 구현 체 를 설치 해야 한다 . 이클립스 V . 3 . 1 . 1 을 사용 한다면 , UML 2 V 1 . 1 . 1 을 다운로드 하 고 나 서 , 이클립스 가 포함 되 어 있 는 디렉터리 에 압축 을 해제 하 자 . 
 % unzip uml 2 - 1 . 1 . 1 . zip 
 TPTP 런타임 설치 
 다 음 단계 로 두 가지 시스템 을 통합 하 는 데 필요 한 TPTP 기능 과 이클립스 플러그인 이 들 어 있 는 TPTP 런타임 을 다운로드 하 자 . TPTP 를 설치 하 려면 이클립스 가 포함 되 어 있 는 디렉터리 로 변경 하 고 , unzip tptp . runtime - TPTP - 4 . 1 . 0 . zip 을 실행 하 자 . 예 를 들 면 다음 과 같 다 . 
 % unzip tptp . runtime - TPTP - 4 . 1 . 0 . zip 
 에이전트 컨트롤러 설치 
 에 이전 트 컨트롤러 는 애플리케이션 을 이클립스 에서 실행 하 고 , 프로파일링 데이터 를 추출 하 기 위해 해당 애플리케이션 과 상호 작용 하 는 TPTP 의 핵심 컴포넌트 다 . OS 에 적합 한 에이전트 컨트롤러 런타임 을 다운로드 하 자 . 그 다음 으로 이클립스 가 들 어 있 는 같 은 디렉터리 에서 tptpd 라는 이름 으로 디렉터리 를 만들 고 , 그 디렉터리 에 에이전트 컨트롤러 압축 을 푼다 . 명령 은 다음 과 같 다 . 
 % mkdir $ JAVA _ DIR / tptpd 
 % unzip tptpdc . linux _ ia 32 - TPTP - 4 . 1 . 0 . zip 
 실행 후 에 다음 두 개 의 에러 를 볼 수 도 있 다 . 
 linking : lib / libxerces - c . so 
 warning : symbolic link ( lib / libxerces - c . so . 24 ) failed 
 이 경우 다음 명령 을 직접 입력 해 링크 두 개 를 재생성 해야 만 한다 . 
 % cd $ JAVA _ DIR / tptpd / lib 
 % ln - s libxerces - c . so . 24 . 0 libxerces - c . so . 24 
 에이전트 컨트롤러 디렉터리 추가 하 기 
 에이전트 컨트롤러 를 사용 하 려면 LD _ LIBRARY _ PATH 밑 에 lib 디렉터리 를 추가 해야 한다 . 예 를 들 어 , 리눅스 를 사용 하 고 위 에서 제시 한 디렉터리 구조 를 동일 하 게 적용 했 다면 , 다음 과 같이 $ JAVA _ DIR / tptpd / lib 를 추가 하 면 된다 . 
 또한 Controller 의 lib 과 bin 디렉터리 에 대한 실행 권한 을 보장 해야 만 한다 . 그렇게 하 기 위해서 는 다음 커맨드 를 실행 하 자 . 
 이제 PATH 상 에 에이전트 컨트롤러 를 구성 하 고 , 시작 하 고 , 중지 하 는 스크립트 를 추가 하 자 . 
 사용 하 는 환경 에 맞 게 에이전트 컨트롤러 구성 하 기 
 마지막 으로 여러분 이 사용 하 는 환경 에 맞춰 에이전트 컨트롤러 를 구성 해 보 자 . 에이전트 컨트롤러 의 bin 디렉터리 로 이동 하 고 SetConfig . sh 를 실행 하 자 . 
 % cd $ JAVA _ DIR / tptpd / bin 
 % . / SetConfig . sh 
 구성 스크립트 가 질문 을 하 면 기본 값 을 받아들이 라 . 구성 스크립트 를 실행 하 면 에이전트 컨트롤러 의 파일 구조 에 있 는 config / serviceconfig . xml 파일 이 만들 어 진다 . 
 에이전트 컨트롤러 테스트 
 에이전트 컨트롤러 를 테스트 하 기 위해 , RAStart . sh 를 실행 하 자 . 에이전트 컨트롤러 를 멈추 려면 RAStop . sh 를 실행 한다 . 
 Listing 4 . 에이전트 컨트롤러 중지 하 기 
 db % RAStart . sh 
 이제 끝 났 다 ! 이클립스 를 다시 시작 하 자 . 이제 그림 1 과 같 은 새로운 버튼 을 이클립스 도구 모음 에서 볼 수 있 다 바로 TPTP 프로파일 버튼 이 다 . TPTP 는 설치 되 었 고 , 다음 부분 을 계속 할 준비 가 됐 다 . 
 그림 1 . TPTP 프로파일 버튼 
 자바 애플리케이션 프로파일링 
 이제 TPTP 설치 가 완료 됐 고 , 돌아가 고 있 다 . 이클립스 를 실행 하 자 . 
 프로파일링 을 위한 자바 애플리케이션 은 Listing 5 에서 볼 수 있 다 . 
 Listing 5 . 작 은 수 의 객체 들 묶음 의 이동 에 대한 간단 한 자바 애플리케이션 
 이 자바 애플리케이션 은 단순 하 다 . 장난감 로켓 배 를 " 만들 고 ", " 선적 " 한다 . 각각 의 장난감 은 다른 객체 를 포함 하 는 자바 객체 로 표현 되 는데 각각 장난감 의 일부분 을 나타낸다 . 각 장난감 은 장난감 의 각 부분 을 만드 는데 일정 한 시간 이 걸린다 . 
 애플리케이션 을 사용 하 기 위해서 는 0 에서 8 사이 의 숫자 를 입력 해 장난감 을 만들 어야 한다 . 같 은 키 를 반복 해 입력 했 다면 , 만들 어 진 장난감 은 " 선적 " 되 며 , 해당 객체 는 가비지 컬렉션 에 의해 레퍼런스 가 제거 된다 . 그 결과 한 번 에 메모리 에 최대 9 개 의 장난감 을 불러 들일 수 있 다 ( 9 개 의 장난감 은 만들 어 졌 지만 , 선적 되 지 는 않 았 다고 가정 함 ) . 
 메모리 누수 확인 을 위한 참조 되 지 않 는 객체 를 만들 기 위해 9 키 를 누르 자 . 애플리케이션 을 종료 하 려면 q 키 를 누르 면 된다 . 
 프로파일링 세션 실행 
 " Toy Factory " 를 실행 , 프로파일링 하 기 위해 이클립스 와 TPTP 를 사용 하 자 . TPTP 는 활성 화 된 객체 의 숫자 , 실행 시간 등 부가 적 인 정보 를 보여 줄 수 있 다 . 이클립스 와 TPTP 를 사용 하 는 과정 은 다음 과 같 다 . 
 에이전트 컨트롤러 실행 
 에이전트 컨트롤러 의 bin 디렉터리 로 변경 하 고 , RAStart . sh 실행 
 이클립스 에서 워크 벤치 로 이동한 다음 , File > New > Project 를 클릭 해 새로운 자바 프로젝트 를 생성 하 자 . Options 목록 에서 Java Project 를 선택 하 고 Next 를 클릭 한다 . 
 다음 창 에서 프로젝트 이름 을 Toy Maker 로 주 고 , Finish 를 클릭 하 자 . 새로운 프로젝트 의 이름 인 " Toy Maker " 는 Package Explore 패널 에서 확인 할 수 있 다 . 
 example 패키지 안 에 SpaceShipToy 라는 새로운 자바 클래스 를 만들 자 . File > New > Class 를 클릭 하 자 . 
 다음 으로 나오 는 창 에서 Package 필드 에 는 example 을 넣 고 , Name 필드 에 는 SpaceShipToy 를 입력 하 자 . 이 창 에서 다른 값 은 설정 하 지 않 는다 . 
 Finish 를 클릭 하 자 . 이제 새로 생성 한 클래스 의 구조 ( skeleton ) 를 확인 할 수 있 다 . 
 이클립스 클래스 편집기 에 Listing 1 에 나왔 던 코드 를 붙여 넣 는다 . 비 어 있 는 클래스 정의 부분 은 변경 됐 지만 , package example 선언 이 남 아 있 는지 확인 하 자 . 코드 를 저장 해 변경 사항 을 적용 하 면 이클립스 가 새 버전 의 클래스 를 자동 으로 다시 컴파일 한다 . 
 애플리케이션 을 실행 하 고 싶 은 경우 , Run > Run . .. 을 클릭 하 고 , Java Application 을 더블 클릭 한 다음 , SpaceShipToy 를 선택 한 후 , Run 을 클릭 하 자 . 애플리케이션 의 작동 을 확인 하 기 위해 Windows > Show View . .. 를 클릭 하 고 , Console 을 선택 하 자 . 
 1 ( 숫자 1 ) 을 입력 하 고 Return 을 누르 자 . 화면 이 그림 2 처럼 보일 것 이 다 . 
 그림 2 . 이클립스 에서 실행 되 는 장난감 공장 
 동일 애플리케이션 프로파일링 
 위 에서 다룬 똑 같 은 애플리케이션 을 프로파일링 하 는 과정 은 다음 과 같 다 . 
 TPTP Profile 을 클릭 한 다음 , Profile . .. 을 선택 하 자 . 
 SpaceShipToy 을 다시 보 기 위해 Java Application 을 확장 하 자 . Profile 창 은 Run 을 클릭 했 을 때 나타나 는 Run 창 과 비슷 하 지만 , Profile 이 라는 추가 탭 이 있 다 . 
 프로파일러 내 에서 애플리케이션 을 시작 하 기 위해 Profile 을 클릭 하 자 . Perspective 가 자동 으로 변경 되 지 않 으면 , Window > Open Perspective > Other . .. 를 클릭 한 다음 Profiling and Logging 을 선택 하 자 . 
 Profiling 과 Logging perspective 가 나타났 을 때 , Profiling Monitor 뷰 의 내용 을 확장 하 고 , < monitoring > 으로 시작 하 는 줄 을 선택 하 자 . 이 줄 을 선택 했 을 때 , Console 뷰 가 나타난다 . 
 0 , 1 , 2 와 9 를 입력 하 자 . 화면 에 그림 3 과 같 은 내용 이 나온다 . 
 그림 3 . 실행 중 인 애플리케이션 의 Profiling 과 Logging perspective 
 Memory Statistics 뷰 를 클릭 하 고 , example 패키지 와 관련 된 줄 을 확장 하 자 . 이 뷰 는 그림 4 와 같 다 . 각 객체 는 4 개 의 인 스턴스 ( 장난감 을 " 만들 기 " 위한 세 개 와 참조 되 지 않 은 장난감 하나 의 인 스턴스 ) 를 갖 고 있 다 . 
 그림 4 . 세 개 의 toy 오브젝트 와 하나 의 참조 되 지 않 은 toy 오브젝트 가 빌 드 된 후 메모리 소모 내역 
 Memory Statistics 뷰 에 있 는 칼럼 은 인 스턴스 와 사용 하 고 있 는 메모리 통계 를 추적 해 준다 . 
 Total Instances 는 클래스 의 총 인 스턴스 개수 를 반영 한다 . 
 Live Instances 는 얼마나 많 은 인 스턴스 가 계속 참조 되 고 있 고 , 가비지 컬렉터 에 의해 수집 되 지 않 았 는지 보여준다 . 
 Collected 는 얼마나 많 은 클래스 의 인 스턴스 를 가비지 컬렉터 가 수집 했 는지 보여준다 . 
 Total Size ( bytes ) 와 Active Size ( bytes ) 는 모든 인 스턴스 가 사용 하 고 있 는 누적 된 총 메모리 양 과 현재 존재 하 는 인 스턴스 에 의해 실제로 사용 되 는 메모리 양 을 각각 보여준다 . 
 시험 실행 끝 내기 
 이번 시험 실행 을 끝마치 려면 Console 뷰 를 뒤 로 넘기 고 0 , 1 과 2 숫자 키 를 다시 누른다 . 가비지 컬렉션 을 강제 로 하 기 위해 Monitoring 뷰 에 있 는 trash 아이콘 을 클릭 하 자 . 가비지 컬렉션 이 완벽 하 게 수행 됐 다면 참조 되 지 않 은 모든 객체 를 수집 해 간다 . 언제 든지 Refresh ( 그림 5 ) 를 클릭 함 으로써 , 현재 Perspective 에 있 는 모든 뷰 를 새로 고칠 수 있 다 . 
 그림 5 . Refresh 버튼 
 원 하 는 데이터 찾 기 
 Profiling 과 Logging perspective 는 애플리케이션 상태 에 대한 많 은 양 의 정보 를 보여 주 는 뷰 집합 을 제공 한다 . 이 목록 을 보 기 위해서 는 Window > Show View > Other . .. 를 클릭 한 다음 , Profiling and Logging 에 있 는 목록 을 확장 하 자 . 이 목록 은 그림 6 처럼 보일 것 이 다 . 
 그림 6 . Profiling and Logging 뷰 목록 
 뷰 확인 을 위한 데이터 수집 
 문 제 해결 에 더 접근 하 기 위해 , 활성 화 된 하나 이상 의 뷰 에서 데이터 를 수집 할 수 있 다 . 이전 절 에서 수집 한 데이터 는 단지 Memory Statistics 뷰 에서 볼 수 있 는 메모리 통계 뿐 이 었 다 . 다시 이 뷰 를 불러올 수 있 다면 , 그림 7 과 같 은 Monitoring 뷰 를 볼 수 있 다 . 
 그림 7 . Monitoring 뷰 에서 제공 하 는 기본 통계 
 리 스 트 최 하단 을 확장 하 면 사용 하 는 메모리 를 위한 단순 통계 정보 만 을 포함 한 현재 프로파일 구성 을 보여준다 . 가능 한 많 은 정보 를 모을 수 있 는 새로운 프로파일 구성 을 생성 해 보 자 . 이 프로 파일 을 통해 프로파일링 과 성능 도구 에서 제공 하 는 모든 정보 를 표 와 그림 으로 찾 아 볼 수 있 다 . 
 TPTP 프로파일 버튼 에 있 는 작 은 화살표 를 클릭 하 고 , Profile . .. 을 선택 하 자 . 
 Profile 창 에서 SpaceShipToy 를 선택 하 고 , 창 의 왼쪽 하단 에 있 는 New 를 클릭 하 자 . 
 오른쪽 가장 자리 상단 에 있 는 Name 필드 에 Lots of Data 를 입력 하 고 , Apply 를 클릭 하 자 . 
 Profiling 탭 을 클릭 하 고 , Add . .. 를 클릭 하 자 . 
 다음 창 에서 , Profile set name 에 All 을 , Description 필드 에 는 All of the data that ' s available 을 입력 하 고 , Next 를 클릭 하 자 . 
 다음 패널 에서 수집 하 고자 하 는 데이터 를 선택 할 수 있 다 . 모든 항목 을 확장 한 다음 , 그림 8 에 나오 는 모든 체크 박스 를 선택 하 자 . 
 그림 8 . 선택 한 메트 릭스 
 Execution Time Analysis 를 클릭 하 자 . 
 Collect method CPU time information 체크 박스 를 선택 하 고 , Show execution flow graphical details 옵션 을 선택 하 자 . Next 를 다시 한 번 클릭 하 고 , 그림 9 처럼 다음 창 에서 필요 없 는 클 래스 들 을 걸러낼 수 있 다 . 
 그림 9 . 프로파일링 에서 관계없 는 클래스 제외 하 기 
 이 예제 의 목적 을 위해 , 새로운 필터 집합 을 추가 해야 하 며 , 이 를 위해 패널 의 상단 에 있 는 Add . .. 를 클릭 하 자 . 필터 이름 으로 No Monkey Business 를 입력 하 고 , OK 를 클릭 하 자 . 
 필터 집합 을 위한 새로운 규칙 을 추가 하 기 위해 규칙 의 목록 오른쪽 에 있 는 Add . .. 를 클릭 하 자 . Class name 필드 에 는 example . SpaceShipToy 를 , Method name 필드 에 는 main ( " asterisk ") 를 입력 하 고 , Rule 에서 는 EXCLUDE 를 선택 하 고 ( 그림 10 ) , OK 를 클릭 하 자 . 
 그림 10 . 필터 규칙 수정 하 기 
 이전 큰 창 에서 Apply 를 클릭 한다 . 
 애플리케이션 에 대한 프로파일 과 수집 할 정보 의 표 를 정의 했 다 . 이제 Profile 을 클릭 하 자 . 
 Profiling and Logging perspective 에서 Memory Statistics 뷰 를 열 자 . 만들 었 던 규칙 이 적용 되 어 example . SpaceShipToy . main ( ) 메서 드 를 제외 한 실행 결과 표 를 볼 수 있 다 . 
 팁 과 비결 
 TPTP 에서 는 애플리케이션 을 자세히 들여다 볼 수 있 도록 도와 주 는 많 은 기능 을 제공 한다 . 그리고 TPTP 가 이클립스 의 일부 로 자연 스럽 게 통합 되 어 이클립스 의 다른 기능 들 과 조화 롭 게 엮여 있 어 매우 편리 하 게 사용 할 수 있 을 것 이 다 . 
 이제 몇 가지 유용 한 비결 을 소개 하 겠 다 . 
 빠른 데이터 필터 
 프 로 파일 링 세션 을 시작 하 고 , Execution Statistics 뷰 를 열 어 보 자 . 이 뷰 는 애플리케이션 에 있 는 모든 클래스 와 메서 드 를 보여준다 ( 최소한 프로파일 집합 에서 걸러 내 지 않 은 것 들 ) . 그림 11 처럼 단축 메뉴 를 열 기 위해 뷰 화면 에서 마우스 오른쪽 버튼 을 클릭 하 자 . 
 그림 11 . 단축 메뉴 
 Filter out . .. 을 클릭 하 고 , Profiling 을 선택 한 다음 , OK 를 클릭 하 자 . 다음 창 에서 ( 그림 12 ) Monkey Business 를 Filter name 으로 입력 하 고 , Filter string 에 는 ' build ' 를 준 다음 , 그 아래 에 있 는 Filter by 옵션 은 Method name 으로 선택 하 자 . 이제 OK 버튼 을 클릭 하 고 , 다시 한 번 OK 를 누르 자 . 
 그림 12 . 필터 화면 수정 하 기 
 이제 뷰 는 example . SpaceShipToy $ Monkey . build ( ) 메서 드 에 해당 하 는 통계 정보 만 보여 줄 것 이 다 . 
 다시 모든 메서 드 에 대한 정보 를 보 기 위해 본래 상태 로 돌아가 려면 Filter ( 그림 13 ) 를 클릭 하 고 , No filter 를 선택 하 면 된다 . 필터 를 수정 하 기 위해서 는 , 같 은 버튼 을 클릭 하 고 , Manage filters . .. 를 클릭 하 자 . 
 그림 13 . 필터 버튼 
 소스 로 이동 하 기 
 Execution Statistics 뷰 에서 계속 해 보 자 . SpaceShipToy $ Booster 클래스 를 더블 클릭 하 자 . Perspective 는 Java 로 변경 되 며 , 내부 클래스 ( inner class ) 인 Booster 의 선 언부 로 즉각 이동 하 게 된다 . Memory Analysis 뷰 와 Eclipse Code Editor 사이 의 연결 은 개발자 에게 정말 귀중 한 선물 이 다 . 
 더 발전 된 arbitrarily complex filters 
 Editor Filter 창의 Advanced 탭 을 사용 해 arbitrarily complex filters 를 빌 드 할 수 있 다 . advanced filter 는 규칙 의 연속 이 며 , 각 규칙 은 속성 ( property ) , 상태 ( condition - " equal ", " not equal ", " like " 와 같 은 ) , 값 ( value ) 의 목록 을 갖 고 있 다 . 단일 인 스턴스 가 어느 정도 메모리 를 얼마나 소모 하 는지 잘 살펴 볼 필요 가 있 을까 ? 고급 필터 를 사용 해 보 면 매우 감명 받 을 것 이 다 . 
 구성 과 정렬 
 대부분 의 데이터 뷰 는 패키지 , 클래스 , 메서 드 에 의해 데이터 를 구성 한다 . 그림 14 처럼 뷰 상단 에 있 는 세 개 버튼 중 하나 를 클릭 함 으로써 데이터 구성 방법 을 빠르 게 변경 할 수 있 다 . 
 그림 14 . 데이터 구성 을 위한 버튼 세 개 
 왼쪽 에서 오른쪽 으로 각각 패키지 , 클래스 , 메 서드 버튼 이 있 고 , 이 버튼 에 의해 데이터 를 구성 할 수 있 는 것 을 볼 수 있 다 . 
 칼럼 제목 을 클릭 함 으로써 모든 데이터 를 정렬 할 수 도 있 다 . 일단 칼럼 의 제목 을 한 번 클릭 하 면 오름차순 으로 정렬 되 며 , 다시 한 번 같 은 칼럼 의 머리말 을 클릭 하 면 데이터 가 내림차순 으로 정렬 되 는 것 을 알 수 있 다 . 
 UML 2 시퀀스 다이어그램 을 사용 해 코드 보 기 
 TPTP 는 실행 중 인 애플리케이션 에 대한 매우 유용 한 시각 화 된 정보 ( visualization ) , 바로 UML 2 시퀀스 다이어그램 을 제공 한다 . 이 다이어그램 은 클래스 와 메 서드 간 의 호출 흐름 을 보여 줄 뿐 만 아니 라 , 애플리케이션 실행 시간 의 대부분 을 소모 하 는 코드 의 특정 부분 ( hot spots ) 만 을 강조 해 보여 줄 수 있 다 . 
 시퀀스 다이어그램 에서 코드 보 기 
 UML 2 시퀀스 다이어그램 을 사용 해 코드 를 보 기 위해서 는 다음 과정 을 거쳐야 한다 . 
 프로파일링 하 는 장난감 공장 애플리케이션 의 모든 인 스턴스 를 종료 한다 . 
 TPTP 프로파일링 버튼 에서 작 은 화살표 를 클릭 한다 . Profile . .. 을 선택 하 고 , SpaceShipToy 를 선택 한다 . 그 다음 Profiling 탭 을 클릭 하 고 , All 을 선택 한다 . 
 ( 필요 한 경우 ) Apply 를 클릭 하 고 , Profile 을 클릭 한다 . 
 Profiling Monitor 뷰 에서 애플리케이션 이 시작 한 것 을 확인 했 으면 , 새로 실행 된 프로세스 에서 마우스 오른쪽 을 클릭 하 고 , Open With . .. > UML 2 Thread Interactions 를 선택 해 UML 2 class interactions 뷰 를 열 자 . 애플리케이션 이 막 시작 했 기 때문 에 , 그림 15 처럼 , 아직 다이어그램 에 는 main ( ) 을 호출 한 것 만 보인다 . 
 그림 15 . main ( ) 호출 에 대한 간단 한 UML 다이어그램 
 Console 뷰 로 변경 하 고 , 메 서드 호출 을 좀 더 만들 기 위해 애플리케이션 을 조작 하 자 . 그리고 나 서 UML 2 Trace Interactions 뷰 로 돌아오 자 . UML 다이어그램 내용 이 늘어났으며 , 아마 그림 16 과 같이 보일 것 이 다 . 
 그림 16 . 예 제 애플리케이션 의 UML 2 뷰 
 오른쪽 여백 에 빨간 막대 에 마우스 를 올려 놓 으면 CPU 시간 소모 에 대한 측정 계 가 나타난다 ( 그림 17 ) . 
 그림 17 . CPU 소모 측정 계 
 최대치 를 가리키 며 빨간색 불 이 들어왔 다 . 예 제 애플리케이션 의 컨텍스트 에서 SpaceShipToy 클래스 의 구축 이 완벽 하 게 병목현상 에 빠졌 다는 의미 다 . 
 객체 레퍼런스 분류 하 기 
 실행 중 인 애플리케이션 을 위한 또 다른 유용 한 시각 화 는 애플리케이션 에서 각 객체 타입 의 참조 개수 를 보여 주 는 Object Reference 뷰 다 . 자바 코드 가 과도 한 양 의 메모리 를 사용 하 는 것 처럼 보인다면 , 객체 참조 를 수집 해 보여 주 는 이 기능 을 사용 해 과도 하 게 메모리 를 쓰 는 코드 를 찾아내 자 . 
 Object Reference 뷰 사용 하 기 
 Object Reference 뷰 는 다른 TPTP 뷰 만큼 이나 쉽 게 사용 할 수 있 다 . 
 프로파일링 하 고 있 는 모든 프로세스 를 종료 하 자 . 
 Profiling Monitor 에서 마우스 오른쪽 버튼 을 클릭 하 고 , Unload Profiling Data 를 선택 하 자 . 여태 까지 수집 된 모든 데이터 를 삭제 하 기 위해 계속 따라 해 보 자 . 
 이전 화면 으로 돌아가 모든 프로세스 를 선택 하 고 , Delete 를 누르 자 . 확인 을 위한 창 이 뜨 면 , Do not delete contents 를 선택 하 고 , Yes 를 클릭 하 자 . 
 Toy factory 의 프로파일링 세션 을 새로 시작 하 자 . Console 뷰 로 이동해 , 두 개 의 toy 를 만들 고 세 번 째 는 참조 되 지 않 은 " toy " 를 만들 기 위해 1 2 9 를 차례 로 누르 자 . 
 Profinling Monitor 뷰 에서 Collect object references 를 클릭 함 으로써 객체 를 수집 할 수 있 다 ( 그림 18 ) . 
 그림 18 . Collect Object Reference 버튼 
 이클립스 도구 모음 에서 , Object Reference 뷰 를 열 기 위해 Open Object References ( 그림 19 ) 를 클릭 하 자 . Object Reference 뷰 는 애플리케이션 에서 사용 하 는 객체 와 이 객체 의 참조 에 대한 개수 의 목록 을 제공 한다 . 
 그림 19 . Object Reference 버튼 
 SpaceShipToy 를 확장 하 자 . 그림 20 과 같 은 차트 를 볼 수 있 다 . Toy 세 개 를 만들 었 고 , 각각 의 toy 는 두 개 의 monkey astronauts 와 세 개 의 states 에 더 해 , 하나 의 booster 와 하나 의 capsule 을 포함 하 고 있 는 것 을 정확 하 게 말 해 준다 . 
 그림 20 . 특정 시점 에서 예 제 애플리케이션 의 객체 참조 
 로컬 자바 애플리케이션 에서 TPTP 사용 하 기 
 이 클립스 워크 벤치 를 통해 자바 애플리케이션 프로파일링 을 구축 하 고 , 실행 하 는 것 외 에 도 로컬 머신 에서 이미 실행 중 인 자바 애플리케이션 을 프로파일링 할 수 도 있 다 ( 여기 서 원격 애플리케이션 에 대한 프로 파일 을 다루 지 는 않 지만 , 원격 머신 에 대한 프로파일링 또한 가능 하 다 ) . TPTP 를 통해 프로세스 에 attach 할 수 도 있 다 . 프로세스 에 어태 치 할 때 , 여태 까지 배운 메모리 할당 을 찾 는 방법 과 메모리 를 들춰 보 는 ( peek ) 도구 를 모두 사용 할 수 있 다 . 
 로컬 자바 애플리케이션 어태 치 
 로컬 자바 애플리케이션 을 어태 치 하 기 위해 다음 과정 을 따라 하 자 . 
 Profiling Monitor 뷰 에서 현재 실행 중 인 모든 프로세스 를 종료 하 고 , 삭제 하 자 . 
 커맨드 창 을 열 고 , JRE 를 참조 하 는 PATH 와 JAVA _ HOME 환경 변수 가 제대로 돼 있 는지 확인 하 자 . 
 TPTP 라이브러리 에 포함 되 어 있 는 LD _ LIBRARY _ PATH 를 확인 하 자 . 현재 테스트 시스템 에서 는 다음 과 같이 환경 변수 값 을 확인 할 수 있 었 다 ( 여러분 이 사용 하 는 경로 이름 과 디렉터리 이름 은 다를 수 있 으며 , 이 변수 는 시스템 환경 에 종속 된다 ) . 
 TPTP 에이전트 컨트롤러 가 현재 실행 중 인지 확인 하 자 . 에이전트 컨트롤러 가 포함 되 어 있 는 디렉터리 로 이동한 다음 , 데몬 을 중지 하 고 다시 시작 하 자 . 
 각각 의 factory 애플리케이션 을 별도 의 독립 적 인 자바 애플리케이션 으로 실행 하 자 . 
 예 제 애플리케이션 을 포함 하 고 있 는 작업 디렉터리 로 변경 하 자 . 아마도 $ HOME / workspace / ToyMaker 일 것 이 다 . 이 디렉터리 내 에 SpaceShipToy . java 와 이 자바 파일 의 . class 파일 을 포함 하 고 있 는 example 이 란 이름 의 디렉터리 가 보일 것 이 다 . 
 현재 작업 디렉터리 에서 , CLASSPATH 에 . ( " 점 ", dot ) 을 추가 하 자 . 
 % cd $ HOME / workspace / Toy Maker 
 이클립스 를 실행 하 고 , TPTP Profile 버튼 에 있 는 작 은 화살표 를 클릭 하 자 . 왼쪽 리스트 에 있 는 Profile . .. 을 선택 하 고 , Attach - Java Process 를 더블 클릭 하 자 . 
 다음 화면 에서 Name 필드 에 Toys 를 입력 하 고 , host 로 는 localhost 를 선택 하 자 . 다음 으로 Apply 를 클릭 하 자 . 
 그림 21 처럼 , Agents 탭 을 클릭 해 agent 를 선택 하 자 . 
 그림 21 . 어태 치 를 위한 agent 선택 하 기 
 화면 에 나온 agent 를 클릭 한 다음 ( 다른 애플리케이션 이나 프로세스 가 프로파일링 되 지 않 는다면 , 적어도 지금 은 agent 가 하나 뿐 일 것 이 다 ) > 를 클릭 하 자 . 변경 사항 을 저장 하 기 위해 Apply 를 다시 클릭 하 자 . 
 Profiling 탭 을 선택 하 고 , Profiling set 을 지정 함 으로써 우리 가 수집 하 길 원하 는 데이터 를 선택 하 자 . All 을 선택 할 수 도 있 고 , 이전 에 만들 었 던 것 중 에서 선택 할 수 도 있 다 . 
 Apply 를 클릭 한 다음 , Profile 을 클릭 하 자 . 이클립스 는 Profiling and Logging perspective 로 perspective 를 변경 할 것 이 다 . 
 대부분 의 시스템 에서 는 그림 22 처럼 창 이 뜰 것 이 다 . 
 프로파일링 리마 인 더 
 이 경고 는 일반 적 이 며 , 프로세스 에 어태 치 하 기 는 했 지만 , 사용 할 때 는 반드시 모니터링 을 수동 으로 해야 한다고 상기 시켜 주 는 역할 을 한다 . 모니터링 을 시작 하 기 위해서 는 새로 실행 된 프로파일 프로세스 에서 마우스 오른쪽 버튼 을 클릭 하 고 , Start monitoring 을 선택 하 자 . 
 커맨드 창 으로 돌아와 애플리케이션 을 다뤄 보 자 . 다시 실행 중 인 애플리케이션 을 살펴보 기 위해 이클립스 로 돌아가 자 . 애플리케이션 을 종료 할 때 는 , Terminate Process 버튼 을 클릭 하 자 ( 그림 23 ) . 
 그림 23 . Terminate Process 버튼 
 해당 프로세스 가 커맨드 창 에서 삭제 되 는 것 을 볼 수 있 다 . 
 이 튜토리얼 은 프로파일링 을 통해 자바 애플리케이션 을 다듬 고 , 발전 시킬 수 있 는 방법 을 설명 하 고 있 다 . 이클립스 TPTP 를 사용 해 코드 를 실행 할 수 있 고 , 메모리 가 허비 되 고 , 성능 이 떨어지 는 원인 이 되 는 부분 을 찾 을 수 있 다 . TPTP 는 많 은 로그 파일 과 테스트 결과 를 분석 하 고 , 자동화 를 통합 해 주 는 도구 또한 제공 한다 . 
 TPTP 에 는 몇 가지 추가 도구 가 있 다 . 대표 적 인 것 으로 는 이클립스 에서 실행 중 인 애플리케이션 의 GUI 를 테스트 하 기 위한 편리 한 녹화 - 재생 도구 와 이클립스 기반 애플리케이션 을 프로파일링 하 기 위해 특별히 디자인 된 테스트 를 포함 하 는 XRay 가 있 다 . 
 Eclipse Test & Performance Tools Platform , Part 1 
 이클립스 테스트 / 성능 개선 도구 플랫폼 에 대한 더 많 은 정보 를 얻 기 위해 이 튜토리얼 연재 의 Part 2 와 Part 3 도 읽 어 보 자 . 
 이클립스 재단 과 재단 에서 진행 중 인 프로젝트 들 에 대해 더 알아보 자 . 
 이클립스 테스트 / 성능 개선 도구 플랫 폼 의 다양 한 기능 을 찾아보 자 . 
 이클립스 TPTP 에서 최근 더욱 더 조명 받 는 문서 , 발표 자료 , 스크린 캐스트 에 대해 찾아보 자 . 
 IBM developerWorks 의 Eclipse 프로젝트 리소스 ( 한글 ) 를 방문 해 이클립스 기술 능력 을 향상 시키 자 . 
 오픈 소스 기술 과 IBM 제품 을 사용 한 개발 을 돕 기 위해 다양 하 고 실용 적 인 정보 , 도구 , 프로젝트 업데이트 를 다루 는 한국 developerWorks 의 오픈 소스 존 을 방문 하 자 . 
 J 2 SE V 1 . 4 SDK 와 JRE 를 다운로드 하 기 위해 썬 마이크 로 시스템즈 를 방문 하 자 . 
 오픈 소스 이 며 , 자유 롭 게 이용 할 수 있 고 , 확장 가능 한 IDE 인 이클립스 를 다운 받 자 . 
 이클립스 테스트 / 성능 개선 도구 플랫 폼 을 다운로드 하 자 . 
 이클립스 TPTP 는 EMF SDK V 2 . 1 과 XSD SDK V 2 . 1 를 반드시 필요 로 한다 . 
 UML 2 다이어그램 과 같이 애플리케이션 의 행위 를 시각 화 하 기 원 하 는 경우 , UML 2 플러그인 을 다운로드 하 자 . 이클립스 버전 3 . 1 . 1 을 사용 한다면 , UML 2 버전 1 . 1 . 1 을 받 아 , 이클립스 를 포함 하 고 있 는 디렉터리 에 압축 을 해제 하 자 . 
 애플리케이션 을 프로 파일 하 고 싶 을 때 필수 인 TPTP 에이전트 컨트롤러 를 다운로드 하 자 . 
 다운로드 하 거나 DVD 로 이용 할 수 있 는 IBM 시험 판 소프트웨어 를 다음 오픈 소스 개발 프로젝트 에 도입 해 보 자 . 
 이클립스 메일링 리스트 와 뉴스 그룹 에서 이클립스 개발자 , 다른 사용 자 들 과 대화 해 보 자 ( 뉴스그룹 을 읽 으려면 등록 을 해야 하나 공짜 이 고 등록 과정 도 쉽 다 ) . 
 developerWorks 블로그 에 참여 해 developerWorks 커뮤니티 일원 이 되 어 보 자 . 
 Martin Streicher 는 Linux Magazine 편집장 이 다 . 그 는 퍼듀 대학 에서 컴퓨터 과학 석사 학위 를 받 았 으며 , 1982 년 부터 파스칼 , C , 펄 , 자바 와 최근 에 는 루비 프로그래밍 언어 로 유닉스 계열 시스템 을 프로그래밍 해 왔 다 .