스프링 프로젝트, 공부를 하다보니 가장 기반이 되는 자바 공부가 필요하다고 느껴 시작!
구글링과 책을 통해 공부하다가 인프런에서 좋은 강의를 발견하게 되어 함께 수강하며 정리하려고 한다.
Java 언어로 작성한 코드를 실행하기 위한 환경부터 알아보자
JVM, JRE, JDK 개념의 큰 틀은 아래 그림과 같다
Oracle은 자바11부터 JDK만 제공하며 JRE는 따로 제공하지 않음
.위 개념을 생각하면서 아래 실행과정을 살펴보면,
simple.java
라는 파일을 IDE를 통해 생성한다.simple.class
라는 바이트 코드 파일이 생성된다.플랫폼/OS 기반 기계어
로 변환하며 실행시킨다.Java 9부터 들어온 시스템이고, 이를 통해 jlink를 사용해서 JRE를 직접 구현할 수 있다. (하지만 직접 구현하는 일은 거의 없다고 한다..)
오라클에서 만든 Oracle JDK 11버전부터만 상용 목적
으로 사용할 때 유료이다. 즉 Oracle에서 만든 OpenJDK 또는 Amazon에서 만든 Corretto 등은 무료로 사용가능하다.
JVM은 처음에는 자바를 위해 만들어졌지만, Java와의 의존성이 크지 않다.
즉, 다른 언어로 코드를 작성하더라도 컴파일을해서 .class 파일이 생긴다면 JVM의 환경을 사용할 수 있다는 것
이다.
이 방법은 프로파일링 툴, 성능 최적화, JVM Interpreter/JIT 등 JVM의 노하우를 그대로 사용 가능한 장점이 있다.
예) Kotlin, Scala, JRuby, Jython 등
*참고
인프런 - 더 자바, 코드를 조작하는 다양한 방법(백기선)
Java가 아직 무료인 이유
JVM, JRE, JDK