JVM(Java Virtual Machine)이란 무엇입니까? Archi강의 설명!

JVM이란 무엇입니까?

자바 가상 머신(JVM) Java 코드나 애플리케이션을 구동하기 위한 런타임 환경을 제공하는 엔진입니다. Java 바이트 코드를 기계 언어로 변환합니다. JVM은 JRE(Java Runtime Environment)의 일부입니다. 다른 프로그래밍 언어에서는 컴파일러가 특정 시스템에 대한 기계어 코드를 생성합니다. 그러나 Java 컴파일러는 Java Virtual Machine으로 알려진 가상 머신용 코드를 생성합니다.

JVM은 어떻게 작동하나요?

먼저, Java 코드는 바이트코드로 컴파일됩니다. 이 바이트코드는 다른 시스템에서 해석됩니다.

호스트 시스템과 Java 소스 사이에서 바이트코드는 중개 언어입니다.

Java의 JVM은 메모리 공간 할당을 담당합니다.


JVM 작동 방식
JVM(Java Virtual Machine) 작업



이 JVM 튜토리얼에서는 다음과 같은 내용을 배울 수 있습니다.

JVM Archi강의

이제 이 JVM 튜토리얼에서 ArchiJVM의 강의. JVM archiJava의 강의에는 클래스로더, 메모리 영역, 실행 엔진 등이 포함됩니다.


JVM Archi강의
자바 가상 머신 Archi강의


1) 클래스로더
클래스 로더는 클래스 파일을 로드하는 데 사용되는 하위 시스템입니다. 세 가지 주요 기능을 수행합니다. viz. 로드, 연결 및 초기화.

2) 방법 영역
JVM 메소드 영역은 메타데이터, 상수 런타임 풀, 메소드 코드와 같은 클래스 구조를 저장합니다.

3) 힙
모든 사물, 관련 인스턴스 변수 및 배열이 힙에 저장됩니다. 이 메모리는 공통적이며 여러 스레드에서 공유됩니다.

4) JVM 언어 스택
Java 언어 스택은 지역 변수를 저장하며 이는 부분적인 결과입니다. 각 스레드에는 동시에 생성되는 자체 JVM 스택이 있습니다.neo스레드가 생성될 때 유용합니다. 메소드가 호출될 때마다 새로운 프레임이 생성되며, 메소드 호출 프로세스가 완료되면 삭제됩니다.

5) PC 레지스터
PC 레지스터에는 현재 실행 중인 Java Virtual Machine 명령어의 주소가 저장됩니다. Java에서는 각 스레드에 별도의 PC 레지스터가 있습니다.

6) 네이티브 메소드 스택
네이티브 메소드 스택은 네이티브 라이브러리에 따라 네이티브 코드의 명령을 보유합니다. Java가 아닌 다른 언어로 작성되었습니다.

7) 실행 엔진
하드웨어, 소프트웨어 또는 전체 시스템을 테스트하는 데 사용되는 소프트웨어 유형입니다. 테스트 실행 엔진은 테스트된 제품에 대한 어떠한 정보도 전달하지 않습니다.

8) 네이티브 메소드 인터페이스
기본 메소드 인터페이스는 프로그래밍 프레임워크입니다. JVM에서 실행되는 Java 코드가 라이브러리 및 기본 애플리케이션에서 호출될 수 있도록 합니다.

9) 네이티브 메소드 라이브러리
네이티브 라이브러리는 실행 엔진에 필요한 네이티브 라이브러리(C, C++)의 모음입니다.

소프트웨어 코드 컴파일 및 실행 프로세스

소프트웨어 프로그램을 작성하고 실행하려면 다음이 필요합니다.wing

1) 편집자 – 프로그램을 입력하려면 메모장을 사용할 수 있습니다.

2) 컴파일러 – 고급 언어 프로그램을 기본 기계어 코드로 변환하려면

3) 링커 – 기본 프로그램에서 서로 다른 프로그램 파일 참조를 함께 결합합니다.

4) 로더 – 실행을 위해 하드 디스크, 플래시 드라이브, CD와 같은 보조 저장 장치의 파일을 RAM에 로드합니다. 코드를 실행하면 로딩이 자동으로 수행됩니다.

5) 실행 – OS 및 프로세서에서 처리하는 코드의 실제 실행.

이 배경에 대해서는 다음을 참조하십시오.wing 비디오를 통해 JVM 내부 작동 방법을 배우고 archiJVM(Java Virtual Machine)의 강의입니다.

여기를 눌러 더 많은 정보를 찾으세요. 비디오에 접근할 수 없는 경우

C 코드 컴파일 및 실행 프로세스

Java의 Java 컴파일 프로세스를 이해합니다. 먼저 C에서의 컴파일과 링크 과정을 간단히 살펴보겠습니다.

기본적으로 두 개의 함수 f1과 f2를 호출했다고 가정합니다. 주요 기능은 파일 a1.c에 저장됩니다.

C 코드 컴파일 및 실행 프로세스

함수 f1은 a2.c 파일에 저장됩니다.

C 코드 컴파일 및 실행 프로세스

함수 f2은 a3.c 파일에 저장됩니다.

C 코드 컴파일 및 실행 프로세스

이 모든 파일, 즉 a1.c, a2.c 및 a3.c가 컴파일러에 제공됩니다. 출력은 기계 코드인 해당 개체 파일입니다.

C 코드 컴파일 및 실행 프로세스

다음 단계는 링커를 사용하여 이러한 모든 개체 파일을 단일 .exe 파일로 통합하는 것입니다. 링커는 이러한 모든 파일을 하나로 묶고 .exe 파일을 생성합니다.

C 코드 컴파일 및 실행 프로세스

프로그램이 실행되는 동안 로더 프로그램은 a.exe를 로드합니다. 실행을 위해.

C 코드 컴파일 및 실행 프로세스

Java VM에서 Java 코드 컴파일 및 실행

이제 이 JVM 튜토리얼에서는 JAVA 프로세스를 살펴보겠습니다. 기본에는 f1과 f2의 두 가지 방법이 있습니다.

  • 주요 메소드는 a1.java 파일에 저장됩니다.
  • f1은 a2.java로 파일에 저장됩니다.
  • f2은 a3.java로 파일에 저장됩니다.

Java VM에서 Java 코드 컴파일 및 실행

컴파일러는 3개의 파일을 컴파일하고 BYTE 코드로 구성된 XNUMX개의 해당 .class 파일을 생성합니다. C와 달리 링크가 수행되지 않습니다..

Java VM 또는 Java Virtual Machine은 RAM에 상주합니다. 실행 중에 클래스 로더를 사용하여 클래스 파일을 RAM에 가져옵니다. BYTE 코드는 보안 위반 여부를 확인합니다.

Java VM에서 Java 코드 컴파일 및 실행

다음으로 실행 엔진은 바이트코드를 네이티브 기계어 코드로 변환합니다. 이것은 시간에 맞춰 컴파일되는 것입니다. 이는 Java가 상대적으로 느린 주된 이유 중 하나입니다.

Java VM에서 Java 코드 컴파일 및 실행

알림: JIT 또는 Just-in-time 컴파일러는 JVM(Java Virtual Machine)의 일부입니다. 유사한 기능을 가진 바이트 코드의 일부를 동시에 해석합니다.

Java가 해석된 언어이자 컴파일된 언어인 이유는 무엇입니까?

프로그래밍 언어 로 분류된다

  • 고급 언어 Ex. C + +, 자바
  • 중급 언어 Ex. 씨
  • 저수준 언어 Ex 어셈블리
  • 마지막으로 기계 언어로서 가장 낮은 수준입니다.

A 컴파일러 프로그램을 한 수준의 언어에서 다른 수준으로 변환하는 프로그램입니다. C++ 프로그램을 기계어로 변환하는 예.

자바 컴파일러는 고급 자바 코드를 바이트코드(기계어 코드의 일종이기도 함)로 변환합니다.

An 통역사 한 수준의 프로그램을 다른 프로그래밍 언어로 변환하는 프로그램입니다. 같은 수준. Java 프로그램을 C++로 변환하는 예

Java에서는 JIT(Just In Time) 코드 generator 바이트코드를 동일한 프로그래밍 수준에 있는 기본 기계어 코드로 변환합니다.

따라서 Java는 컴파일된 언어이자 해석된 언어입니다.

자바는 왜 느린가요?

Java 속도가 느려지는 두 가지 주요 이유는 다음과 같습니다.

  1. 동적 연결: C와 달리 연결은 프로그램이 Java에서 실행될 때마다 런타임에 수행됩니다.
  2. 런타임 통역사: 바이트 코드를 기본 기계어 코드로 변환하는 작업은 Java에서 런타임에 수행되므로 속도가 더욱 느려집니다.

그러나 최신 버전의 Java에서는 성능 병목 현상이 크게 해결되었습니다.

요약:

  • JVM의 전체 형태는 Java Virtual Machine입니다. Java의 JVM은 Java 코드를 구동하는 엔진입니다. Java 바이트 코드를 기계 언어로 변환합니다.
  • JVM archiJava의 강의에는 클래스로더, 메모리 영역, 실행 엔진 등이 포함됩니다.
  • JVM에서는 Java 코드가 바이트코드로 컴파일됩니다. 이 바이트코드는 다른 시스템에서 해석됩니다.
  • JIT는 Just-in-time 컴파일러를 의미합니다. JIT는 JVM(Java Virtual Machine)의 일부입니다. 실행 시간을 빠르게 하기 위해 사용됩니다.
  • 다른 컴파일러 시스템과 비교하여 Java의 JVM은 실행 속도가 느릴 수 있습니다.