인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

ajdsasld님의 프로필 이미지
ajdsasld

작성한 질문수

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

라이브러리 살펴보기

프로젝트 생성 강의 관련 질문드립니다~

작성

·

45

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
여기에 질문 내용을 남겨주세요.

 

프로젝트 생성 강의 듣고나서 떠오르는 2가지 질문이 있어 글을 올려봅니다!

 

1) 먼저, 제가 start.spring.io에선 자바 17버전으로 프로젝트를 시작했는데, 막상 main 메서드를 실행시켜서 스프링부트 애플리케이션을 띄울 때 콘솔에는

2024-12-19T20:15:54.366+09:00  INFO 38362 --- [hello-spring] [           main] h.hello_spring.HelloSpringApplication    : Starting HelloSpringApplication using Java 21.0.5 with PID 38362 (/Users/.../Desktop/study/hello-spring/build/classes/java/main started by ... in /Users/.../Desktop/study/hello-spring)

이렇게 왜 자바 21.0.5버전을 사용하고 있다고 나올까요? 이미 제 맥북에 21버전 자바가 설치되어서 그런걸까요??

build.gradle에는

java {
   toolchain {
      languageVersion = JavaLanguageVersion.of(17)
   }
}

이렇게 17버전으로 올바르게 되어있긴 합니다!

 

2) 선생님께서 인텔리제이 Preferences > Gradle에서 Build and run using을 Gradle로 되어있는 걸 인텔리제이로 바꾸면 더 빠르게 실행할 수 있다고 하셨는데,

만약,

Gradle (Default)로 설정된 경우 > 인텔리제이 화살표 버튼을 클릭했을 때 자바 소스 코드를 컴파일하고 빌드 과정을 포함해서 빌드를 진행하고 스프링부트 애플리케이션을 실행하고,

IntelliJ IDEA로 설정된 경우 > 인텔리제이 화살표 버튼을 클릭했을 때 자바 소스 코드를 컴파일하고 빌드를 진행하지 않고 스프링부트 애플리케이션을 바로 실행하기 때문에 더 빠르게 실행된다고 하신걸까요??

답변 1

0

안녕하세요. ajdsasld님, 공식 서포터즈 y2gcoder입니다.

1) 말씀하신 것이 맞습니다! 자바 프로젝트를 컴파일 & 빌드 후 실행하기 위해서 컴퓨터에 설치된 자바를 사용하게 되어있습니다. ajdsasld 님께서 설치하신 JDK 가 21이고 그걸 사용하기 때문에 실행 시 로그에 출력되고 있습니다 🙂

2) 자바는 기본적으로 컴파일 언어이기 때문에, Gradle 이나 Intellij 모두 컴파일 및 빌드 과정을 거쳐 만들어진 .class를 실행한다고 생각해주시면 좋겠습니다! Intellij는 Gradle과 다르게 변경되지 않은 파일은 다시 컴파일 하지 않고, 변경된 파일만 컴파일하기 때문에 대체로 속도가 더 빠른 편입니다.

다만 Intellij 는 아시다시피 IDE에 종속적인 빌드 도구이기 때문에 실제 컴파일 & 빌드 한 Jar를 배포할 때는 maven 이나 gradle을 사용하고 있다는 점,

intellij는 삭제된 파일이 빌드시에 삭제되지 않기 때문에 기대와 다른 동작이 발생할 수 있다는 점(참고 링크) 을 인지하고 사용하셔야 합니다!

그리고 스프링 부트 3.2버전부터 바뀐 컴파일 방식으로 인해 intellij 를 빌드 도구로 사용할 때는 추가적인 작업이 필요하다는 점을 이유로 자주 하는 질문(다음 링크)에서는 빌드 도구를 gradle로 설정하시기를 권장하고 있습니다 🙂

 

감사합니다.

ajdsasld님의 프로필 이미지
ajdsasld

작성한 질문수

질문하기