본문 바로가기

CS/OOP

JDK 와 JRE 그리고 JVM 알아보기

반응형

 

JDK 와 JRE 그리고 JVM 알아보기

안에서부터 밖으로 나가보자 

 

JVM(Java Vertual Machine)란?

JVM을 직역한다면 자바를 실행하기 위한 가상 기계라고 할 수 있다. JVM은 자바 응용프로그램을 운영체제나 하드웨어가 아닌 JVM과 통신하고 JVM은 자바 응용프로그램으로부터 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달한다. 즉 Java로 작성된 프로그램은 운영체제에 독립적이다. 즉 한번 작성하면, 어디서나 실행된다.(Write once, run anywhere)

 

JRE(Java Runtime Environment)란?

JRE는 이름에서 알 수 있듯이 실행만을 위한 환경이다. 개발자가 애플리케이션과 서비스 간에 완벽한 데이터 연결을 구축할 수 있도록 지원하는 다수의 통합 라이브러리를 제공한다. JRE는 JDK를 사용하여 작성된 Java 코드를 JVM에서 이의 실행에 필요한 필수 라이브러리와 결합 후 프로그램을 실행하여 개발자가 애플리케이션과 서비스 간에 완벽한 데이터 연결을 구축할 수 있도록 지원하는 다수의 통합 라이브러리를 제공한다. 즉 JRE는 자바를 실행할 수 있는 환경의 집합이라고 보면 된다. 

 

 

JDK(Java Development Kit)란?

JDK는 개발자가 작성한 자바 프로그램이 수행되는 프로세스를 의미한다. Java는 명령어를 통해서 어플리캐이션이 수행되면, 이 JVM 위에서 애플리케이션이 동작한다. JDK는 컴파일러와 클래스 라이브러리(Class Library)를 포함하는, 자바 플랫폼 사양서의 구현이다

 

JAVA의 특징

 

운영체제에 독립적이다.

JVM 때문에 설명은 위에 있다.

단순하고, 객체지향이며, 친숙해야 한다.

Java는 처음 만들 때부터 객체지향으로 디자인되어 있다. 다향성, 캡슐화 등 객체지향 언어의 특징들을 지원할 수 잇는 구조로 설계되었다.

견고하며, 보안상 안전하다.

Java는 컴파일 할 때, 실행할 때 문법적 오류를 체크하며 분산 환경에서 사용하기 위헤 디자인되어 분산 환경에서 외부에서 침입이 불가능한 애플리케이션을 만들 수 있도록 도와주며 네트워크 환경에서 클라이언트에게 승인받지 않은 프로그램은 실행할 수 없다. 따라서 바이러스를 생성하거나 파일 시스템을 공격할 수 없다.

높은 성능을 제공한다.

Java는 실행 환경에서 최대한의 성능을 낼수 있도록 되어 있고 자동으로 가비지 컬렉터가 낮은 우선 순위의 쓰레드로 동작하기 때문에 보다 높은 선능을 낼 수 있다. 또한 보다 빠른 성능을 위해서 네이티브한 언어로 작성한 부분을 자바에서 사용할 수 있다.

멀티쓰레드를 지원한다.

일반적으로 멀티쓰레드의 지원은 사용되는 운영체제에 따라 다르지만 Java는 멀티쓰레드를 지원하는데 시스템과 관계없이 구현가능하며, 라이브러리가 제공되어 구현이 쉽다. 또한 여러 쓰레드에 대한 스케줄링을 자바 인터프리터가 담당하여 개발자가 스케줄링에 대해서 ???

동적 로딩을 지원한다.

Java는 동적 로딩을 지원하여 프로그램 실행 시 모든 클래스가 한번에 로딩되지 않고 필요한 시점에 로딩을 하고 일부 클래스가 변경되어도 전체 애플리케이션을 다시 컴파일하지 않아도 되여 적은 작업만으로 유연한 어플리캐이션을 개발할 수 있다.

자동으로 메모리를 관리한다.

가비지컬렉터가 자동적으로 메모리를 관리해주기 때문에 프로그래머는 메모리를 따로 관리 하지 않아도 된다. 가비지컬렉터가 메모리를 자동으로 관리해주기 때문에 개발자는 프로그래밍에 집중할 수 있다.

 

참고

https://www.itworld.co.kr/news/110817

 

"JDK란 무엇인가" 자바 개발 키트 소개와 설치하기 - ITWorld Korea

자바 개발 키트(Java Development Kit, JDK)는 자바 애플리케이션을 구축하기 위한 핵심 플랫폼 구성요소다. 이 중심에는 자바

www.itworld.co.kr

 

반응형

'CS > OOP' 카테고리의 다른 글

JVM Multi Thread  (0) 2022.11.17
GC(garbage collection) 알아보기  (0) 2022.10.11
JVM이란 무엇일가?  (3) 2022.10.04
Java Array와 List 차이 알아보기  (0) 2022.09.16
OOP - SOLID 알아보기  (0) 2022.09.08