Java는 플랫폼 독립적이다.
Java로 작성한 코드는 모든 곳에서 돌릴 수 있다는 말이다.
Java가 플랫폼 독립적인 이유를 간단하게 알아보자.
compile : 작성한 코드를 컴퓨터가 읽을 수 있도록 미리 번역하는 것
interpret : 작성한 코드를 interpreter가 실시간으로 읽어서 컴퓨터에게 통역하는 것
Java는 C처럼 컴파일되는 언어에 속한다. 하지만 다른 부분이 존재하는데 여기서 포인트가 JVM이다.
컴퓨터를 위한 운영체제는 여러 종류가 있다. 대표적으로는 Windows, MacOS, Linux가 존재한다.
C언어로 작성한 코드를 Windows 용으로 컴파일 하게 되면 MacOS와 Linux에서는 이 컴파일된 코드를 읽지 못한다.
그래서 C언어로 작성한 코드는 Windows용, MacOS용, Linux용으로 각각 컴파일 해서 실행해야 한다.
하지만 Java는 컴퓨터에 JVM을 설치한다.
JVM은 자바 바이트 코드를 읽어서 자신이 설치된 운영체제에 맞는 기계어로 번역한다. 자바 바이트 코드가 바로 Java가 컴파일된 언어이다.
JVM이 자바 바이트 코드를 읽어서 운영체제에 맞는 기계어로 번역하기 때문에 Java로 작성한 코드는 플랫폼에 독립적으로 실행할 수 있게 되는 것이다.
JRE는 자바 실행 환경을 의미한다.
Java로 작성한 코드를 실행할 컴퓨터에는 JRE가 설치되어 있어야 한다.
JRE에는 대표적으로 JVM과 Java 표준 라이브러리가 포함되어 있다. 그 외에 각종 설정파일 등 자바 바이트 코트 실행에 필요한 요소들이 JRE에 포함되어 있다.
JDK는 자바 개발 키트를 의미한다.
Java로 프로그래밍 하기 위한 모든 것들이 있는 도구라고 생각할 수 있다.
JDK안에 JRE가 포함되고, 컴파일러도 포함된다. 그 외에 디버거, 컴파일된 Java 파일을 실행 파일로 만들어주는 JAR, 성능 등을 모니터링 할 수 있는 프로파일러 등도 포함되어 있다.
결국 Java로 작성한 코드를 실행하기 위한(Spring 서버를 실행하기 위해) 컴퓨터에는 JDK를 반드시 설치해야 한다.
표준 Java 언어를 만들고 관리하는 곳은 Oracle이다.
Orcale에서 Java 언어의 표준을 정하고 새로운 버전들을 개발하고 있다. Java를 사용하여 개발할 때 사용하는 JDK 또한 출시하고 있다.
Oracle에서는 두 가지 종류의 JDK를 출시하고 있다.
유료 버전의 Oracle JDK, 무료 버전의 Open JDK이다.
Oracle JDK는 상업적으로 사용하기 위한 JDK로 많은 기능과 좋은 성능을 가지고 있다.
Java가 유료라고 말하는 것은 Oracle JDK가 유료이기 때문이다. OpenJDK 또한 충분한 안정성을 가지고 있기 때문에 사용하는데 무리가 없다.
따라서 OpenJDK를 쓰면 무료로 Java를 사용할 수 있다.
JDK를 만들어서 출시하는 것은 Oracle 뿐만이 아니다. 여러 회사와 재단에서 무료나 유료로 JDK를 만들어서 출시하고 있다.
Java 언어를 개발하고 표준을 정하는 것은 Oracle에서 관리하지만, Java로 소프트웨어를 개발하고 실행하기 위한 JDK 제품은 여러 곳에서 만들어서 출시하고 있는 것이다.
whichjdk.com 에서는 각 JDK의 특성과 권장 용도를 살펴볼 수 있다. 예를 들어 Amazon Corretto JDK는 AWS 환경에서 동작하는데 최적화 되어있다.
따라서 어떤 환경에서 Java 코드를 실행할 것인지 등에 따라 어떤 JDK를 선택하여 개발할 것인지를 결정할 수 있다.
출처: 얄코님의 제대로 파는 자바