web developer

[java] .java .class 파일의 차이, compile을 하는 이유 본문

Language/Java

[java] .java .class 파일의 차이, compile을 하는 이유

trueman 2022. 1. 18. 17:08
728x90
728x90

.java .class 파일의 차이와 compile하는 이유에 대해서 알아보겠습니다.
아래의 그림은 .java파일이 우리가 보고 있는 화면까지의 과정에 대하여 간단하게 나타내고 있습니다.

* 자바 프로그램을 가상기계의  (가상 기계의 명령어 =bytecode를 명령어로 변환) 실제 기계의 명령어로 변환

* 이미지 출처 : https://docs.oracle.com/javase/tutorial/getStarted/intro/definition.html 

 

.java 파일
확장자가 'java'인 파일은 사람이 만든 source code 파일이다. (for human)

.class 파일
확장자가 'class'인 파일은 source code 인 java파일을 자바 컴파일러를 통해 byte code(target code)로 변환한 byte code 파일이다. java를 실행할 수 있는 모든 장치에서 실행이 가능하다. (for Java Virtual Machine)

컴파일러(compiler)
일반적으로, high level language → low level language로 변환해주는 소프트웨어로 프로그래밍 언어로 작성된 프로그램을 기계어로 변환하는 소프트웨어를 말합니다.

자바 컴파일러(compiler)의 특징은 1) java파일에 오류가 있는지 검사합니다. 2) 특정 컴퓨터를 위한 코드를 바로 생성하지 않고 JVM (Java Virtual Machine 자바 가상 머신)을 위한 코드(bytecode)를 생성합니다.


왜? 검사를 하고, 코드(bytecode)를 생성할까요?
Java의 최대 장점은 JVM (Java Virtual Machine 자바 가상 머신)을 통해 
플랫폼 독립적으로 실행 가능한 환경을 제공하는 것입니다. 그리하여 한 번 작성된 코드로 다양한 환경의 하드웨어 및 OS 어디서든 실행하기 위해 이러한 특징을 지닌 것입니다. JVM (자바 가상 머신)는 많은 운영체제에서 지원되기 때문에 동일한 바이트 코드 파일로 변경없이 실행될 수 있습니다.

이미지 출처 : https://docs.oracle.com/javase/tutorial/getStarted/intro/definition.html 


* JVM (Java Virtual Machine)

자바의 바이트코드를 해당 컴퓨터의 명령어로 해석해주는 프로그램을 말합니다. JVM은 바이트코드와 컴퓨터의 운영 시스템간의 번역기 역할을 합니다.

※ JVM은 Main method가 없을 경우, 실행되지 않습니다.

 

* bytecode

자바의 실행 환경에서 실행되기 위해 최적화된 코드의 집합을 말합니다.

 

출처 :  https://velog.io/@maigumi/1.-JVM%EA%B3%BC-%EC%9E%90%EB%B0%94-%EC%BD%94%EB%93%9C%EC%9D%98-%EC%8B%A4%ED%96%89-%EB%B0%A9%EB%B2%95 

출처 : https://blog.wanzargen.me/10

728x90
728x90
Comments