[2강] JAVA 프로그램의 실행 구조

프로그래밍/자바(JAVA) 2018. 11. 24. 01:44

JAVA 프로그램의 실행 구조



1. 환경변수 설정


설치된 JDK 폴더에 들어가보면 java.exe 파일과 javac.exe 파일이 있다. 소스를 코딩한 후 기계어로 변환 시켜주는 컴파일러가 바로 javac.exe이다. 그리고 그 컴파일된 파일을 실행해 주는 것이 java.exe이다. 이 파일들이 다른 디렉토리에서도 실행할 수 있도록 하기 위해 환경 변수(Path)에 bin 경로를 등록해 준다. 윈도우 시스템 속성에서 환경 변수를 클릭한다. 



환경 변수에서 새로 만들기를 클릭 후 위와 같이 JDK가 설치된 경로를 JAVA_HOME이라는 변수로 추가해준다.



추가로 Path 변수에서 JDK의 bin 디렉토리를 추가해준다.



실제로 설정이 제대로 되었는지 확인하기 위해 CMD명령어로 커맨드 창을 띄운 후 "java -version"이라는 명령어를 수행해 준다. 설치된 자바의 버전이 출력되는 경우 설정이 완료된 것이다.




2. Java 컴파일러와 JVM


JAVA 소스 작성 부터 프로그램 실행까지의 순서를 살펴보자. 이클립스에서 JAVA소스를 코딩하면 확장자는 .java가 된다. 이 소스코드를 자바 컴파일러인 javac.exe가 컴파일을 하게되면 바이트 코드 파일인 .class파일이 생성된다. 이 class 파일을 java.exe라는 JVM이 실행을 하게 되고 LINK라고 하는 과정을 거쳐 실행되게된다. LINK라는 과정을 간략하게 살펴보면 기계어를 번역해 메모리를 로딩하고 실행을 준비/결정/초기화를 수행한다. 개발자는 JAVA소스만 코딩하면 나머지는 이클립스가 알아서 수행해 준다.



3. 가비지 컬렉터(Gabage Collector)


자바는 프로그램 실행에 필요한 메모리를 Gabage Collector가 자동으로 관리한다. 메모리를 이용 후 사용하지 않더라도 한동안 메모리 영역을 차지하고 있게 되는데 가비지 컬렉터라는 내부적으로 수행되는 모듈이 이 메모리를 일정 시간마다 회수해간다. 그렇게 되면 이 메모리는 잉여 메모리로 남겨지게 되는데 이 메모리는 다른곳에서 동적으로 다시 사용되게 된다. 실제로 C언어에서는 이러한 메모리 관리를 개발자가 직접해줘야 되는데 자바는 자동으로 수행된다.