1 minute read

📖 플랫폼 독립성

자바의 가장 큰 특징이 무엇일까?

컴파일 된 코드가 플랫폼 독립적

자바는 다른 언어와 다르게 중간 언어를 사용한다.
따라서, 다른 언어의 컴파일러가 생성하는 결과물은 기계어라서 바로 실행이 가능한 반면에, 자바가 생성하는 클래스 파일인 .class는 바이트 코드만 있고, JVM의 도움 없이 바로 실행은 불가능하다.

하지만, 이로 인해 자바만의 커다란 특징이 나타나게 되는데, c++로 컴파일 완료가 된 .exe파일은 오직 윈도우에서만 작동하고, 유닉스나 리눅스에서는 정상적으로 작동하지 않는다.
Java는 컴파일을 하면 .class라는 파일로 저장되는데, 이 파일은 어떠한 플랫폼으로 가져가더라도 JVM가 있으면 정상적으로 작동된다.

image

📖 자바 플랫폼

Java에 대해서 공부하다보면 헷갈리는 3가지 단어가 있다.

  • 자바 가상 머신(Java Virtual Machine, JVM)
  • 자바 런타임 환경(Java Runtime Environment, JRE)
  • 자바 개발 키트(Java Development Kit, JDK)

JVM(Java Virtual Machine)란?

자바 가상 머신 JVM(Java Virtual Machine)은 자바 프로그램 실행환경을 만들어 주는 소프트웨어이다. Java는 어떠한 JVM에서도 실행이 가능하기 때문에 독립적인데 비해서, JVM은 플랫폼에 의존적이다.

Java는 플랫폼에 종속적이지 않지만 JVM은 플랫폼에 종속적이다.

JRE(Java Runtime Environment)란?

자바로 만들어진 프로그램을 실행시키는데 필요한 각종 라이브러리, API, JVM이 포함되어 있다.
간단하게, 개발(쓰기)는 안되고, 실행(읽기)만 가능한 프로그램이다.

JDK(Java Development Kit)란?

개발자들이 자바로 개발하는데 필요한 각종 라이브러리, javac, javadoc등의 개발도구 및 JRE를 포함하고 있다.

image

이에 대해서 더 알아보고 싶으면 다음을 참고하자
자바 가상 머신 JVM


📖 JRE와 JDK의 차이점 (윈도우)

실제로 자바 다운로드를 할 때, JRE와 JDK 두가지 버전의 차이가 있다.
따라서, 2가지 컴퓨터에 서로 다른 것을 다운로드 받고 어떠한 차이가 있는지에 대해서 알아보도록 하자.

다음과 같이 간단한 Main.java 파일을 생성해 주었다.

public class Main {
 
	public static void main(String[] args) {
		
		System.out.println("Hello Anna");  // abc
		
	}	
}

이를 다음 두가지 컴퓨터에 넣고 여러 명령어를 사용해 보았다.

🍄 JDK

4

이때, javac.class를 생성해주는 명령어로 JDK에 포함되어 있다.

1

JDK.class파일 생성후 실행까지 잘 되는 모습이다.

🍄 JRE

2

1

JRE는 컴파일러가 없이 JVM과 라이브러리만 존재하기 때문에, .class파일 자체를 생성하지 못하는 모습이다.



개인 공부 기록용 블로그입니다.
틀리거나 오류가 있을 경우 제보해주시면 감사하겠습니다.😁

Tags: ,

Categories:

Updated: