>  기사  >  Java  >  Java 프로그램이 "한 번 컴파일하면 어디서나 실행"되는 이유는 무엇입니까?

Java 프로그램이 "한 번 컴파일하면 어디서나 실행"되는 이유는 무엇입니까?

(*-*)浩
(*-*)浩앞으로
2019-09-16 15:29:184259검색

다른 언어와 비교하여 Java 프로그램은 "한 번 컴파일하면 어디서나 실행할 수 있습니다". 이는 매우 크로스 플랫폼임을 보여줍니다. 그런데 Java의 크로스 플랫폼 특성이란 정확히 무엇입니까? 그 전에 먼저 크로스 플랫폼이라는 것이 무엇을 의미하는지 이해해 봅시다.

Java 프로그램이

C나 C++ 같은 고급 언어는 사람이 읽을 수 있는 언어에 가깝고 영문법에도 가깝습니다. 그러나 컴퓨터는 0과 1의 시퀀스로 구성된 기계 명령어만 인식합니다. 따라서 C나 C++ 언어는 컴퓨터가 인식할 수 있는 0과 1의 시퀀스로 구성된 기계어 명령어로 번역되어야 합니다. 이런 종류의 번역을 담당하는 사람이 "컴파일러"입니다.

문제는 플랫폼마다 인식되는 0과 1의 순서가 다르다는 것입니다. 특정 명령어는 Windows에서는 0101일 수 있지만 Linux에서는 1010일 수 있습니다. 따라서 다른 플랫폼에서 실행 가능한 기계어 코드를 컴파일하려면 호환되지 않는 컴파일러를 사용해야 합니다. 실행하다.

즉, C 또는 C++ 언어로 작성된 프로그램은 "한 번 컴파일하여 어디서나 실행"이라는 크로스 플랫폼 목표를 달성할 수 없습니다.

Java도 고급 언어입니다. 작성한 Java 프로그램을 컴퓨터에서 실행하려면 컴파일러로 컴파일해야 합니다. 그러나 자바 컴파일러는 자바 소스 코드를 컴퓨터 플랫폼에 따라 0과 1의 시퀀스로 직접 컴파일하지 않고 바이트코드로 컴파일한다.

Java 소스 코드의 확장자는 .java입니다. 컴파일러에 의해 컴파일된 후 확장자가 .class인 바이트코드가 생성됩니다. 바이트코드 파일을 실행하려면 대상 플랫폼에 JVM(Java Virtual Machine)이 설치되어 있어야 합니다. JVM은 바이트코드를 플랫폼 종속 컴퓨터 명령어, 즉 0, 1의 시퀀스로 변환합니다.

하지만 기억하세요: 이것이 불가능한 플랫폼의 경우 해당 플랫폼에 맞는 JVM을 설치해야 합니다. 이는 마치 중국어(*.java)를 사용하면 Java 컴파일러가 이를 영어(*.class)로 번역하는 데 도움을 주는 것과 같습니다. 이 영어 파일이 각 국가에 전송된 후 현지 사람들이 해당 언어로 번역합니다. (JVM) 언어(기계 명령)를 이해할 수 있습니다.

그래서 JVM의 책임 중 하나는 로컬 변환기가 되어 바이트코드 파일을 당시 플랫폼이 이해할 수 있는 0과 1의 시퀀스로 변환하는 것입니다. JVM을 사용하면 Java 프로그램이 " 한 번 컴파일하면 어디에서나 실행 가능" 크로스 플랫폼 목적. 자, 여기 갑니다. 우리는 Java 프로그램이 크로스 플랫폼인 근본적인 이유가 Java 가상 머신 JVM이 존재하는 이유라는 것을 알고 있습니다.

JVM에 대한 중요한 이해는 다음과 같습니다.

Java 프로그램의 경우 운영 체제는 하나만 알고 있으며 이 시스템은 JVM이며 바이트코드 파일(.class 확장자를 가진 문서)은 JVM의 기능입니다. .

이상적으로 Java 프로그램은 JVM에서 실행하는 방법을 알고 있는 한 실제로 어떤 플랫폼에서 실행되는지 신경 쓰지 않습니다. JVM이 실제로 기본 플랫폼과 통신하는 방법은 JVM 자체의 문제입니다. JVM은 실제로 Java 프로그램의 운영체제와 동일하므로 JVM은 Java 프로그램의 다양한 자원 관리를 담당합니다.

두 가지 점을 기억해야 합니다.

1. JVM은 Java 프로그램의 운영 체제이고 JVM의 실행 파일은 .class 파일입니다.

2. Java 가상 머신은 운영 체제 간의 차이점을 보호하지만 시스템마다 서로 다른 가상 머신을 사용합니다.

위 내용은 Java 프로그램이 "한 번 컴파일하면 어디서나 실행"되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제