- 연구실 홈페이지 개발 프로젝트의 이클립스 개발 환경 구축 과정을 소개한다.
- 인텔리제이 사용하여 개발 환경을 구축 한다면 ‘Project Lab 1-1. 개발 환경 구축(IntelliJ)’’ 게시글을 참고하면 된다.
개발 환경
- Windows 10 64bit
- jdk11.0.7
- Spring Tools 4 for Eclipse(sts-4.7.0.RELEASE)
프로젝트 폴더 관리
- Spring 폴더를 생성하여 프로젝트 개발에 필요한 모든 리소스를 한 개의 파일 내에서 관리하고자 한다. 바탕화면에 ‘Spring’ 폴더를 생성하여, 해당 폴더에 리소스를 다운 받는다. 하단 이미지는 프로젝트 개발에 필요한 리소스 집합이다.
자바 버전
ORACLE JDK
- 상업용이 아닌 비상업용 개인 사용자는 ORACLE JDK를 버전과 패치 이력에 상관없이 무료로 사용할 수 있다. 즉, 업데이트 지원 종료까지 지속적으로 업데이트를 받을 수 있다. 기존 Oracle JDK 8의 경우 2019년 1월 이후 업데이트부터 라이센스 비용이 요구된다.
- 하지만 ORACLE JDK를 상업용으로 사용한다면 라이선스 비용이 발생한다. ORACLE은 약 3년 주기로 LTS 서비스를 지원하는 JDK를 출시한다.
- JDK 11과 같은 LTS JDK는 오라클이 명시한 지원기간까지 지속적으로 지원된다. JDK 11의 경우 Extended Support Until 기간까지 포함하면, 2026년 9월까지 지원된다. 지원기간은 하단 출처에서 확인 가능하다. 하지만 LTS가 지원되지 않는 JDK는 6개월만 지원된다.
- 22.06.27 JDK LTS 버전은 17이다.
출처: https://www.oracle.com/java/technologies/java-se-support-roadmap.html
Open JDK
- 이에 따른, 대안은 Open JDK를 사용하는 것이다. Open JDK는 출시 후 6개월이 지난 경우 업데이트를 지원받기 위해서는 새로운 버전의 JDK로 업그레이드해야 한다는 단점이 있다. 이는 개발자에게는 큰 무리없는 정책이지만, 오랜 기간 안정적인 운영 및 유지보수가 요구되는 사용자 측면에서는 꽤 큰 위험 부담으로 다가올 수 밖에 없다.
출처: https://mine-it-record.tistory.com/7
https://goddaehee.tistory.com/183
https://byline.network/2018/11/13-28/
- eclipse 재단에서 관리하는 ADOPTIUM Open JDK를 추천하며 하단 출처에서 설치 할 수 있다.
JDK 다운로드
- 본 프로젝트 개발에서는 Oracle JDK 11 버전을 사용할 것이다. 하단 URI에서 설치 파일을 다운로드 받는다.
Link: https://www.oracle.com/java/technologies/javase-jdk11-downloads.html
- JDK 설치 파일을 실행한다. 이 후 ‘Change’ 버튼을 클릭하여 JDK 설치 경로를 변경한다. 필자의 JDK 설치 경로는 프로젝트 개발에 필요한 파일을 정리한 Spring 폴더다. JDK 설치 경로는 ‘C:\Users<User>\Desktop\Spring\jdk-11.0.7’ 다.
자바 환경 변수 등록
- 자바 환경 변수를 등록해야 한다. 자바 환경 변수 등록 방법은 하단 출처를 참고한다. 하단 그림처럼(그림은 잘못 나와 있음) JAVA_HOME 경로는 ‘C:\Users<User>\Desktop\Spring\jdk-11.0.7’로 설정한다.
- 다음으로 시스템 변수 ‘Path’를 편집하여 ‘%JAVA_HOME%\bin’을 새로 만든 다음, 가장 위로 이동시킨다.
Spring Tools 다운로드
- 하단 URI에서 Spring Tools를 다운 받는다.
Link: https://spring.io/tools
SpringToolSuite4.ini 파일 최적화
- SpringToolSuite4.ini 파일은 STS의 jdk 경로, JVM 설정 등을 담당한다. 애플리케이션 종류에 따라 JVM 최적화 옵션을 다르게 적용할 수 있다. 여러 블로그를 분석한 결과, 블로그 마다 권장하는 최적화 옵션이 다르다.
- 애플리케이션이 응답 대기 시간이나 처리량에 민감하지 않다면 Heap 영역만 변경하고 JVM의 기본 설정을 따르는게 좋다. 애플리케이션의 응답 대기시간과 처리량은 서로 trade-off 관계다. 응답 대기시간을 감소시키면 처리량은 떨어지고 응답 대기시간이 길어지면 처리량은 증가한다. 다음과 같이 STS를 설정하였다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<SpringToolSuite4.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.springframework.boot.ide.branding.sts4
--launcher.defaultAction
openFile
-vm
C:\Users\scribnote5\Desktop\Spring\jdk-11.0.7\bin\javaw.exe
-vmargs
-Dosgi.requiredJavaVersion=11
-Xms2g
-Xmx2g
-XX:ReservedCodeCacheSize=960m
-XX:MetaspaceSize=1024M
-XX:MaxMetaspaceSize=1024M
-XX:NewSize=1024M
-XX:MaxNewSize=1024M
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200
-Xverify:none
-XX:+UseStringDeduplication
--add-modules=ALL-SYSTEM
- Eclipse 실행시 적용되는 JDK 경로를 수정한다.
1
2
-vm
C:\Users\<User>\Desktop\Spring\jdk-11.0.7\bin\javaw.exe
- Eclipse가 인식하는 JDK 버전을 수정한다. 만약 JDK 버전이 다르면 변경한다.
1
-Dosgi.requiredJavaVersion=11
- Heap(일반적인 실행) 영역, Metaspace(클래스, 메타 데이터를 관리) 영역 그리고 NewSize(새로운 객체 생성) 영역의 크기를 늘려 eclipse 실행 속도를 향상시킨다. 참고로 기존 PermGen 영역은 JDK 8부터 Metasapce 영역으로 변경되었다.
- 일부 블로그에서는 Heap 영역의 최소 크기인 Xms와 최대 크기인 Xmx가 다른 경우가 있는데, 이 두 영역의 크기가 다른 경우 heap 영역을 늘릴 때 지연시간이 발생한다고 한다. 따라서 모든 영역의 기존 크기와 최대 크기를 같게 설정하였다.
- 해당 영역들의 크기 설정은 RAM 사용량에 따라서 다르게 적용 해야한다. RAM 16GB를 사용하며, 다음과 같이 설정하였다. 만약 사용하는 RAM 크기가 다르거나 더 많은 영역들을 사용하고 싶다면, 크기를 임의로 변경하면 된다.
1
2
3
4
5
6
-Xms2048m
-Xmx2048m
-XX:MetaspaceSize=256M
-XX:MaxMetaspaceSize=256M
-XX:NewSize=256M
-XX:MaxNewSize=256M
- 클래스 및 플러그인의 유효성 검사를 건너뛴다. 별도의 플러그인 설치가 없는 경우 해당 옵션을 유지한다. 만약 새로운 플러그인을 설치하는 경우 해당 옵션을 설정하여 유효성을 검사하도록 한다.
1
-Xverify:none
- JVM의 Gabage Collector는 G1(JDK 11 default)으로 설정하였다. G1 Garbage Collector는 전체 처리량 보다 대기 응답 시간을 우선시 한다. Gabage Collect로 인한 최대 대기 시간은 200ms다.
1
2
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200
- 이외에도, 컴파일러의 소수점 최적화 기능을 담당하는 “XX:+AggressiveOpts” 옵션을 설정 할 수 있다. 해당 옵션을 벤치마크한 글에 따르면, 벤치마크 종류에 따라 성능 변화 폭이 다르게 나타났다. 따라서 해당 옵션은 애플리케이션의 성능을 떨어뜨릴 수 있으므로 설정하지 않는다.
출처: https://unordinarydays.tistory.com/137
https://dezang.github.io/configuration-of-the-eclipse/
https://www.holaxprogramming.com/2017/10/09/java-jvm-performance/
https://perfectacle.github.io/2019/05/11/jvm-gc-advanced/
https://johngrib.github.io/wiki/jvm-memory/
https://blog.voidmainvoid.net/184
https://www.opsian.com/blog/aggressive-opts/
STS 설치 이후…
- STS 설치 이후 이클립스 내에서 설정이 필요하다.
- ‘Eclipse 기본 설정’ 게시글은 필수적으로 사용하는 설정들을 정리 하였기에, 이를 따라서 설정하는 것을 추천한다. 해당 설정들은 여러 블로그를 참고하여 작성하였다.
- ‘Eclipse 선택 설정’ 게시글은 사용자 취향에 따라서 선택적으로 적용하는 것을 추천한다.
- ‘Eclipse 단축키’ 게시글은 eclipse에서 많이 사용하는 단축키를 정리하였다. 본격적인 개발 전 많이 사용하는 단축키를 익히면 개발 생산성을 향상할 수 있다.
Comments powered by Disqus.