개발 환경
- MacOS
- IntelliJ IDEA
- Spring boot 2.4
1. OpenJDK 11 (For MacOS) 다운로드 받기
https://jdk.java.net/archive/ 이 링크에서 자신에게 맞는 OS 버전을 다운로드 받을 수 있다.
![https://velog.velcdn.com/images%2Fwouldbestar%2Fpost%2F8928473c-c61f-4df8-9989-26627f371b5c%2Fimage.png%5D(https%3A%2F%2Fimages.velog.io%2Fimages%2Fwouldbestar%2Fpost%2F8928473c-c61f-4df8-9989-26627f371b5c%2Fimage.png)
GA(General-Availability) 버전으로 일반적으로 사용가능한 버전이라는 뜻이다.
$ curl -C - <https://download.java.net/java/ga/jdk11/openjdk-11_osx-x64_bin.tar.gz> -O openjdk-11_osx-x64_bin.tar.gz
2. Spring Boot 프로젝트 만들기
먼저, Spring Initializr 로 스프링 부트 프로젝트를 만들자.
![https://velog.velcdn.com/images%2Fwouldbestar%2Fpost%2F9771ebda-5c1c-43c6-8f9a-3d4d727648b0%2Fimage.png%5D(https%3A%2F%2Fimages.velog.io%2Fimages%2Fwouldbestar%2Fpost%2F9771ebda-5c1c-43c6-8f9a-3d4d727648b0%2Fimage.png)
- 여기서는 OpenJDK 11 버전이 설정이 되어 있지 않으므로 1.8을 그대로 두자
- Next!
![https://velog.velcdn.com/images%2Fwouldbestar%2Fpost%2F0dcd0851-b9f2-4621-a54b-7d26f3cc8609%2Fimage.png%5D(https%3A%2F%2Fimages.velog.io%2Fimages%2Fwouldbestar%2Fpost%2F0dcd0851-b9f2-4621-a54b-7d26f3cc8609%2Fimage.png)
- 대충..필요한 정보를 입력한다.
- 빌드 도구는 Maven이든, Gradle이든 자신이 편한 도구를 사용하면 된다.
- Next!
![https://velog.velcdn.com/images%2Fwouldbestar%2Fpost%2Ffe40ec88-14be-4c72-b918-68dd82a1e9ac%2Fimage.png%5D(https%3A%2F%2Fimages.velog.io%2Fimages%2Fwouldbestar%2Fpost%2Ffe40ec88-14be-4c72-b918-68dd82a1e9ac%2Fimage.png)
- 간단히 스프링 부트를 실행시켜서 확인해 볼 목적으로 Web 정도만 추가하자.
- Next! → 프로젝트 생성할 파일 설정하고 프로젝트 시작
3. OpenJDK 11 버전 설정하기
gradle 기준, 초기 모습은 다음과 같을 것이다.
plugins {
id 'org.springframework.boot' version '2.4.2'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
test {
useJUnitPlatform()
}
sourceCompatibility
는 자바 소스를 컴파일 할 수 있는 버전을 명시하는 곳인데, 1.8 버전으로 되어 있다.
Gradle, "sourceCompatibility" vs "targetCompatibility"?
먼저 인텔리제이의 Project Structure 창을 열자.
![https://velog.velcdn.com/images%2Fwouldbestar%2Fpost%2Fda3e419c-72ff-4f91-a281-de5c78fd221f%2Fimage.png%5D(https%3A%2F%2Fimages.velog.io%2Fimages%2Fwouldbestar%2Fpost%2Fda3e419c-72ff-4f91-a281-de5c78fd221f%2Fimage.png)
- 여기도 1.8로 도배되어 있다.
- 위 창의 탭 중에 SDKs 로 가자.
![https://velog.velcdn.com/images%2Fwouldbestar%2Fpost%2F9aa04aab-b880-469a-94aa-399e929cf3e8%2Fimage.png%5D(https%3A%2F%2Fimages.velog.io%2Fimages%2Fwouldbestar%2Fpost%2F9aa04aab-b880-469a-94aa-399e929cf3e8%2Fimage.png)
- 버튼으로 다운로드 받은 OpenJDK 11 을 추가하자.
- 버튼 → Add JDK... → 설치한 경로로 이동
![https://velog.velcdn.com/images%2Fwouldbestar%2Fpost%2F283e4d82-c606-466a-b4d2-a067a8e847db%2Fimage.png%5D(https%3A%2F%2Fimages.velog.io%2Fimages%2Fwouldbestar%2Fpost%2F283e4d82-c606-466a-b4d2-a067a8e847db%2Fimage.png)
이제 1.8로 도배된 설정들을 11로 다 바꾸자
![https://velog.velcdn.com/images%2Fwouldbestar%2Fpost%2F645b90a8-7f22-4ed8-abd5-98ff9d06f2df%2Fimage.png%5D(https%3A%2F%2Fimages.velog.io%2Fimages%2Fwouldbestar%2Fpost%2F645b90a8-7f22-4ed8-abd5-98ff9d06f2df%2Fimage.png)
- 빨간 박스 클릭해서 11 버전으로 변경
- 빨간 박스 아래에도 11 버전으로 변경되는지 확인할 것!
- Modules 탭으로 이동
![https://velog.velcdn.com/images%2Fwouldbestar%2Fpost%2F9d3c8261-7fbd-4bd6-8496-9855787b2619%2Fimage.png%5D(https%3A%2F%2Fimages.velog.io%2Fimages%2Fwouldbestar%2Fpost%2F9d3c8261-7fbd-4bd6-8496-9855787b2619%2Fimage.png)
![https://velog.velcdn.com/images%2Fwouldbestar%2Fpost%2F9e654a0c-596b-47d4-9448-0f7f60352366%2Fimage.png%5D(https%3A%2F%2Fimages.velog.io%2Fimages%2Fwouldbestar%2Fpost%2F9e654a0c-596b-47d4-9448-0f7f60352366%2Fimage.png)
- Dependencies 에서 위 빨간 박스 클릭하여 11 버전으로 변경!
마지막으로, Apply → OK
다시 build.gradle 파일로 돌아와서 아래와 같이 11 버전으로 변경!
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
변경 후, gradle 적용하기
4. 적용되었는지 확인하기!
OpenJDK 11 버전이 정말로 정상적으로 적용되었는지, JDK 10 버전 이상부터 사용할 수 있는 var
변수를 써보자.
public class JavaVersionTest {
@Test
@DisplayName("JDK 11 버전이 정상적으로 동작하는지 테스트(실제로 var 변수는 JDK 10 버전부터 가능, 11 버전부터는 람다에서도 가능")
void var_test() {
var name = "CODEMCD";
Assertions.assertThat(name).isEqualTo("CODEMCD");
}
}
- 위와 같은 간단한 테스트를 작성하여 정상적으로 동작하는지 확인해보자.
만약, var
변수를 사용할 수 없을 때는 인텔리제이 Preferences 로 가서,
![https://velog.velcdn.com/images%2Fwouldbestar%2Fpost%2Fac89d83e-67ce-4657-b941-5a3b3edfda24%2Fimage.png%5D(https%3A%2F%2Fimages.velog.io%2Fimages%2Fwouldbestar%2Fpost%2Fac89d83e-67ce-4657-b941-5a3b3edfda24%2Fimage.png)
- 위 Project bytecode version이 11 버전인지 확인해보자!
참고자료
스프링 부트에 openjdk 11 추가하기: https://www.youtube.com/watch?v=RNsybT8_xKk