컴파일러: 코드를 통째로 번역
인터프리터: 코드를 한줄씩 번역
코드가 짧을 때는 인터프리트 방식이 빠를 때가 많다.
결론부터 말하자면 자바는 컴파일러와 인터프리터가 합쳐진 하이브리드 언어이다.
자바의 컴파일 과정을 살펴보면,
소스코드→(자바 컴파일러,javac)→바이트코드→(자바 인터프리터)→바이너리코드 순으로 컴파일된다.

실행엔진에 인터프리터와 컴파일러가 같이 있는 이유는 인터프리터가 큰 규모에서는 느리기 때문에 이를 보완하기 위해 컴파일러를 같이 사용하는 것이다.
+) 컴파일은 빌드일까?
프로젝트에서 쓰인 각각의 파일과 각종 리소스를 JVM이 인식할 수 있도록 패키징하는 전체 과정이다.
Ant > Maven > Gradle
maven의 점유율이 높다.
→ maven repository
+) 생성자는 메소드일까?
스프링을 한겹 싸서 스프링부트를 만듦.
스프링의 큰 단점은 설정할 것이 너무 많다는 것이다.
그리고 스프링은 설치를 따로 해야하고 서버 구축을 스스로 해야 한다.
하지만 스프링부트는 설정과 서버 생성을 알아서 해준다.
[빌드과정에서 생긴 오류]
A problem occurred configuring root project 'projectname'.
Could not resolve all artifacts for configuration ':classpath'.
Could not resolve org.springframework.boot:spring-boot-gradle-plugin:X.X.X.
Required by:
project : > org.springframework.boot:org.springframework.boot.gradle.plugin:X.X.X
Dependency requires at least JVM runtime version XX. This build uses a Java XX JVM.
java와 spring boot의 버전이 맞지 않아 생긴 오류이다.
[해결방법]
build.gradle에서 plugin의 id 'org.springframework.boot' version 을 java 버전에 맞춰 변경해준다.
plugins {
id 'java'
id 'org.springframework.boot' version 'X.X.X'
}
또는 setting→build,execution,deployment→gradle→gradle JVM의 버전을 자바에 맞게 수정해주면 됨.