이클립스(통합 개발 환경)

 

'''Eclipse'''
[image]
'''개발'''
Eclipse Foundation
'''라이선스'''
이클립스 공용 허가서
'''용도'''
통합 개발 환경
'''운영체제'''
Windows, macOS, Linux
'''현재버전'''
4.18.0 (2020년 11월 24일)
홈페이지
1. 개요
2. 역사
2.1. 코드 네이밍
3. 장점
3.1. 방대한 플러그인 지원
4. 단점
5. 기타

[clearfix]

1. 개요


Java를 기반으로 한 통합 개발 환경으로 이클립스 재단이 만들었다. Java는 Sun Microsystems에서 개발한 프로그래밍 언어이므로 태양(sun)과 관련 있는 식(蝕: 예를 들면 개기일식)을 의미하는 이클립스를 이름으로 채택하였다.

2. 역사


2001년부터 개발이 시작된 유구한 역사를 자랑하는 프로그램. 원래는 IBM의 IBM VisualAge용 소프트웨어 개발 툴로서 만들어졌으나, 제작 도중 방향이 바뀌어서 관련 소스 등을 모조리 공개하는 자유 소프트웨어가 되었고, 이를 '이클립스'란 이름하에 2001년 세상에 선보인 것이 이클립스의 시작이다. 2020년 9월 현재 최신 버전은 4.17 로 2020-09 버전으로도 불린다.
Mars 버전까지는 매년 2회(2월 9월)에 업데이트를 진행하였고 Photon까지는 매년 6월 대규모 업데이트가 진행되고 9월, 2월, 3월에 추가 업데이트가 진행되었다. 2018-09 버전 부터는 대규모 업데이트와 추가 3회 업데이트 제도를 폐기하고 13주마다 새로운 업데이트를 출시하고 있다.#

2.1. 코드 네이밍


참고로 이름의 뜻을 존중하여 새로운 버전을 항상 매년 6월 마지막 주에 공개하는 특성이 있다. 첫 공개일부터 6월 21일이었고 그 후로도 매년 6월 28일, 30일, 22일 등 항상 6월 마지막 주, 그것도 7월로 넘어가기 이전의 마지막 주에 신버전을 내놓는 것을 원칙으로 삼고 있었다. 이 때문에 이클립스의 코드명 작명은 알파벳 네이밍을 따라갔었다. 당시에는 절대적인 규칙이 하나 있었는데, 이유를 막론하고 '''상표권 문제에 휘말리면 가차없이 실격'''.
그러나 2018년의 Photon 버전을 마지막으로, 코드 네이밍은 막을 내리고, 이후에는 '연도-월' 네이밍을 사용하게 된다. 연대는 편의상 나누었다.
  • 초창기(Helios 까지): 2005년 버전까지는 변변한 코드네임이 없었는데, 2006년 부터는 목성의 위성 또는 이와 관련된 인물의 이름을 임의로 채용하였다. 2006년 Callisto, 2007년 Europa, 2008년 Ganymede 순. 2009년에는 갈릴레오 갈릴레이의 이름을 따 Galileo로 명명되었다.
  • 알파벳 네이밍 1기 (천문학 네이밍, Mars 까지): 그러다 Eclipse Galileo+1부터는 이름을 투표로 정하기 시작하였는데, 알파벳 'H'이니까 Helios로 하자는 의견이 지지를 얻었고, 이것이 곧 알파벳 네이밍의 시작이 되었다. 그리고 2011년 Eclipse Helios+1부터는 전통이 되었는데, 그렇게 붙은 이름이 Helios(2010년), Indigo(2011년), Juno(2012년), Kepler(2013년), Luna(2014년), Mars(2015년) 순. 특히 2번째 투표인 Indigo는 상징적인 색깔이 남색(Indigo)라는 점에서 압도적인 표차로 당선되었고, Mars는 다른 후보들이 상표권 분쟁에 휘말리는 바람에 어부지리로 당선되었다.
  • 알파벳 네이밍 2기 (원자론 네이밍, Neon 부터 Photon 까지): Mars가 나오자마자 어김없이 Eclipse Mars+1이라는 이름으로 투표를 하게 되었다. 이 과정에서 Neptune이 전폭적인 지지를 받았으나, 하필 상표권 문제 때문에 실격하고 말았다. 그래서 대신 채택된 것이 Neon(2016년), 이미 Neon Toolkit이 있긴 하나 사실상 지원이 끊긴 지 오래(2011년 종료)라 당선되었다. 이 때부터 슬슬 방향이 바뀔 조짐을 보이더니 2017년 버전은 Oxygen으로 결정되었다. 이후 2018년 버전은 Photon으로 결정되면서 천체학에서 완전히 탈피하였다. 이후 릴리즈 정책 변경으로 유구한 전통이었던 알파벳 네이밍은 막을 내린다.
  • 연도-월 버저닝: 이후 릴리즈 정책이 13주 주기 릴리즈로 변경되어 결국 Photon 까지 이어졌던 알파벳 네이밍을 폐기, 대신 '연도-월'로만 버전을 표기하기로 결정되였다. 이에 따라 2018-09 버전이 처음으로 이 방식을 채택하였고, 이후 2018-12R과 2019-03, 2019-06 버전이 나오면서 그대로 확정되었다. 아직 1년도 채 지나지 않은 탓인지 시작 이미지는 Photon 버전의 것을 그대로 따른다. 2019-06 버전부터 시작 이미지가 바뀌었다.

3. 장점


Windows, macOS, 리눅스 중 어디서든 자유롭게 이용 및 수정, 재배포가 가능하다. 여담으로 macOS용은 환경변수 설정 없이 자바 세팅이 가능한데, 이는 레지스트리에 의존하지 않는 유닉스 계열 OS들의 특징이다. 심지어 자바 런타임(JRE)만 설치하면 그 즉시 컴파일러까지 동봉되기 때문에 자바를 설치하고 터미널(OS X의 콘솔)에 javac를 입력하면 바로 작동한다. #
운영체제의 제한 없이 어디서든 사용이 가능하다보니 다양한 플랫폼의 소프트웨어 개발에 쓰일 수 있다. 다만 정말 아무 프로그램이나 다 만들어내는 것은 아니다. (결정적으로 애플의 소프트웨어는 만들 수 없다.) 삼성전자웨이브 폰에 쓰였던 OS 바다타이젠의 애플리케이션 개발 툴 역시 이클립스 기반이다.
또한 오랜 기간 여러 언어를 거쳐서 개발할 수 있게 만들어져서 어떤 언어를 선택해도 중박은 간다는 장점이 있다. 즉 입문할 때 이클립스를 썼다면 다른 언어를 사용할 시 이클립스를 계속 써도 될 정도라는 것이다. 특히 PHP나 Python의 경우 이클립스를 계속해서 쓰는 경우도 있다.
그리고 이클립스만의 독보적인 장점이라면 여러 프로젝트를 동시에 열 수 있는 몇 안 되는 IDE 중 하나라는 것이다.[1] 가령 소규모 프로젝트로 안드로이드(Java)와 라즈베리 파이(Python), 서버(Node.js)를 동시에 개발하고 관리해야 할 일이 필요하다면 일반적인 경우 Android Studio, PyCharm, WebStorm과 같은 IDE를 동시에 켜 가며 작업해야 하는데 이클립스는 하나만 켜 두면 된다. 비주얼 스튜디오IntelliJ IDEA, Xcode도 여러 언어를 지원하지만 이들은 프로젝트 여러 개를 한 창에서 동시에 열 수 없고 창을 여러 개 띄워서 스왑하는 형식으로 사용해야 한다.

3.1. 방대한 플러그인 지원


개발자들을 위한 플러그인 지원이 대단히 활발한 툴 중 하나다. 이클립스 플러그인들을 찾아다니다 보면 단순 디자인 툴부터 UML 설계툴, DB 디자인 도구 등등, 없는게 없다. 안드로이드 등의 플랫폼 개발에는 아예 전용 라이브러리를 제공(적어도 링크)하는 경우도 있다.[2] 개발 툴들이 그렇듯 아무나 쉽게 만지고 다니는 물건은 아니지만 C언어와 자바에 대한 기본 지식만 있다면 굉장히 간편한 툴이다. 경쟁자로 넷빈즈(NetBeans)와 제이빌더(JBuilder) 등이 있는데 이클립스의 인기에 한참 밀리고 있다. 제이빌더는 상용인데다 느리다는 평도 있고 넷빈즈는 오라클이 소유하던 기간 동안 서포트가 지지부진해서 실무 환경에서는 대부분의 업체가 이클립스 또는 IntelliJ IDEA로 옮겨간 실정이다. 최근에는 JetBrainsIntelliJ IDEA가 빠르게 치고 올라와 이클립스의 점유율을 앞지르고 있다. 아무래도 JetBrains는 영리 기업이기 때문에, 이클립스 재단과 같은 오픈 소스 개발팀에 비하면 개발 속도와 고객 서비스가 훨씬 좋을 수밖에 없다.
이클립스는 기본적으로 Java 개발용으로 쓰이는 경우가 가장 많지만, 플러그인을 사용하면 다른 언어의 개발도 가능하다. 가장 기본적으로 C/C++를 지원하는 CDT부터 Python을 지원하는 PyDev, Ruby를 지원하는 RDT, 포트란을 지원하는 Photran도 있으며, 액션스크립트 개발툴인 FDT나 플래시빌더도 있다. 웹용으로는 Aptana가 있다. 플래시빌더 같은 경우에는 기본적으로는 별도로 나오는 스탠드얼론 툴이지만 이클립스 플러그인 형태로도 나온다.
그리고 비주얼 스튜디오마냥 시스템에 인스톨해서 사용하는 방식이 아니라 하드디스크의 적당한 곳에 압축을 해제하여 실행파일을 돌려 사용하는 방식(무설치판 같은 방식)인지라 사용목적에 따라 다양한 이클립스 버전을 사용하는 것도 편리한 점의 하나이다.[3] 굳이 이런방식을 택하는 이유는, 개발언어나 목적에 따라 설치한 플러그인들이 서로 충돌하는 경우가 발생할 수 있으며, 이에 따라 프로그램이 꼬이는 일도 발생할 수 있기 때문이다. 가령 A프로젝트에는 A1, A2 플러그인을 설치해 따로 사용하고 B프로젝트에는 B1, B2 플러그인을 설치해 또 따로 사용하는 방식. 그래서 어떤 플러그인을 깔면 다른 플러그인은 그 이클립스에는 못 깐다. 그러니까 이클립스 A에 어떤 플러그인 B를 깔고 난 다음엔 다른 플러그인 C가 깔리지 않는 경우가 있다.
어떤 개발 툴체인을 사용할 것인지를 직접 설정, 연결하여 사용할 수 있기 때문에 다른 언어 뿐 아니라 다른 구동 환경에서 사용되는 프로그램의 제작, 즉 크로스 컴파일도 가능하다. 이는 x86 PC 환경에서 AVR, ARM32/64용 프로그램을 제작할 수 있다는 의미가 된다. 안드로이드 개발환경으로 사용 가능한 것도 이러한 이유이다.[4]
유명한 플러그인으로 AWT/Swing 개발 툴킷인 WindowBuilder(구 Visual Editor)가 있다.[5]

4. 단점


이클립스는 여러가지를 할 수 있다는 점에서 매우 매력적인 IDE임에는 틀림없다. 여러 프로젝트를 동시에 관리할 수 있게 해주는 IDE는 유명한 네임드 중에서는 이클립스 말고는 없고 또한 여러 언어를 동시에 작업해야 한다면 이클립스만큼 좋은게 없다.
그러나 이클립스가 다른 IDE보다 사용자에게 매력적으로 다가오기 위해선, 먼저 사용자가 이클립스에 대해서 매우 잘 알아야한다. 이클립스는 순정 그 상태일 때는 어떤 언어의 어떤 기능으로 승부를 봐도 다른 IDE를 이길 수 없다. 가령 Java 진영에서 이클립스의 위상은 상당하지만 커스터마이징을 거치지 않은 이클립스 그 상태로의 기능은 IntelliJ IDEA에 한참 못 미친다. 주 언어인 Java가 이 모양이니 다른 언어는 말할 것도 없다. 즉 진입장벽이 생각보다 있다는 것이다. 이클립스의 온전한 기능을 다 끌어쓰기 위해서는 기본적으로 설정되어 있지 않은 각종 옵션 세팅과 사용되지 않은 키맵, 그리고 유용한 여러가지 오픈 소스 플러그인을 모두 다 깔아야지 이클립스 본연의 막강함이 나오는 것이다. 그래서 생각과는 달리 초보자들에게는 전혀 좋은 툴이 아니다.
또한 전반적으로 다른 IDE에 비해서 최적화가 제대로 안돼서 심각하게 느린 편이다. 비주얼 스튜디오Xcode처럼 각 운영체제에 특화된 IDE와 비교해서 느린건 어쩔 수 없다 쳐도, 마찬가지로 크로스 플랫폼을 지원하는 JetBrains의 IDE 시리즈들이나 기타 유명 IDE보다도 많이 느린 편이다. 이는 이클립스의 목적이 순수 한가지 언어에 특화된 IDE를 만드는게 목적이 아니며 넓은 폭의 IDE를 만드는게 목적이기에 어쩔 수 없는 면이 있긴 하지만 그래도 느린 반응성에 잔버그들과 싸우다 보면 한숨만 나오는 건 사실이다. 게다가 일반적인 사용자들은 저 수많은 기능들을 모두 써 가면서 사용할 일이 별로 없고, 각 언어에 특화된 기능만을 사용하고 싶어하는 것인데 이클립스는 그런 부분에서 시대에 많이 뒤쳐져 있다.
오픈 소스 소프트웨어에서 흔히 일어나는 일이지만, 중요도가 낮다고 여겨지는 것들은 수정이 늦거나 아예 고쳐지지 않기도 한다. 대표적으로 label 들여쓰기에 대한 옵션이 없다는 것은 10년 가까이 지적되고 있는데도 여전히 수정되지 않고 있다. 자동완성 기능도 영 불편한 점이 많은데, Auto activation trigger의 기본값은 마침표(.) 하나밖에 없다. 비주얼 스튜디오처럼 자동완성 리스트가 텍스트 타이핑 도중에도 나타나게 하려면 알파벳 a~z, A~Z를 추가하면 되지만, 단순히 공백을 만들기 위해 스페이스바를 눌러도 자동완성으로 인식이 되어 실수로 의도치 않은 텍스트가 입력돼버리곤 한다. 해외에서도 이 자동완성 기능이 불편하다며 문제를 제기했으나 오랫동안 방치되고 있다.
그리고 주전공이라 할 수 있는 Java 개발 환경이 매우 강력하긴 하지만 그 외 언어의 플러그인들은 방치 플레이를 당하는 경향도 있다. 가령 C언어 개발용 플러그인 CDT의 경우, 리눅스에서 기본적으로 쓰이는 C 개발 환경[6]보다 약간 나은 수준이라는 평이다.(...)
한마디로 공짜니까 쓰는 IDE. 돈받고 이런 완성도의 개발환경을 팔았다면 그 회사는 몇번을 망했을 것이다.
한때는 안드로이드 앱을 제작할 때 사용하는 독보적인 툴의 위치에 있었으나 구글에서 JetBrains와 협력하여 만든 안드로이드 스튜디오를 본격 배포한 이후로는 지원 면에서 여러모로 밀리고 있다. 현재는 안드로이드 ADT 플러그인의 지원은 완전 종료. 하지만 이클립스에서 지원하는 Andmore라는 플러그인으로 여전히 안드로이드 앱 개발은 가능하다.
이 외에도 최근 버전인 Photon버전에서 이전 버전인 Oxygen보다 Error Reporting이 많이 뜨는 등 불안정한 모습을 보인다. 개선 판을 계속 내놓고 있으므로 지켜봐야할 일인 듯 하다.

5. 기타


Java 9의 경우는 Oxygen 4.7.1a 이후부터 지원하며 이전 버전들은 오류가 일어난다.
2018-12R 버전부터는 64Bit 운영체제만 지원한다. 32Bit 운영체제를 지원하는 이클립스는 2018-09 버전까지이다.
2020-09(4.17) 버전부터는 JAVA 11을 요구한다. JAVA 8 환경에서 작업하고 싶다면 2019-12(4.14) 버전을 다운로드 할 것.

[1] 이러한 기능을 정식으로 지원하는 네임드 IDE는 이클립스 외에 넷빈즈가 유일하다. 그러나 넷빈즈는 각 프로젝트별 콘솔 창을 한 화면에 분할 표시하는 기능이 없다.[2] 구글에서 안드로이드 개발용 툴인 안드로이드 스튜디오를 출시하고 15년 8월경부터 이클립스를 통한 개발지원을 완전히 중단했으나 이클립스에서 Andmore란 이름으로 안드로이드 개발을 지원하고 있다. 하지만 안드로이드 스튜디오가 여러 면에서 나으니 가능하면 안드로이드 스튜디오를 쓰자.[3] 현재는 인스톨러가 나와 있다. 그러나 이것도 압축 해제를 대신 해 주는 정도이고 시스템 자체에 인스톨하지는 않는다. '제어판-프로그렘 추가/제거'에 가 보면 설치 후에도 이클립스는 존재하지 않는다는 것으로 확인할 수 있다.[4] 이것이 중요한 이유를 AVR을 예로 들어 설명하자면, 적절한 크로스 컴파일러만 나와 있다면 AVR studio를 이용하거나 CLI에서 직접 컴파일러를 구동시킬 필요 없이 더 편리한 환경에서 사용할 수 있다는 점이다.[5] 기존에는 동명의 회사가 유료 플러그인으로 판매했었으나, 구글이 회사를 인수한 후 플러그인을 무료로 배포하고 있다.[6] vim + GCC + Make + GDB의 조합.