1. Eclipse 버전별 JDK 버전
이클립스 설치 안내 공식 페이지. 버전별 JDK 버전에 대한 안내가 있다.
사내 솔루션 연동을 위해 이클립스의 plugins 폴더에 직접 jar 파일을 넣어 사용하는 플러그인이
이클립스 버전에 따른 이슈가 발생하는 것 같아 버전 관련 확인을 진행했다.
아래 표는 JDK 최소요구치가 상향된 최초의 버전들을 목록화한 표이다.
Release | Version | JDK Required |
2020. 09. 16 | Eclipse 4.17 (2020-09) | Java 11 or newer is required |
2017. 06. 28 | Eclipse 4.7 (Oxygen) | Java 8 or newer is required |
2016. 06. 22 | Eclipse 4.6 (Neon) | Java 8 is required |
2014. 06. 25 | Eclipse 4.4 (Luna) | Java 7 is required |
2013. 06. | Eclipse 4.3 (Kepler) | Java 6 is required |
2020년 9월 버전부터 자바11이 최소요구치가 되었다.
2020년 9월 버전부터는 플러그인이 정상작동하지 않았는데,
2020년 9월 버전부터 자바 11 이상으로 JDK 필요버전이 달라진 영향으로 생각된다.
2. eclipse.ini
이클립스 위키피디아의 eclipse.ini 문서를 참고했다.
이클립스를 설치하면 eclipse.exe 파일이 있는 경로에 eclipse.ini 파일이 있다.
ini 확장자는 initialization의 약자로 설정을 담는다.
ini 파일은 라인 시작 부분에 세미콜론 ; 을 이용해 주석을 작성할 수 있다.
이클립스 공식 설치 가이드에는 이 ini 파일 설정을 통해 내가 원하는 JVM을 사용하도록 특정하는 것을
중요한 설치 절차 중 하나로 명시하고 있다. 의도하지 않은 결과가 나오지 않도록 하는 첫 단추이기 때문이다.
아래는 이클립스 2020-06 버전의 eclipse.ini파일이다. 메모리 설정만 바뀐 기본내용이다.
-startup
plugins/org.eclipse.equinox.launcher_1.5.700.v20200207-2156.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.1200.v20200508-1552
-product
org.eclipse.epp.package.jee.product
-showsplash
org.eclipse.epp.package.common
--launcher.defaultAction
openFile
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vmargs
-Dosgi.requiredJavaVersion=1.8
-Dosgi.instance.area.default=@user.home/eclipse-workspace
-XX:+UseG1GC
-XX:+UseStringDeduplication
--add-modules=ALL-SYSTEM
-Dosgi.requiredJavaVersion=1.8
-Dosgi.dataAreaRequiresExplicitInit=true
-Xms2048m
-Xmx4096m
--add-modules=ALL-SYSTEM
3. eclipse.ini 내 vm, vmargs 설정
아래는 eclipse.ini 설정 관련 내용중 내가 개인적으로 주목한 내용들을 추려본 것이다.
1. eclipse 기동시 ini파일을 불러오는 과정
이클립스 기동시 환경변수에 ECLIPSE_HOME이 존재하는지 확인하고, 있다면 해당 경로의 eclipse.ini 파일을 읽어온다.
만약 ECLIPSE_HOME이 없다면 기동된 eclipse.exe파일과 같은 경로에 있는 eclipse.ini파일을 읽어온다.
2. -vmargs 이전과 이후
-vmargs 라인 이전에 작성된 내용은 이클립스에 적용된다.
이후에 작성된 내용은 JVM에 전달된다.
따라서 적용 대상에 따라 -vmargs 이전과 이후 어디에 작성할지 고려해야 한다.
3. -vm
이클립스를 구동할 JVM을 특정해서 명시하고자 한다면 -vm 옵션을 eclipse.ini에 사용하면 된다.
이클립스에 적용되는 설정이므로 -vmargs 보다 위쪽에 작성해야 한다.
그러나 다른 이클립스 적용 옵션보다는 아래에 작성되어야 한다. (-product 등)
따라서 -vmargs 바로 위에 작성한다고 생각하면 편할 것 같다.
예시는 다음과 같다.
-vm
C:\Java\JDK\1.8\bin\javaw.exe
-vmargs
-Dosgi.requiredJavaVersion=1.5
아마 메모리 설정과 더불어 -vm 설정이 가장 많이 사용하게될 설정일 것 같다.
4. OpenJ9와 -Xverify:none 옵션
메모리 설정 이외에 추가적으로 적용할 최적화를 위한 옵션이 있나 찾아보려 했지만
맘에 쏙 드는 건 찾을 수 없었다.
그러나 대다수 공통적으로 지적되는게 verify:none 옵션이었다.
해당 옵션에 대해 찾다가 공식 문서를 발견했다.
나는 개인적으로 AdoptOpenJDK Hotspot 을 주로 사용해왔는데,
그 옆에 있는 openj9은 어떤 옵션일까 궁금해하면서도 그냥 넘어갔었다.
HotSpot은 OpenJDK 커뮤니티에서 개발하는 JVM이고 오라클에서 사용한다.
OpenJ9는 이클립스 재단에서 개발하는 JVM이고 IBM에서 사용한다.
OpenJ9 공식페이지에 접속해보면 핫스팟에 비해 더 가볍고 빠르다고 홍보하고 있다.
아래 사진은 OpenJ9 의 vm 옵션 공식 문서 중 일부다.
verify 관련 디폴트 설정은 non-bootstrap 클래스들을 검증하는 설정인데,
이를 disable 하는 것이 verify:none 설정이다.
그러나 이는 13버전부터 deprecate 되었다.
또한 OpenJ9이 아닌 Hotspot JVM을 사용할 경우 공식 문서 상 해당 옵션이 존재하지 않았다.
결론은 해당 옵션이 Hotspot JVM을 사용할 경우 무의미할 뿐 아니라
none-bootstrap 클래스가 무엇인지도 모르겠고;;
13부터는 deprecate 되었다고 하니 굳이 넣어야할 필요성을 느끼진 못했다.
소감
이클립스 재단에 정말 감사하지만
어쩔 수 없이 이클립스를 써야할 경우를 제외하곤 역시 인텔리제이가 짱짱맨인 것 같다.
왜 써야 하는지, 이게 무엇을 의미하는지 모르고 쓰는 건 역시 영 개운치가 않다.
난 로우레벨 쪽은 흥미가 떨어지는 것 같다. ^^;
'IDE' 카테고리의 다른 글
Java 코드에서 정규식 검사하기, 쿼리 즉시 날려보기 (IntelliJ) (2) | 2022.06.10 |
---|---|
사용되지 않는 코드 탐색 및 제거하기 (IntelliJ,Inspect Code) (2) | 2022.03.18 |
VS Code 마우스 휠로 폰트 사이즈 조절하기 (0) | 2021.05.19 |
아무 폴더에서 우클릭하여 인텔리제이 프로젝트로 열기 (2) | 2021.04.14 |
JavaDoc 작성 방법 및 IntelliJ에서 생성하기 + 모든 주석 한 번에 제거하기 (2) | 2021.01.03 |