Home Project Lab 1-1. 개발 환경 구축(IntelliJ)
Post
Cancel

Project Lab 1-1. 개발 환경 구축(IntelliJ)

  • 연구실 홈페이지 개발 프로젝트의 인텔리제이 개발 환경 구축 과정을 소개한다.
  • 이클립스를 사용하여 개발 환경을 구축 한다면 ‘Project Lab 1-1. 개발 환경 구축(IntelliJ)’ 게시글을 참고하면 된다.

개발 환경

  • Windows 10 64bit
  • jdk11.0.7
  • IntelliJ Ultimate 2021.1

프로젝트 폴더 관리

  • ‘Spring Boot’ 폴더를 생성하여 프로젝트 개발에 필요한 모든 리소스를 한 개의 파일 내에서 관리하고자 한다.

자바 버전

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개월만 지원된다.

출처: 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를 추천하며 하단 출처에서 설치 할 수 있다.

출처: https://adoptium.net/

JDK 다운로드

  • 본 프로젝트 개발에서는 Oracle JDK 11 - Windows x64 Compressed Archive 버전을 사용할 것이다. 하단 URI에서 설치 파일을 다운로드 받는다.
  • 이 후 ‘Spring boot’ 폴더에 압축을 해제한다.

Link: https://www.oracle.com/java/technologies/javase-jdk11-downloads.html

자바 환경 변수 등록

  • 자바 환경 변수를 등록해야 한다. 자바 환경 변수 등록 방법은 하단 출처를 참고한다. 하단 그림처럼 JAVA_HOME 경로는 ‘C:\Users<User>\Desktop\Spring Boot\jdk-11.0.7’로 설정한다.

image

  • 다음으로 시스템 변수 ‘Path’를 편집하여 ‘%JAVA_HOME%\bin’을 새로 만든 다음, 가장 위로 이동시킨다.

image

IntelliJ 다운로드

  • 하단 URI에서 IntelliJ를 다운받은 후 설치한다.

Link: https://www.jetbrains.com/ko-kr/idea/download/#section=windows

IntelliJ 최적화: Edit Custom VM Options

  • IntelliJ 실행 -> Help -> Edit Custom VM Options

image

  • 해당 옵션은 IntelliJ의 JVM 설정을 담당한다. 애플리케이션 종류에 따라 JVM 최적화 옵션을 다르게 적용할 수 있다. 여러 블로그를 분석한 결과, 블로그 마다 권장하는 최적화 옵션이 다르다.
  • 애플리케이션이 응답 대기 시간이나 처리량에 민감하지 않다면 Heap 영역만 변경하고 JVM의 기본 설정을 따르는게 좋다. 애플리케이션의 응답 대기시간과 처리량은 서로 trade-off 관계다. 응답 대기시간을 감소시키면 처리량은 떨어지고 응답 대기시간이 길어지면 처리량은 증가한다.
  • Heap(일반적인 실행) 영역, Metaspace(클래스, 메타 데이터를 관리) 영역 그리고 NewSize(새로운 객체 생성) 영역의 크기를 늘려 eclipse 실행 속도를 향상시킨다. 참고로 기존 PermGen 영역은 JDK 8부터 Metasapce 영역으로 변경되었다.
  • 해당 영역들의 크기 설정은 RAM 사용량에 따라서 다르게 적용 해야한다. RAM 16GB를 사용하며, 다음과 같이 설정하였다. 만약 사용하는 RAM 크기가 다르거나 더 많은 영역들을 사용하고 싶다면, 크기를 임의로 변경하면 된다.
  • JVM의 Gabage Collector는 G1(JDK 11 default)으로 설정하였다. G1 Garbage Collector는 전체 처리량 보다 대기 응답 시간을 우선시 한다. Gabage Collect로 인한 최대 대기 시간은 200ms다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
-Xms2g
-Xmx2g
-XX:ReservedCodeCacheSize=960m
-XX:MetaspaceSize=1024M
-XX:MaxMetaspaceSize=1024M
-XX:NewSize=1024M
-XX:MaxNewSize=1024M
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200
-XX:SoftRefLRUPolicyMSPerMB=50
-XX:CICompilerCount=2
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-ea
-Dsun.io.useCanonCaches=false
-Djdk.http.auth.tunneling.disabledSchemes=""
-Djdk.attach.allowAttachSelf=true
-Djdk.module.illegalAccess.silent=true
-Dkotlinx.coroutines.debug=off
-Dfile.encoding=UTF-8

출처: https://johngrib.github.io/wiki/jvm-memory/#gc-%EC%84%A0%ED%83%9D-%EA%B0%80%EC%9D%B4%EB%93%9C%EB%9D%BC%EC%9D%B8-%EC%9A%94%EC%95%BD https://blog.ddoong2.com/2019/07/29/IntelliJ-IDEA-%EC%98%B5%EC%85%98/#

오류 해결: Command line is too long. Shorten command line for…

  • 실행 명령어가 길어지는 다음과 같은 오류가 발생하므로, 설정 파일에 옵션을 추가한다.

  • 프로젝트 경로 -> .idea -> workspace.xml -> 속성 내부에 ''를 추가한다.

image

Spring Boot Application(내장 톰켓) IPv6 대신 IPv4 사용하기

  • 내장 톰켓은 IPv6 주소 체계를 사용하므로, 우리가 많이 사용하는 IPv4로 변경하려면 다음과 같이 설정하면 된다.
  • Run/Debug Configurations 항목에서 ‘-Djava.net.preferIPv4Stack=true’ 옵션 추가

image

IntelliJ 설치 이후…

  • ‘IntelliJ 유용한 설정’은 IntelliJ를 유용하게 사용하는 설정들을 정리하였다. 해당 설정들은 여러 블로그를 참고하여 작성하였다.
  • IntelliJ 기본 설정은 ‘IntelliJ 유용한 설정’ 게시글을 참고하면 된다.
This post is licensed under CC BY 4.0 by the author.

소스코드 메트릭(Code Metrics) 개요

Project Lab 1-2. 개발 환경 구축(Eclipse)

Comments powered by Disqus.

Trending Tags