가상 컴퓨터 에 대하 여(1)
자바 소스 파일 을 컴 파일 할 때 컴 파일 러 는 소스 코드 를 컴 파일 하여 jvm 만 아 는 바이트 파일(0101 로 구 성 된 코드)로 컴 파일 합 니 다.이 2 진 코드 는 컴퓨터 라면 모두 실행 할 수 있 습 니 다.이에 대응 하 는 문맥 이 포 함 된 경우 입 니 다.사실 가상 컴퓨터 라 는 것 에 대해 잘 모 르 겠 습 니 다.cpu 와 레지스터 에서 명령 을 수행 하 는데 가상 설 은 무엇 입 니까?어떻게 가상 합 니까?그리고 서로 다른 플랫폼 에 대해 왜 플랫폼 차이 가 있어 야 하 는 지,차이 가 어디 에 있 는 지,똑 같은 논 리 를 집행 하고 심지어 똑 같은 코드 를 서로 다른 플랫폼 에서 집행 할 때 차이 가 있 는 지?
간단 한 자바 코드 목록 을 보 여 줍 니 다:Public class Jvm{
static{
System.out.println("this is a test");
}
}
다음은 바이트 정보 입 니 다.
public class Jvm extends java.lang.Object{
public Jvm();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
static {};
Code:
0: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
3: ldc #3; //String this is a test
5: invokevirtual #4; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
8: return
}
사실 이런 어 셈 블 리 바이트 코드 는 실제 코드 는 2 진 코드 입 니 다.이런 코드+문맥 정 보 는 jvm 만 알 고 있 습 니 다.모든 명령 에 대응 하 는 2 진 코드 는 aload 와 같 습 니 다.0.위치 가 0 인 대상 을 부분 변 수 를 참조 하여 스 택 에 눌 러 넣 습 니 다.cpu 에서 10011...................................................................................
가상 머 신 을 어떻게 실현 하 는 지 에 대해 저 는 자바 가상 머 신 을 깊이 이해 하 는 것 을 보 았 습 니 다.구체 적 으로 말 하면 좋 지만 저 는 C(조금 밖 에 모 르 기 때문에 jvm 규범 이 실현 되 기 어렵 습 니 다.어쨌든 마지막 으로 간단하게 말 하면 자바 의 크로스 플랫폼 은 같은 2 진 코드 를 통 해 서로 다른 플랫폼 에서 서로 다른 집행 체 제 를 통 해 이 루어 진 기능 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.