이클립스정보 [불펌]

개발 2013. 10. 16. 21:48

이클립스 소개


이클립스(Eclipse)란?

  • Eclipse는 Open Source Java IDE (Integrated Development Environment), 즉 오픈 소스 자바 통합 개발환경이다.
  • JAVA 기반의 확장 가능한 개발 플랫폼이다.
  • 하나의 프레임워크로서 플러그인 컴포넌트에서 개발 환경을 구현하였다.
  • 오픈소스로 발표한 이클립스는 초기에는 개발 도구로 시작했으나 이제는 범용 플랫폼(universal platform)으로 성장했고 수많은 회사와 개발자들이 공동의 목표를 위해 함께 하는 커뮤니티라고 할 수 있다.

이클립스 탄생배경

  • IBM이 4000만불(400억)로 개발하여 오픈소스 프로젝트에 배포하였다.
  • Eclipse.org.Consortium이 개발을 관리 및 지휘하고 있다.
  • Project Management Committee (PMC)는 Eclipse 프로젝트를 관리한다.

이클립스 주요기능


1. 개발

  • 자동 완성 (Ctrl + Space)
  • 템플릿 적용 (Ctrl + Space)

리팩토링

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

리팩터링 전의 Person 클래스로 간단하지만 개인 정보와 연락처 정보 관리라는 두 가지 책임을 가진다. Extract Class로 연락처 관리의 책임을 추출할 수 있다.

 public class Person {
   private String name;
   private String officeAreaCode;
   private String officeNumber;

   public String getName() {
    return name;
   }

   public void setName(String name) {
    this.name = name;
   }

   public String getOfficeAreaCode() {
    return officeAreaCode;
   }

   public void setOfficeAreaCode(String officeAreaCode) {
    this.officeAreaCode = officeAreaCode;
   }

   public String getTelephoneNumberNumber() {
    return "( " + officeAreaCode + ") "+ officeNumber;
   }

   public String getOfficeNumber() {
    return officeNumber;
   }

   public void setOfficeNumber(String officeNumber) {
    this.officeNumber = officeNumber;
   }
 }

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

 

Extract Class 메뉴를 선택하면 다음과 같이 설정 다이얼로그가 나온다.

  1. 설정 다이얼로그에서는 추출 대상 필드를 선택한다.
  2. 추출할 클래스 이름과 추출한 클래스의 객체를 참조할 필드 이름을 지정한다.
  3. 여기서는 연락처 정보와 관련된 officeAreaCode와 officeNumber 필드를 Telephone 클래스로 추출한다.
  4. Person 클래스가 참조하는 Telephone 클래스 인스턴스의 이름은 telephone으로 설정한다.

 

새로운 코드로 리팩터링되었다. 위에서 선택한 두 필드를 가지고 있는 Telephone 클래스가 생성되었고, Person 클래스는 Telephone 클래스의 인스턴스를 필드로 가지고 이를 참조하도록 다음과 같이 변경되었다.

 package refactoring;

 public class Person {
     private String name;
     private Telephone telephone = new Telephone();

     public String getName() {
         return name;
     }

     public void setName(String name) {
         this.name = name;
     }

     public String getOfficeAreaCode() {
         return telephone.getOfficeAreaCode();
     }

     public void setOfficeAreaCode(String officeAreaCode) {
         this.telephone.setOfficeAreaCode(officeAreaCode);
     }

     public String getTelephoneNumberNumber() {
         return "( " + telephone.getOfficeAreaCode() + ") "+ telephone.getOfficeNumber();
     }

     public String getOfficeNumber() {
         return telephone.getOfficeNumber();
     }

     public void setOfficeNumber(String officeNumber) {
         this.telephone.setOfficeNumber(officeNumber);
     }
 }
 package refactoring;

 public class Telephone {
     private String officeAreaCode;
     private String officeNumber;

     public Telephone() {
     }

     public String getOfficeAreaCode() {
         return officeAreaCode;
     }

     public void setOfficeAreaCode(String officeAreaCode) {
         this.officeAreaCode = officeAreaCode;
     }

     public String getOfficeNumber() {
         return officeNumber;
     }

     public void setOfficeNumber(String officeNumber) {
         this.officeNumber = officeNumber;
     }
 }
  • 상수 추출 (Extract Constant)
  • 메소드 추출 (Extract Method)
  • 메소드 시그니처 변경 (Change Method Signature)
  • 이름 바꾸기 (Rename)
  • 메소드 추상화 (Pull up method)

이클립스 3.4 가니메데에서 향상된 기능

  • Breadcrumb
    • 화면이 크지 않은 환경에서 개발할 때는 편집기 영역을 최대화(커맨드 + M)해서 작업하는 경우가 많은데, Breadcrumb를 통해 현재 위치를 한눈에 볼 수 있고, 편집기의 최대화를 해제하고 'Package Explorer (패키지 탐색기)'등을 이용해서 다른 파일을 열어야 하는 불편함을 해소한다.
    • 화 면 상단 툴바의 'Toggle Breadcrumb'를 선택하거나, 편집기의 컨텍스트 메뉴 중 'Show in Breadcrumb'를 선택하면 된다. 컨텍스트 메뉴에서 Breadcrumb를 비활성화 시킬 수 있는 방법은 없으며, Breadcrumb를 비활성화 시키려면 상단 툴바의 토글 버튼을 이용한다.
    • Breadcrumb가 활성화되면 편집기 상단에 현재 위치를 표시해주는 표시영역이 생긴다. 이 영역을 통해 최대화 상태의 편집기에서도 현재 위치를 한눈에 볼 수 있고, 최대화 상태에서도 편리하게 다른 파일을 열 수 있다.
  • 향상된 Call Hierarchy
    • 호출 관계가 복잡한 함수의 호출 관계를 트리 구조로 보여준다.
    • 클래스를 선택하고 'Call Hierarchy'를 찾아보면(CTRL + ALT + H) 모든 생성자를 호출하는 위치를 찾아준다.
    • 기본 생성자가 코드 상에 존재하지 않아도 찾아주니 편리하다.
    • 상수나 필드를 사용하는 위치도 'Call Hierarchy'를 통해 보여주니 더 이상 불편하게 검색하지 않아도 된다.
  • Outline 화면에서 코드 재배열하기
    • 개요(Outline) 화면에서 코드의 구성 요소의 위치를 재배열 할 수 있다.
    • 개요 화면 에서 한눈에 전체 구조를 보면서 드래그 앤 드롭 기능을 이용해서 코드를 재배열 할 수 있다.
    • Outline의 자동 정렬 기능 을 이용 중이라면 드래그 앤 드롭은 동작하지 않는다.
    • Outline에서의 재배치 기능은 자바 에디터뿐 아니라 XML 에디터에서도 지원한다.
  • 리치 호버
    • 특정 요소 위에 마우스를 가져다 두면 나타나는 JavaDoc 설명을 보여주는 것과 같은 호버 기능이 향상되었다.
    • JavaDoc 호버는JavaDoc 화면에서 보기, 외부 브라우저에서 보여주기 등 더 풍부한 기능을 제공한다.
    • 디버그 상황에서 복잡한 자료구조에 대한 값도 한 눈에 볼 수 있는 기능을 제공한다. 예전처럼 Variables 화면을 뒤지거나, Expressions 화면에 표현식을 입력해 봐야 하는 불편함이 해소되었다.
  • 저장 기본 동작 정의
    • 팀에서 코드 형식을 정해놓고, 이클립스 자동 포맷에 맞춰서 만들어 두어도 자신만의 스타일에 익숙하다면 종종 잊어버리곤 한다.
    • 개발과정 중에 사용하다 남은 불필요한 Import 잔재를 한번에 없애고 싶지만 자동으로 처리해 주지 않으면(Organized Import 기능이 자동으로 처리해 주지만, 직접 명령을 수행해야 한다.) 역시 잊어버리기 쉽다.
    • 'Windows (윈도) /Eclipse (맥) -> Preferences -> Java -> Editor -> Save Actions'를 보면 저장 시 자동으로 문서 포맷 맞추기, 불필요한 Import 구문 정리하기 등의 기능을 제공한다.
    • 저장 시 실행할 행동을 정의할 수 있으며, 문서 정렬은 전체 문서에 저장할 것인지 수정된 영역에만 적용할 것인지를 지정할 수 있다.
  • Launch Configuration 내보내기/들여오기
    • Import(가져 오기)/Export(내보내기) 메뉴에 추가된 기능으로 그 동안의 실행 설정(Launch Configuration)을 XML 파일로 저장하고, 저장된 XML 파일을 가지고 오는 기능이다.
    • 이 설정은 JDK 버전을 여러 버전으로 맞춰놓고 작업하는 것과 같은 이유 등으로 이클립스를 여러 개 설치해 놓고 작업 하거나 작업 공간을 다시 구축해야 하는 경우 매번 복잡한 실행 설정을 하지 않아도 되기에 유용하다.
      • 컴파일 레벨의 변경이 아니라 실제 JRE를 대체하면 전부 재빌드를 수행하므로 하나의 작업공간에서 모두 처리하기에는 번거롭다.
  • Tips: 이클립스 소스 코드 보고 베끼기 - 플러그인 스파이
    • 이클립스를 사용하다 보면 플러그인 개발 자가 아닐지라도 , 어떻게 구현됐는지 코드 를 보고 싶은 경우가 있다. 기존에는 플러그인 개발자에게도 특정 영역의 코드를 찾아가는 작업이 쉽지 않았다.
    • 플러그인 스파이 덕분에 코드를 보고 싶은 관심 대상 화면을 선택한 후 'SHIFT +ALT+F1'을클릭하면 해당 화면이 정의된 플러그인과 해당 화면의 클래스 등 각종 정보를 쉽게 얻을 수 있다.
    • 플러그인 스파이 기능을 활용하려면 PDE 관련 플러그인을 설치하거나 플러그인 개발자용 이클립스를 다운받아야 한다.
  • Tips: 자바스크립트 개발 툴킷
    • 웹 개발 환경에서 가장 눈에 띄는 기능은 WTP 3.0에 새로 추가된 자바스크립트 개발 툴킷(JavaScript Development Toolkit, JSDT)이다.
    • js 파일의 포맷팅 기능, 콜 계층 보기 지원 등의 기능이 눈에 띈다.
    • 추가적인 자바스크립트 라이브러리의 지원을 위한 확장점도 제공한다.
    • 자신만의 라이브러리를 지원하는 것도 용이하다.
    • WTP 3.0에 포함된 기능이므로 WTP 3.0을 별도로 설치하거나 Java EE 버전 이클립스를 다운받으면 된다.

2. 실행

  • 자바 어플리케이션 실행
  • junit 실행
  • 메이븐Maven) 실행
  • 런타임 환경 실행

3. 디버깅

  • 라이브러리 소스 첨부 (일반 방식, 메이븐 방식)
  • Breakpoint 설정
  • 단계별 디버깅 (F5, F6, F7, F8)
  • 조건부 디버깅 (Conditional Debugging)
  • 원격지 디버깅 (Remote Debugging)

4. 테스팅

  • 단위테스트
  • 통합테스트
  • 런타임테스트

5. 핫키 (단축키)

일상의 습관을 바꾸기 어렵듯이 개발습관  또한  한번 익숙해지면 바꾸기 어렵습니다. 단축키를 활용하는 개발습관은 무엇보다도 개발에 대한 전문성과 생산성에 기여한다고 할 수 있습니다.

  • 단축키 리스트 메뉴 (Show Key Assist): Ctrl + Shift + L
  • 빠른 Preferences 찾기 메뉴: Ctrl + 3
  • 편집 (Edit)
    • 빠른 교정: Ctrl + 1
    • 코드 자동완성 도움 (Content Assist): Ctrl + Space
  • 네비게이션 (Navigate)
    • 현재 클래스 상속관계 보기 (Open Type Hierarchy): F4
    • 간단한 클래스 상속관계 보기 (Quick Hierarchy): Ctrl + T
    • 현재 클래스 메서드, 맴버변수 보기 (Quick Outline): Ctrl + O
    • 리소스 찾기 (Open Resource): Ctrl + Shift + R
    • 찾기 다이얼로그 열기 (Open Search Dialog): Ctrl + H
    • 선언 위치로 이동 (Open Declaration): F3
    • 특정 줄번호로 가기 (Go to Line): Ctrl + L
    • Java Editor에서 다음 member로 이동 (Go to Next Member): Ctrl + Shift + Down
    • 이전 작업 화면 : Alt + Left
    • 다음 작업 화면 : Alt+ Right
  • 리팩토링 (Refactor)
    • 리펙토링 메뉴 바로가기 (Refactor Quick Menu): Alt + Shift + T
    • 변수명, 클래스명 등 이름 변경 (Rename): Alt + Shift + R
    • 클래스, 인터페이스 등 이동 (Move - Refactoring): Alt + Shift + V
  • 소스 (Source)
    • 선택 영역 주석처리 (Add Block Comment): Ctrl + Shift + /
    • 주석처리된 영역 주석해제 (Remove Block Comment): Ctrl + Shift + \
    • 한줄에 대한 주석 처리 (Toggle Comment): Ctrl +/
    • Javadoc타입의 주석처리 (Add Javadoc Comment): Alt + Shift + J
    • XML 편집 시 주석처리 및 해제: Ctrl + Shift +C
    • 탬플릿에 따른 코드 포맷팅 (Format): Ctrl + Shift + F
    • 들여쓰기 (Indent Line): Ctrl + I
    • 불필요 import 제거 및 import문 자동 생성 (Organize Imports): Ctrl + Shift + O
    • 빠른 소스메뉴 (Source Quick Menu): Alt + Shift + S
  • 텍스트 편집 (Test Editing)
    • 줄 삭제 (Delete Line): Ctrl + D
    • 줄 복사 (Duplicate Lines): Ctrl + Alt + Up or Down
    • 현재 줄에 새로 추가 (Insert Line Above Current Line): Ctrl + Shift + Enter
    • 다음 문자로 이동 (Next Word): Ctrl + Right
    • 이전 문자로 이동 (Previous Word): Ctrl + Left
    • 다음 줄에 새로 추가 (Insert Line Below Current Line): Shift + Enter
    • 줄 위치 위로 바꿈 (Move Lines Up): Alt + Up
    • 줄 위치 아래로 바꿈 (Move Lines Down): Alt +Down
    • 현재 위치에서 라인 끝까지 삭제 (Delete to End of Line): Ctrl + Shift + Delete
    • 한글자씩 찿기 (Incremental Find): Ctrl + J
      • 이 클립스 창의 하단 상태 표시줄 부분에 Incremental Find라고 표시되며, 한글자씩을 누를 때마다 그곳에 입력된 글자가 보이고 코드내의 일치하는 문자열로 이동하게 된다. 입력을 끝내고 다시 Ctrl + J를 누르면 그 문자열과 일치하는 곳으로 커서가 이동하게 된다.
    • System.out.println() 문장 삽입: 'sysout' + (Ctrl + Space)
    • Surround With 메뉴: Alt + Shift + Z
      • 코드를 블록으로 선택한 다음 이 단축키를 적용하면 다음과 같은 퀵 메뉴가 나타나며 선택한 문장으로 블록으로 선택했던 문장들을 감싼다.
    • 대문자로 (To Upper Case): Ctrl + Shift + X
    • 소문자료 (To Lower Case): Ctrl + Shift + Y
  • 윈도우 (Window)
    • 새로운 파일 및 프로젝트 생성: Ctrl + N
    • 선택된 뷰 최대화 (Maximize Active View or Editor): Ctrl + M
    • 열려있는 에디터간 이동 (Switch to Editor): Ctrl + Shift + E
    • 좌/우 창 이동: Ctrl + Page Up / Ctrl + Page Down
    • Properties 열기 (Properties): Alt + Enter
  • 실행 (Run)
    • 마지막 Run 구성 실행 (Run): Ctrl + F11
    • 빠른 Run 실행 메뉴 열기: Alt + Shift + X
    • 빠른 Debug 실행 메뉴 열기: Alt + Shift + D
  • 디버깅 (Debug)
    • 브레이크 포인터 설정/해제 (Toggle Breakpoint): Ctrl + Shift + B
    • 디버깅 시작 (Debug): F11
    • 디버깅 계속 (Resume): F8
    • 한줄씩 실행 (Step Over): F6
    • 한줄씩 실행하되 함수일 경우 그 함수 내부로 들어감 (Step Into): F5
    • 함수 외부로 벗어남 (Step Return): F7
    • 현재 라인까지 실행 (Run to Line): Ctrl + R

'개발' 카테고리의 다른 글

진주고용센터 실업자용 c/c++프로그래밍 훈련  (0) 2013.10.24
Posted by 성큰굿
l