오라클이 공식적으로 정의한 Java 기술 시스템은 주로 다음 부분으로 구성됩니다.
Java 프로그래밍 언어
Java 가상 머신
클래스 파일 형식
Java API 클래스 라이브러리
타사 Java 클래스 라이브러리
Java 프로그래밍 언어, Java Virtual Machine 및 Java API 클래스 라이브러리의 세 부분을 통칭하여 JDK(Java Development Kit)라고 부를 수 있습니다. Java 프로그램 개발을 위한 최소 환경입니다. 또한 Java SE API 하위 집합과 Java API 내의 Java Virtual Machine을 통칭하여 Java 프로그램을 실행하는 표준 환경인 JRE(Java Runtime Environment)라고 합니다.
Java 가상 머신을 "가상"이라고 부르는 이유는 단지 사양에 의해 정의된 추상적인 컴퓨터이기 때문입니다.
많은 학생들은 Java 가상 머신이 단지 가상 컴퓨터일 뿐이라고 생각할 수 있습니다. 가상 머신에 제품군이 있나요? 또는 Java 가상 머신이 Oracle의 HotSpot 가상 머신을 참조한다고 생각해 보십시오. 다음은 Java 가상 머신 제품군에 대한 간략한 소개입니다. 1996년 Sun이 출시한 JDK1.0에 포함된 Sun Classic VM부터 현재까지 많은 유형의 가상 머신이 등장하고 사라졌습니다. 여기서는 비교적 주류인 Java에 대해서만 간략하게 소개하겠습니다. 현재 존재하는 가상 머신.
HotSpot VM
Oracle JDK 및 OpenJDK와 함께 제공되는 가상 머신은 가장 주류이며 널리 사용되는 Java 가상 머신입니다. Java 가상 머신을 소개하는 기술 기사는 별도로 지정하지 않는 한 대부분 HotSpot VM을 소개합니다. HotSpot VM은 Sun이 개발한 것이 아니라 소규모 회사인 Longview Technologies가 설계한 것입니다. 1997년 Sun에 인수되었고, Sun은 2009년 Oracle에 인수되었습니다.
J9 VM
J9 VM은 IBM에서 개발한 VM으로 현재 IBM의 주요 개발 Java 가상 머신입니다. J9 VM의 시장 포지셔닝은 HotSpot VM에 가깝습니다. J9 VM의 현재 성능 수준은 서버부터 데스크톱 애플리케이션까지 모든 것을 염두에 두고 설계된 다목적 가상 머신입니다. VM.
Zing VM
Oracle의 HotSpot VM을 기반으로 대기 시간에 영향을 미치는 많은 세부 사항을 개선합니다. 세 가지 가장 큰 판매 포인트는 다음과 같습니다.
1. 낮은 대기 시간, "일시 중지 없음" C4 GC, GC로 인한 일시 중지를 10ms 미만으로 제어할 수 있으며 지원되는 Java 힙 크기는
2입니다. 시동 후 빠른 예열 기능.
3. 관리성: JVM에 통합된 모니터링 도구인 Zing Vision은 오버헤드가 없고 프로덕션 환경에서 항상 켤 수 있습니다.
Java 프로그램을 실행할 때 실행 프로세스는 무엇입니까? 아래 그림과 같습니다.
위 그림에서 볼 수 있듯이Java 가상 머신은 Java 언어와 필요한 연결이 없습니다. 이는 특정 바이너리 파일인 클래스 파일에만 관련됩니다.
여기에 언급된 아키텍처는 HotSpot VM의 특정 구현이 아닌 Java 가상 머신의 추상 동작을 나타냅니다. 자바 가상 머신 사양에 따르면 추상 자바 가상 머신은 아래 그림과 같다.
JVM = 클래스로더 클래스로더 + 실행 엔진 실행 엔진 + 런타임 데이터 영역 런타임 데이터 영역. classloader는 하드디스크에 있는 클래스 파일을 JVM의 런타임 데이터 영역에 로드하지만, 클래스 파일의 실행 가능 여부는 실행 엔진의 책임에서 책임지지 않습니다.
Java Virtual Machine 추상 사양은 단지 개념일 뿐입니다. 일반적으로 Java Virtual Machine은 이 사양의 특정 구현입니다. 이 구현은 여러 제공업체에서 제공될 수 있으며 여러 플랫폼에 존재할 수 있습니다. 이는 완전히 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 조합으로 구현될 수 있습니다.
런타임 Java 가상 머신 인스턴스의 의무는 Java 프로그램 실행을 담당하는 것입니다. Java 프로그램이 시작되면 가상머신 인스턴스가 생성됩니다. 프로그램을 닫고 종료하면 가상 머신 인스턴스도 종료됩니다. 세 개의 Java 프로그램이 동일한 컴퓨터에서 동시에 실행되면 세 개의 Java 가상 머신 인스턴스가 확보됩니다. 각 Java 프로그램은 자체 Java 가상 머신 인스턴스에서 실행됩니다.
Java 가상 머신 인스턴스는 초기 클래스의 main() 메소드를 호출하여 Java 프로그램을 실행합니다. main() 메서드는 공개적이고 정적이어야 하며 void를 반환하고 문자열 배열을 매개 변수로 허용해야 합니다. 이러한 main() 메소드가 있는 모든 클래스는 Java 프로그램 실행을 위한 시작점으로 사용될 수 있습니다. rreee위의 예에서 Java 프로그램의 초기 클래스에 있는 main() 메소드는 프로그램의 초기 스레드의 시작점으로 사용되며 다른 스레드는 이 초기 스레드에 의해 시작됩니다.
Java Virtual Machine 내부에는 데몬 스레드와 비데몬 스레드라는 두 가지 유형의 스레드가 있습니다. 데몬 스레드는 일반적으로 가비지 수집 작업을 수행하는 스레드와 같이 가상 머신 자체에서 사용됩니다. 그러나 Java 프로그램은 자신이 생성하는 모든 스레드를 데몬 스레드로 표시할 수도 있습니다. Java 프로그램의 초기 스레드(main()에서 시작되는 스레드)는 비데몬 스레드입니다.
데몬이 아닌 스레드가 실행되는 한 Java 프로그램은 계속 실행됩니다. 프로그램의 데몬이 아닌 스레드가 모두 종료되면 가상 머신 인스턴스가 자동으로 종료됩니다. 보안 관리자가 허용하는 경우 Runtime 클래스 또는 System 클래스의 exit() 메서드를 호출하여 프로그램 자체를 종료할 수도 있습니다.
위 내용은 Java 가상 머신의 상세 개요의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!