JDK, JRE 및 JVM은 개발자가 Java 응용 프로그램 및 개발 환경에 관해 이야기 할 때 매우 일반적으로 사용되는 단어입니다. 이 단어들 사이의 차이를 찾아 봅시다.

JDK와 JRE 대 JVM

JVM

자바 가상 머신 (JVM)은 자바 바이트 코드를 실행하는 가상 머신입니다. .java파일을 .class파일 로 컴파일하여이 바이트 코드를 얻 습니다 .class파일에는 JVM이 이해하는 바이트 코드가 들어 있습니다.

JRE

Java Runtime Environment (JRE)는 Java로 작성된 응용 프로그램을 실행하기위한 라이브러리 (jar), Java Virtual Machine 및 기타 구성 요소를 제공합니다. JRE에는 애플릿 및 응용 프로그램 개발을위한 컴파일러 또는 디버거와 같은 도구 및 유틸리티가 포함되어 있지 않습니다.

JDK

JDK는 JRE의 상위 세트이며, JRE가 가지고있는 모든 것을 컴파일러, 디버거 등의 개발 도구와 함께 포함합니다.


JDK, JRE 및 JVM 간의 관계

위의 세부 사항을 바탕으로, 우리는이 세 가지 사이의 관계를 아래와 같이 묘사 할 수 있습니다.

JRE = Java 응용 프로그램을 실행하기위한 JVM + 라이브러리.

JDK = JRE + 도구를 사용하여 Java 응용 프로그램을 개발

즉, 코드를 작성하는 Java 응용 프로그램 개발자 인 경우 시스템에 JDK가 설치되어 있어야합니다. 그러나 Java로 작성된 응용 프로그램 만 실행하려면 JRE가 시스템에 설치되어 있어야합니다.

'Java' 카테고리의 다른 글

자바 - 데이터 타입  (0) 2018.07.23
자바 - 변수  (0) 2018.07.23
자바 - 주석  (0) 2018.07.22
자바 - ClassPath (클래스 패스)  (0) 2018.07.22
Java 프로그래밍 언어란?  (0) 2018.07.22
블로그 이미지

귀염둥이채원

,

Java는 동시, 클래스 기반, 객체 지향적이며 특히 가능한 한 적은 구현 종속성을 갖도록 특별히 설계된 범용 컴퓨터 프로그래밍 언어입니다. 이것은 응용 프로그램 개발자가 "WORA (Write Once, Run Anywhere)" 를 허용하기위한 것이며 , 다시 컴파일 할 필요없이 Java를 지원하는 모든 플랫폼에서 컴파일 된 Java 코드를 실행할 수 있습니다. 예를 들어 UNIX에서 Java 프로그램을 작성 및 컴파일하고 소스 코드를 수정하지 않고 Microsoft Windows, Macintosh 또는 UNIX 시스템에서 실행할 수 있습니다. WORA는 Java 프로그램을 바이트 코드라는 중간 언어로 컴파일함으로써 성취됩니다. 바이트 코드의 형식은 플랫폼에 독립적입니다. Java Virtual Machine (JVM)이라고하는 가상 머신은 각 플랫폼에서 바이트 코드를 실행하는 데 사용됩니다.


Java는 원래 Sun Microsystems (이후 Oracle Corporation에서 인수)에서 James Gosling이 개발했으며 1995 년 Sun Microsystems의 Java 플랫폼의 핵심 구성 요소로 출시되었습니다. 이 언어는 C 및 C ++에서 구문의 많은 부분을 파생하지만 그 중 어느 것보다 낮은 수준의 기능을 가지고 있습니다.


Oracle Corporation은 2010 년 1 월 27 일에 Sun Microsystems를 인수 한 후 Java SE 플랫폼의 공식 구현의 현재 소유자입니다.이 구현은 Java의 Sun 구현을 기반으로합니다. Oracle 구현은 Microsoft Windows, Mac OS X, Linux 및 Solaris에서 사용할 수 있습니다.


Oracle 구현은 두 가지 다른 배포판으로 패키지되어 있습니다. Java 프로그램을 실행하는 데 필요한 Java SE 플랫폼의 일부를 포함하고 최종 사용자를 대상으로하는 JRE (Java Runtime Environment) 및 Java Development Kit (JDK) Java 컴파일러, Javadoc, Jar 및 디버거와 같은 개발 도구가 포함되어 있습니다.


Java는 자동 가비지 콜렉터 를 사용하여 객체 수명주기의 메모리를 관리합니다. 프로그래머는 객체 생성 시점을 결정하고 Java 런타임은 객체가 더 이상 사용되지 않으면 메모리를 복구합니다. 객체체에 대한 참조가 남아 있지 않으면 도달 할 수없는 메모리가 가비지 콜렉터에서 자동으로 해제 될 수 있습니다. 프로그래머 코드가 더 이상 필요하지 않은 객체에 대한 참조를 보유하고 있으면 (일반적으로 더 이상 필요하지 않은 객체가 아직 사용중인 컨테이너에 저장되어있는 경우) 메모리 누수와 비슷한 현상이 계속 발생할 수 있습니다. 존재하지 않는 객체의 메소드가 호출되면 " 널 포인터 예외"던져진다. 가비지 콜렉터는 언제든지 발생할 수 있습니다. 이상적으로는 프로그램이 유휴 상태 일 때 발생합니다. 새 오브젝트를 할당하기 위해 힙에 여유 메모리가 충분하지 않으면 트리거되는 것이 보장됩니다. 이로 인해 프로그램이 일시적으로 정지 될 수 있습니다. Java에서는 명시 적 메모리 관리가 불가능합니다.

전통적인 "Hello, world!"프로그램은 다음과 같이 Java로 작성할 수 있습니다.

public class HelloWorldApplication {

    public static void main(String[] args) {
        System.out.println("Hello World!");   // Prints the string to the console.
    }



소스 파일은 포함 된 공용 클래스의 이름을 따라야하며 접미사를 추가해야 .java합니다 (예 :) HelloWorldApplication.java먼저 Java 컴파일러를 사용하여 바이트 코드로 컴파일해야하며 이름이 지정된 파일을 생성해야합니다 HelloWorldApplication.class그런 다음에 만 실행하거나 '시작'할 수 있습니다. Java 소스 파일에는 공용 클래스가 하나만 포함될 수 있지만 공용 액세스 이외의 여러 클래스와 여러 개의 공용 내부 클래스가 포함될 수 있습니다. 소스 파일에 여러 클래스가 포함되어 있으면 하나의 클래스를 'public'으로 만들고 해당 공용 클래스 이름으로 소스 파일 이름을 지정하십시오.

'Java' 카테고리의 다른 글

자바 - 데이터 타입  (0) 2018.07.23
자바 - 변수  (0) 2018.07.23
자바 - 주석  (0) 2018.07.22
자바 - ClassPath (클래스 패스)  (0) 2018.07.22
자바 - JDK, JRE 및 JVM 간의 차이점  (0) 2018.07.22
블로그 이미지

귀염둥이채원

,