이클립스
이클립스(Eclipse)는 높은 수준의 통합 도구를 개발할 수 있는 플랫폼을 제공하기 위한 오픈 소스 소프트웨어 개발 프로젝트이다.
개요
이클립스(Eclipse)는 자바를 기반으로 한 통합개발환경으로, 이클립스 재단이 만들었다. 2001년부터 개발이 시작된 유구한 역사를 자랑하는 프로그램으로, 원래는 IBM의 IBM 비주얼에이지용 소프트웨어 개발 툴로서 만들어졌으나, 제작 도중 방향이 바뀌어서 관련 소스 등을 모조리 공개하는 자유 소프트웨어가 되었고, 이를 '이클립스'란 이름 하에 2001년 세상에 선보인 것이 이클립스의 시작이다. 2020년 9월 최신 버전은 4.17 로 2020-09 버전으로도 불린다. Mars 버전까지는 매년 2회(2월 9월)에 업데이트를 진행하였고 Photon까지는 매년 6월 대규모 업데이트가 진행되고 9월, 2월, 3월에 추가 업데이트가 진행되었다. 2018-09 버전부터는 대규모 업데이트와 추가 3회 업데이트 제도를 폐기하고 13주 마다 새로운 업데이트를 출시하고 있다.
특징
이클립스는 자바 프로그래밍 개발이 용이하며, 플러그인을 통해 C/C++, PHP, HTML 등 여러 언어의 개발이 가능하다. 단순한 구문 강조는 이클립스 Colorer, 컬러에디터 등의 플러그인을 통해 거의 대부분의 언어/파일 형식을 사용 가능하게 한다. 그리고 훌륭한 버전 관리 시스템 클라이언트의 기능 및 강력한 파일 비교 유틸리티까지 수행할 수 있고, 자바 기반으로 가상머신 위에서 어떤 플랫폼에서든 실행 가능하다. 또한, 다양한 플러그인을 통한 확장도 가능하고, 자바에 대해 강력한 리팩토리 기능을 제공한다.
장점
윈도우즈, 맥 OS, 리눅스 중 어디서든 자유롭게 이용 및 수정, 재배포가 가능하다. 맥 OS용은 환경변수 설정 없이 자바 세팅이 가능한데, 이는 레지스트리에 의존하지 않는 유닉스 계열 OS들의 특징이다. 심지어 자바 런타임도 설치하면 그 즉시 컴파일러까지 동봉되기 때문에 그냥 자바를 설치하고 터미널(OS X의 콘솔)에 javac를 입력하면 바로 작동한다. 운영체제의 제한 없이 어디서든 사용이 가능하다 보니 다양한 플랫폼의 소프트웨어 개발에 쓰일 수 있다. 다만 정말 아무 프로그램이나 다 만들어내는 것은 아니다. 삼정전자의 웨이브 폰에 쓰였던 OS 바다와 타이젠의 애플리케이션 개발 툴 역시 이클립스 기반이다. 또한, 오랜 기간 여러 언어를 거쳐서 개발할 수 있게 만들어져서 어떤 언어를 선택해도 중박은 간다는 장점이 있다. 즉, 입문할 때 이클립스를 썼다면 다른 언어를 사용할 시 이클립스를 계속 써도 될 정도라는 것이다. 특히 PHP나 파이썬의 경우 이클립스를 계속해서 쓰는 경우도 있다. 그리고 이클립스만의 독보적인 장점이라면, 여러 프로젝트를 동시에 열 수 있는 몇 안 되는 통합개발환경 중 하나라는 것이다. 가령, 소규모 프로젝트로 안드로이드(자바)와 라즈베리 파이(파이썬), 서버(노드제이에스)를 동시에 개발하고 관리해야 할 일이 필요하다면 일반적인 경우 안드로이드 스튜디오, 파이참, 웹스톰과 같은 통합개발환경을 동시에 켜 가며 작업해야 하는데, 이클립스는 하나만 켜 두면 된다. 비주얼 스튜디오나 엑스코드도 여러 언어를 지원하지만 이들은 프로젝트 여러 개를 동시에 띄워 둘 수 없고, 창을 여러 개 띄워서 스왑하는 형식으로 사용해야 한다.
- 방대한 플러그인 지원
개발자들을 위한 플러그인 지원이 대단히 활발한 툴 중 하나이다. 이클립스 플러그인들을 찾아 다니다 보면 단순 디자인 툴부터 UML 설계툴, 데이터베이스 디자인 도구 등등 없는 게 없다. 안드로이드 등의 플랫폼 개발에는 아예 전용 라이브러리를 제공하는 경우도 있다. 개발 툴들이 그렇 듯 아무나 쉽게 만지고 다니는 물건은 아니지만 C언어와 자바에 대한 기본 지식만 있다면 굉장히 간편한 툴이다. 경쟁자로 넷빈즈(NetBeans)와 제이빌더(JBuilder) 등이 있는데 이클립스의 인기에 한참 밀리고 있다. 제이빌더는 상용인 데다 느리다는 평도 있고, 넷빈즈는 오라클이 소유하던 기간 동안 서포트가 지지부진해서 실무 환경에서는 대부분의 업체가 이클립스 또는 인텔리제이 아이디어로 옮겨간 실정이다. 최근에는 젯브레인의 인텔리제이 아이디어가 빠르게 치고 올라와 이클립스의 점유율을 앞지르고 있다. 아무래도 젯브레인은 영리 기업이기 때문에, 이클립스 재단과 같은 오픈 소스 개발팀에 비하면 개발 속도와 고객 서비스가 훨씬 좋을 수 밖에 없다. 대신 인텔리제이 아이디어는 유료로 판매되고 있어서 무료 개발 툴을 원하는 개인 사용자들 사이에서는 여전히 이클립스도 많이 사용되고 있다. 이클립스는 기본적으로 자바 개발용으로 쓰이는 경우가 가장 많지만, 플러그인을 사용하면 다른 언어의 개발도 가능하다. 가장 기본적으로 C/C++를 지원하는 CDT부터 파이썬을 지원하는 파이데브(PyDev), 루비(Ruby)를 지원하는 RDT, 포트란도 있으며, 액션스크립트 개발 툴인 FDT나 플래시빌더도 있다. 웹용으로는 앱타나(Aptana)가 있다. 플래시빌더 같은 경우에는 기본적으로는 별도로 나오는 스탠드얼론(stand-alone) 툴이지만 이클립스 플러그인 형태로도 나온다. 그리고 비주얼 스튜디오마냥 시스템에 인스톨해서 사용하는 방식이 아니라 하드디스크의 적당한 곳에 압축을 해제하여 실행파일을 돌려 사용하는 방식(무설치판 같은 방식)인지라 사용 목적에 따라 다양한 이클립스 버전을 사용하는 것도 편리한 점의 하나이다. 굳이 이런 방식을 택하는 이유는, 개발언어나 목적에 따라 설치한 플러그인들이 서로 충돌하는 경우가 발생할 수 있으며, 이에 따라 프로그램이 꼬이는 일도 발생할 수 있기 때문이다. 가령 A 프로젝트에는 A1, A2 플러그인을 설치해 따로 사용하고 B 프로젝트에는 B1, B2 플러그인을 설치해 또 따로 사용하는 방식이다. 그래서 어떤 플러그인을 깔면 다른 플러그인은 그 이클립스에 설치하지 못한다. 그래서 이클립스 A에 어떤 플러그인 B를 깔고 난 다음엔 다른 플러그인 C가 깔리지 않는 경우가 있다. 어떤 개발 툴 체인을 사용할 것인지를 직접 설정, 연결하여 사용할 수 있기 때문에 다른 언어 뿐 아니라 다른 구동 환경에서 사용되는 프로그램의 제작, 즉 크로스 컴파일도 가능하다. 이는 x86 PC 환경에서 AVR, ARM32/64용 프로그램을 제작할 수 있다는 의미가 된다. 안드로이드 개발환경으로 사용 가능한 것도 이러한 이유이다. 유명한 플러그인으로 AWT/스윙 개발 툴킷인 윈도우빌더(구 비주얼 에디터)가 있다.
단점
이클립스는 여러 가지를 할 수 있다는 점에서 매우 매력적인 통합개발환경임에는 틀림없다. 여러 프로젝트를 동시에 관리할 수 있게 해 주는 통합개발환경은 유명한 네임드 중에서는 이클립스 말고는 없고, 또한 여러 언어를 동시에 작업해야 한다면 이클립스 만큼 좋은 게 없다. 그러나 이클립스가 다른 통합개발환경보다 사용자에게 매력적으로 다가오기 위해선, 먼저 사용자가 이클립스에 대해서 매우 잘 알아야 한다. 이클립스는 순정 그 상태일 때는 어떤 언어의 어떤 기능으로 승부를 봐도 다른 통합개발환경을 이길 수 없다. 가령 자바에서 이클립스의 위상은 상당하지만 커스터마이징을 거치지 않은 이클립스 그 상태로의 기능은 넷빈즈나 인텔리제이 아이디어에 한참 못 미친다. 주 언어인 자바가 이 모양이니 다른 언어는 말할 것도 없다. 즉, 진입장벽이 생각보다 있다는 것이다. 이클립스의 온전한 기능을 다 끌어 쓰기 위해서는 기본적으로 설정되어 있지 않은 각종 옵션 세팅과 사용되지 않은 키맵, 그리고 유용한 여러 가지 오픈 소스 플러그인을 모두 다 깔아야지 이클립스 본연의 막강함이 나오는 것이다. 그래서 생각과는 달리 초보자들에게는 전혀 좋은 툴이 아니다. 또한, 전반적으로 다른 통합개발환경에 비해서 최적화가 제대로 되지 않아서 심각하게 느린 편이다. 비주얼 스튜디오나 엑스코드처럼 각 운영체제에 특화된 통합개발환경과 비교해서 느린 건 어쩔 수 없다 쳐도 마찬가지로 크로스 플랫폼을 지원하는 젯브레인의 통합개발환경 시리즈들이나 기타 유명 통합개발환경보다도 많이 느린 편이다. 이는 이클립스의 목적이 순수 한 가지 언어에 특화된 통합개발환경을 만드는 게 목적이 아니며 넓은 폭의 통합개발환경을 만드는 게 목적이기에 어쩔 수 없는 면이 있긴 하지만 그래도 느린 반응성에 잔 버그들과 싸우다 보면 한숨만 나오는 건 사실이다. 게다가 일반적인 사용자들은 저 수많은 기능들을 모두 써 가면서 사용할 일이 별로 없고, 각 언어에 특화된 기능만을 사용하고 싶어 하는 것인데 이클립스는 그런 부분에서 시대에 많이 뒤처져 있다. 오픈 소스 소프트웨어에서 흔히 일어나는 일이지만, 중요도가 낮다고 여겨지는 것들은 수정이 늦거나 아예 고쳐지지 않기도 한다. 대표적으로 라벨(label) 들여 쓰기에 대한 옵션이 없다는 것은 10년 가까이 지적되고 있는데도 여전히 수정되지 않고 있다. 자동완성 기능도 영 불편한 점이 많은데, 오토 액티베이션 트리거(Auto activation trigger)의 기본값은 마침표(.) 하나밖에 없다. 비주얼 스튜디오처럼 자동완성 리스트가 텍스트 타이핑 도중에도 나타나게 하려면 알파벳 a~z, A~Z를 추가하면 되지만, 단순히 공백을 만들기 위해 스페이스바를 눌러도 자동완성으로 인식이 되어 실수로 의도치 않은 텍스트가 입력돼버리곤 한다. 해외에서도 이 스페이스바 자동완식이 불편하다며 문제를 제기했으나 오랫동안 방치된 상태이다. 그리고 주전공이라 할 수 있는 자바 개발 환경이 매우 강력하긴 하지만 그 외 언어의 플러그인들은 방치를 당하는 경향도 있다. 가령, C언어 개발용 플러그인 CDP의 경우, 리눅스에서 기본적으로 쓰이는 C 개발환경보다 약간 나은 수준이라는 평이다. 한때는 안드로이드 앱을 제작할 때 사용하는 독보적인 툴의 위치에 있었으나 구글에서 안드로이드 스튜디오를 본격 배포한 이후로는 지원 면에서 여러모로 밀리고 있다. 현재는 안드로이드 ADT 플러그인의 지원은 완전 종료되었다. 하지만 이클립스에서 지원하는 앤드모어(Andmore)라는 플러그인으로 여전히 안드로이드 앱 개발은 가능하다. 이 외에도 최근버전인 포톤(Photon)버전에서 이전 버전인 옥시젠(Oxygen)보다 에러 리포팅이 많이 뜨는 등 불안정한 모습을 보인다.
활용
단축키
이클립스에서는 개발을 좀 더 빠르고 편리하게 할 수 있기 위해 단축키를 사용한다.
- Alt+Shift+N : 생성(프로젝트, 소스폴더, 패키지, 클래스 등)
- Ctrl+SpaceBar : 자동완성, 자동 임포트
- Ctrl+Shift+C : 주석 처리
- Ctrl+C, V : 복사, 붙여넣기
- Ctrl+D : 코드 삭제
- Ctrl+Z : 실행 취소
- Ctrl+Y : 실행 취소 이전으로
- Alt+Shift+R :이름 재 정의
- Alt+O : 변수, 함수, 클래스 쉽게 확인 후 이동
- Ctrl+L : 해당 줄 이동하기
- F7 : 코드창으로 포커스 잡기
- Ctrl+Shift+F : 코드 포맷 형식 맞추기
- Ctrl+S : 저장
- Ctrl+W : 열린 클래스 닫기
- Ctrl+E : 열린 클래스 쉽게 이동하기
- Ctrl+Shift+R : 클래스 열기
- Ctrl++ : 글씨 크기 크게
- Ctrl+- : 글씨크기 작게
- Ctrl+F11 : 컴파일
- Ctrl+Shift+S : 자동 완성 업그레이드 버전
- Ctrl+Shift+L : 단축키 모음
- Ctrl+1 : 에러 처리
- Ctrl+F : 찾기 또는 찾아 바꾸기
패키지
이클립스는 자바를 기본으로 한 개발도구이기에 반드시 자바를 설치해야만 이용할 수 있으며, 이클립스에서 배포하는 패키지의 종류에는 여러 가지 종류가 있다.
- Eclipse IDE for Java EE Developers
이클립스 패키지 중 가장 많이 사용하는 패키지이다. 기업형 응용 프로그램이나 웹 응용 프로그램을 개발하기에 적합한 패키지이며, 자바 IDE, 자바 EE, JPA, JSF, 마일린(Mylyn) 등의 라이브러리들을 포함하고 있다.
- 자바 IDE(Java Integrated Development Environment) : IDE란 '통합개발환경'을 뜻한다. 따라서, 자바 IDE는 자바 통합개발환경을 의미한다.
- 자바 EE(Java Enterprise Edition) : 자바 EE는 표준 패키지인 자바 SE(Standard Edition)에 웹 애플리케이션 서버 관련 기능을 추가한 패키지이다. 웹 애플리케이션 서버는 웹 서버에 설치하여 작동하는 서버 측 프로그램을 의미하며, 영문으로는 WAS(Web Application Server)라고 한다. 자바 EE는 예전에 'J2EE'라는 이름으로 불린 바 있다.
- EJB(Enterprise Java Beans) : EJB는 기업형 서버 측 컴포넌트 모델을 개발하기 위한 기술들을 제공한다. 그래서 자바 웹 분야에서는 기업형 웹 개발을 할 때 JSP로 화면을 구성하고, 업무 로직은 EJB로 작성하는 개발 환경을 갖추게 되었다. EJB는 일반적으로 '세션 빈(Session Bean)'과 '엔티티 빈(Entity Bean)'으로 나뉘게 된다. 세션 빈은 휘발성 서버에 관련된 모듈, 엔티티 빈은 데이터베이스와 연동하는 등의 기타 업무 로직들을 담고 있는 모듈을 의미한다.
- JPA(Java Persistence API) : JPA는 관계형 데이터베이스 연동에 대한 기능들을 제공한다. JPA는 EJB의 엔티티 빈 기술을 구체화시킨 기술이다.
- JSF(Java Server Faces) : JSF는 자바 EE 기반에서 웹용 사용자 인터페이스를 쉽게 개발할 수 있도록 지원하는 컴포넌트형 웹 개발용 프레임워크이다. MVC 모델로 JSP를 사용하는 웹 개발 방법론에 대한 또 다른 형식의 컴포넌트 방식이다.
- 마일린(Mylyn) : 마일린은 전기적 신경 전달에 관한 생물학적 용어인 '마이엘린(Myelin)'에서 유래된 이름이다. 이클립스는 마일린이라는 이름으로 통합 태스트 관리를 지원하는 개발도구를 제공하고 있다. 이클립스에서의 태스크는 여러 가지 의미를 가지지만, 쉽게 말하면 작업 스케줄에 따라 자동으로 실행하는 것으로, 이의 효율적인 제어를 위한 모듈이 마일린이다.
- 이클립스 클래식
이클립스 클래식(Eclipse Classic)은 이클립스의 기본 패키지이다. 이클립스 플랫폼, 기본 자바 개발도구, 플러그인 개발 환경 등이 포함되어 있다.
- Eclipse IDE for Java Developers
일반적인 자바 개발자를 위한 이클립스의 통합개발환경 패키지이다. 이 패키지에는 자바 IDE, CVS 클라이언트, XML 에디터, 마일린, 아파치 메이븐, 메이븐 인티그레이션, 윈도우빌더 등이 포함되어 있다.
- 아파치 메이븐(Apache Maven) : 아파치 메이븐은 아파치 워크 그룹에서 주도한 자바를 위한 빌드용 개발도구이며, 원론적으로는 소프트웨어 프로젝트를 관리하고 파악하기 위한 개발도구라고 할 수 있다. 아파치 메이븐은 POM(Project Object Model)이라는 개념을 기반으로 하고 있고, 프로젝트를 빌드하거나 각 모듈을 문서로 리포팅하는 기능을 말하며, '메이븐(Maven)'이란 이름은 히브리어의 'mevin'에서 유래한 용어로 'one who understands'의 의미이며, 소프트웨어에서는 새로 창조한 프로젝트를 이해할 수 있게 한다는 것으로 해석되고 있다.
- 메이븐 인티그레이션(Maven Integration) : 이클립스에서 말하는 메이븐 인티그레이션은 'm2eclipse' 또는 'm2e'라는 약자로 표현하기도 하는데, 이클립스 IDE에서 아파치 메이븐을 지원하기 위한 모듈이다. 이클립스는 메이븐의 pom.xml을 쉽게 작성하고 컴파일할 수 있도록 지원하고 있다.
- 윈도우빌더(WindowBuilder) : 이클립스에서 말하는 윈도우빌더는 그래픽 사용자 인터페이스 개발 환경을 의미한다. 텍스트 편집기로 일일이 코딩하느라 많은 시간을 허비해야 하는 어려움을 없애기 위해 그래픽 사용자 인터페이스 개발 환경을 제공하여 한눈에 제반 설정사항들을 파악하고 작성할 수 있도록 도와준다. 그래서 이클립스의 윈도우빌더를 디자인 편집기라고도 한다. 이 윈도우빌더는 웹 화면을 디자인하거나, 안드로이드에서 화면 디자인을 할 때, 또는 XML을 작성할 때도 큰 도움이 된다.
- Eclipse IDE for C/C++ Developers
마일린으로 C/C++ 개발을 하기 위해 통합개발환경으로 제공되는 이클립스 패키지이다. 이 패키지에 포함되어 있는 라이브러리에는 ORG.ECLIPSE.CDT 패키지와 같은 인큐베이션 컴포넌트들이 포함되어 있다. org.eclipse.cdt 패키지의 'CDT'는 'C/C++ Development Toolkit'의 약자이다. 따라서 이 패키지는 C/C++ 개발을 할 수 있는 툴킷을 제공한다. 이 패키지로 C/C++ 개발을 하려면 컴파일러가 추가로 필요한데, 시그윈 GCC와 MinGW GCC가 대표적이다. 이 컴파일러를 설치하고 컴파일러의 위치를 이클립스에 설정하여 개발하는 방식이다.
- Eclipse Modeling Tools
프로그래밍 논리나 로직은 도식화하는 모델링 관련 도구 위주로 구성되어 있다. Ecore Tools, RCP, EMF, XSD, OCL ,UML 등의 모델링을 지원한다.
각주
참고자료
같이 보기
이 문서는 로고 수정이 필요합니다.