람다와 스트림을 공부해보면 자바8 이상부터라는 말을 볼 수 있다. 하지만 java버전을 보면 jre, jdk 1.8과 8 등 자바 8이 무엇을 말하는지 헷갈리는 부분들이 많아 정리한다.
JVM
java virtual machine
자바 가상머신으로 자바 프로그램 실행환경을 만들어준다. 자바 코드를 컴파일하면 .class 바이트 코드로 만들어지는데 이를 JVM에서 실행하는 것이다. JVM은 밑에 나오는 JRE에 포함되어있다.
따라서 운영체제에 맞는 JRE가 설치되어있다면 JVM은 설치되어있는 것이다.
.class 파일은 바이트 코드로 기계어로 가는 단계의 중간이라고 생각하면 된다.
바이트 코드를 읽는 방식
바이트 코드를 한 줄씩 해석하는 Interpreter방식과 JIT컴파일 방식 두 가지를 혼용한다. Interpreter는 느리고 JIT는 빠른 대신 비용 소모가 있다. 따라서 JVM은 인터프리터를 사용하다가 일정 기준을 넘기면 JIT 컴파일 방식을 사용한다.
JIT(Just In Time) 컴파일러란 바이트 코드를 실행하는 시점에 각 OS에 맞는 Native Code로 변환하여 실행 속도를 개선한다.
컴파일 시 해당 코드를 캐싱한다. 이후 바뀐 부분만 컴파일을 하기 때문에 성능이 좋다.
JRE
JDK
- Java Development Kit의 약자어다.
자바 몇 버전이라는 언어 규격이 있고 그 규격을 구현한 것을 JDK로 보면 편하다.
위에서 봤듯이 JDK
에는 javac가 있기 때문에 JDK17
이라하면 javac 버전도 자바17
에 맞추어진다.
따라서 자바8을 사용하기 위해서는 JDK1.8
이나 1.8 위 버전을 사용해야한다.
Java 8
까지는 해당 버전에 맞는 JDK는 JDK1.8
이라 부르고 JAVA 9
이상은 JDK 9
로 쓴다.
결국 완전히 같지는 않지만 자바 버전과 JDK의 버전을 똑같다 생각해도 좋을 것 같다.
출처:
https://coding-factory.tistory.com/827
https://highright96.tistory.com/70
https://okky.kr/questions/587890