1) 바이트 코드파일
CPU가 이해할 수 있는 언어가 바이너리 코드라면 가상머신(자바에선 JVM)이 읽는 언어를 바이트 코드파일이라한다.
자바 소프파일을 컴파일러 (javac)에 의해 바이트 코드파일(.class)을 만든다.
2) JVM
JVM은 바이트 코드 파일을 CPU가 읽을 수 있는 완전한 기계어인 바이너리 파일로 만들어준다. 그리고 CPU로 명령을 한줄 씩 로드해 명령을 실행시킨다.
※ 자바가 한번 작성되면 CPU나 운영체제 상관없이 어디서나 실행할 수 있는 이유는?
개발자에 의해 만들어진 .java소스 파일은 컴파일러 .javac로 .class의 바이트 코드파일을 만든다.
이 바이트 코드파일은 JVM이 해석을 하게 된다.
JVM은 바이트 코드를 한줄 씩 읽어서 해석한 후 실행하게 된다.
JVM은 운영체제에 맞게 할당이 되어있다. 맥의 JVM은 맥에서 동작하도록 윈도우의 JVM은 윈도우에서 동작하도록 구성되어있다.
동일한 바이크 코드파일이라도 운영체제에 맞게 JVM이 할당되어있기 때문에 JVM으로 기계어로 번역한다. 따라서 어떤 한번 작성된 파일은 어디에서나 실행이 가능하다.
3) JDK와 JRE
JDK
JRE를 포함한다. 개발하는데 필요한 컴파일러, 디버거 와 같은 도구들이 추가된다.
개발자들을 위한 환경이다.
JDK 디렉토리 분석
- JDK는 컴퓨터 안에 몇 개의 폴더를 생성한다.
- JDK기본 설치 폴더는 c:\ProgramFile\Java이다. 이 안에 JDK, JRE폴더가 있다.
- bin 폴더 : 컴파일러, 디버거 등의 도구
- include : 네이티브 코드 프로그램을 지원하는 헤더 파일이다.
- lib : 개발 도구들이 필요로 하는 추가적인 클래스 라이브러리와 지원파일이다.
- JDK가 설치된 폴더를 외부 프로그램에 알려줄 때 JAVA_HOME 환경 변수를 사용한다.
JRE
자바 프로그램을 실행하기 위한 라이브러리, JVM 기타 컴포넌트들을 제공한다.
실행만하고 개발하지 않는 일반인들을 위한 환경이다.
'Java' 카테고리의 다른 글
5. 클래스 정리2 : final, 접근 제한자, (0) | 2022.01.20 |
---|---|
4. 클래스 정리 1 : JVM 메모리 사용 영역, class 맴버 정리(Instance, static 맴버), overloading (0) | 2022.01.20 |
3. 배열을 활용한 문제 만들기 (0) | 2022.01.17 |
3. 1,2 차원 배열 선언 문법 (0) | 2022.01.17 |
2. 자바 명령어 도구(javac, java) (0) | 2022.01.17 |