본문 바로가기

Java

[Java] 01.01 - 자바 프로그램과 실행의 원리에 대한 이해

들어가며

 어찌저지 대학교 1학년의 1학기를
마치게 되었다.

 성적도 매우 만족스럽게 나왔다.

 2학기 과목 중 Java를 이용한 객체
지향 프로그래밍 과목이 있어,

 미리미리 준비하고 학점에 대비할
생각이다.

 근데 나 기획 지망인데? 어······?

 

자바 프로그램의 실행 구조

 일반적인 프로그램은 윈도우 또는
리눅스와 같은

 운영체제 위에서 실행이 된다.

 즉, 다음의 구조로 실행된다는 의미다.

그림 1 - 일반적인 프로그램 실행 구조

 위 그림에서 보여주듯이,

 하드웨어를 기반으로 운영체제가
동작하고,

 그 위에서 프로그램이 실행되는
구조다.

 다시 말하자면, 하드웨어 위에서
실행되는 운영체제가

 프로그램을 실행시키는 구조다.

 그러나 자바 프로그램은 다음의
구조로 실행이 된다.

그림 2 - 자바 프로그램의 실행 구조

 이렇듯 운영체제는 자바 가상 머신을
먼저 실행시키고,

 자바 가상 머신이 자바 프로그램을
실행시키는 구조로 자바는 동작한다.

 그렇다면 자바 가상 머신은 무엇인가?

 

자바 가상 머신

 자바 가상 머신도 운영체제 위에서
동작하는 일종의 소프트웨어다.

 따라서 운영체제 입장에서는 흔히
사용하는 문서 작성 프로그램이나,

 자바 가상 머신이나 둘 다 소프트웨어일
뿐이다.

 그럼, 왜 자바 프로그램은 운영체제가
직접 실행시키는 구조가 아닌,

 자바 가상 머신에 의해 실행되는
구조로 설계한 것인가.

 이는 자바 프로그램을 운영체제에
상관없이 실행시키기 위함이다.

 프로그램은 본래 운영체제에 따라
구현방법이 달라진다.

 따라서 동일한 기능의 프로그램이라
할지라도

 윈도우 혹은 리눅스에서 동작을
시키려면,

 두 개의 프로그램을 작성해야만 한다.

 하지만 자바 프로그램은 다음의
그림에서 보여주듯이

 코드 수정 없이 다양한 운영체제에서
실행시킬 수 있다.

그림 3 - 운영체제로부터 자유로운 자바

 위 그림에서 보여주듯이,

 운영체제 별로 존재하는 차이점을

 가상머신이 중간에서 해결하기
때문에,

 자바 프로그램은 운영체제에 상관없이
실행된다.

 자바 가상 머신의 역할을 요약하자면
다음과 같다.

그림 4 - 대충 자바 가상 머신

 그런데 차이점을 처리해 주는
대상이 다르다.

 다시 말해서,

 윈도우에서 자바 프로그램을 실행시키는
가상머신과

 리눅스에서 자바 프로그램을 실행시키는
가상머신이 다르다.

 때문에, 운영체제에 따른 적절한
가상머신의 설치는 불가피하다.

 

 자바 컴파일러 & 자바 바이트코드

 자바 컴파일러의 역할은,

 자바 가상 머신이 이해할 수 있는
코드를 생성해 내는 것이다.

 ~.java 파일을 가리켜 '소스파일'
이라고 하며,

 소스파일에 저장된 프로그램 코드를
가리켜 '소스코드'라고 한다.

 따라서 자바 컴파일러는 소스파일에
저장된 소스코드를

 자바 가상 머신이 이해할 수 있는,

 '자바 바이트코드'로 변환하는
프로그램으로 정리할 수 있다.

자바 바이트코드(Java Bytecode)

 자바 컴파일러에 의해서 생성되는
코드를 가리켜

 '자바 바이트코드'라고 하는데,

 이는 컴파일러에 의해서 생성되는
명령어의 크기가

 기본적으로 1바이트이기 때문에
붙여진 이름이다.

 물론 바이트코드는 확장자가
class인 '클래스 파일'에 담긴다.


 javac.exe는 '자바 컴파일러'이며,
java.exe는 '자바 런처'라고 한다.

 이는 자바 가상 머신을 구동하고,

 그 위에 자바 프로그램이 실행되도록
돕는 프로그램이다.


참고 및 출처

윤성우의 열혈 Java 프로그래밍
국내도서
저자 : 윤성우
출판 : 오렌지미디어 2017.07.05
상세보기