JAVA의 기본 - 1. 자바 파일(.java)와 .class 파일과의 관계
밑바닥부터 다시 차근차근 밟아올라가기 위하여
기초부터 다시! 시작해보겠습니다.
오늘의 포스팅은 다음과 같이 크게 3가지의 토픽으로 이루어집니다.
|
1. 자바 파일(.java)과 .class 파일과의 관계 2. 메인 메소드란 무엇인가? 3. 클래스와 오브젝트, 인스턴스의 관계 |
자바 프로그래밍을 하면서 정말 기본적인 것인데
여태까지 별 무리없이 프로그래밍 작업을 하였는데
막상 저 3가지에 대해 설명을 하라고 했을 때, 제 말문은 막혀버렸습니다.
그리하여 하나씩 차근차근 알아보도록 하겠습니다.
1. 자바 파일(.java)과 .class 파일과의 관계
.java 파일과 .class 파일 사이에는 어떤 관계가 있을까요?
두 파일간의 관계를 규명짓자면, 다음과 같은 관계도를 그릴 수 있습니다.
|
.java 파일 --- 컴파일러 --- .class 파일 |
<관계도>
즉, .class파일은 .java파일을 compile하여 생성됩니다.
그럼, .java파일과 .class파일이 각각 무엇인지에 대해 알아볼까요?
.java 파일이란? java 규칙에 맞게 작성한 모든 소스코드 파일을 말합니다.
특징은 for human입니다. 그리하여 사람이 읽을 수 있는 text로 구성되어 있습니다.
.class 파일이란? 컴파일러에 의해 생성된 java bytecode로 구성된 파일입니다.
특징은 for JVM (Java Virtual Machine 자바 가상 머신)입니다. (jvm을 위한 코드)
그리하여 자바를 실행할 수 있는 모든 장치에서 실행이 가능합니다.
자, 그럼 위에서 언급된 컴파일러와 bytecode는 무엇일까요?
컴파일러(compiler)란?
일반적으로, high level language → low level language로 변환해주는 소프트웨어로
프로그래밍 언어로 작성된 프로그램을 기계어로 변환하는 소프트웨어를 말합니다.
자바 컴파일러의 특징은 첫 번째, .java파일에 오류가 있는지 검사합니다.
두 번째, 특정 컴퓨터를 위한 코드를 바로 생성하지 않고
JVM (Java Virtual Machine 자바 가상 머신)을 위한 코드(bytecode)를 생성합니다.
왜 이런 특징을 지닐까?
Java의 최대 장점은 JVM (Java Virtual Machine 자바 가상 머신)을 통해
플랫폼 독립적으로 실행 가능한 환경을 제공하는 것입니다.
그리하여 한 번 작성된 코드로 다양한 환경의 하드웨어 및 OS 어디서든 실행하기 위해 이러한 특징을 지닌 것입니다.
JVM (자바 가상 머신)는 많은 운영체제에서 지원되기 때문에 동일한 바이트 코드 파일로 변경없이 실행될 수 있습니다.
bytecode를 설명하기 앞서, 자주 언급되는 JVM에 대해 알아보겠습니다.
JVM이란? Java Virtual Machine의 약어로
자바의 바이트코드를 해당 컴퓨터의 명령어로 해석해주는 프로그램을 말합니다.
JVM은 바이트코드와 컴퓨터의 운영 시스템간의 번역기 역할을 합니다.
※ JVM은 Main method가 없을 경우, 실행되지 않습니다.
그럼 이제, bytecode란?
자바의 실행 환경에서 실행되기 위해 최적화된 코드의 집합을 말합니다.
결론적으로, Java의 실행과정을 정래해보면 다음과 같습니다.
|
Hello.java ----- Compiler ----- Hello.class ----- JVM ----- Hello (자바 프로그램을 가상기계의 (가상 기계의 명령어 =bytecode를 명령어로 변환) 실제 기계의 명령어로 변환) |