
JAVA_HOME
- Java가 설치된 디렉토리라고 생각
- Path에는 /bin/이 있어야한다. 이는 자바 개발, 실행에 필요한 도구와 유틸리티 명령이다.
- javac
- Compile 해준다. 개발자가 만든 언어를 기계가 이해할 수 있는 언어로 바꿔준다.
- 자바 컴파일러로 자바 소스를 바이트 코드로 컴파일
- java
- 자바 인터프리터. 컴파일러가 생성한 바이트코드를 해석하고 실행한다.
- javadoc
- 자바 소스로부터 HTML형식의 API Document 생성
- jlink
- 응용 프로그램에 맞춘 맞춤형 JRE 생성
- jab
- 자바 응용프로그램의 실행 중 오류를 찾는데 사용하는 디버거
- javap
- 역어셈블러. 컴파일된 클래스 파일을 원래의 소스로 변환한다.
- javac
- /lib/
- 실행 시간에 필요한 라이브러리 클래스들
- Class Loader에 의해 로드 된다.
- .java -> compile -> .class -> JVM Class Loader에 의해 로드 -> 런타임 중 동적으로 저장된 클래스를 JVM위에 탑재(사용하지 않는 클래스를 메모리에서 삭제) -> Excution Engine이 해석해 바이너리코드(기계어) 로 변환
JDK (Java Development Kit)
- 개발을 하려고 설치하는 사항
- 개발 도구 같은것들을 포함한다.
- JDK는 JVM과 Java Class Library, JRE 및 개발하는데 필요한 development tools도 포함하고 있다.
JRE (Java Runtime Enviroment)
- 자바가 구동될때 라이브러리들에 의해 구동되는 환경
- JDK에 포함되어 있기 때문에 JDK를 설치하면 함께 설치된다.
- 자바 프로그램을 동작시킬 때 필요한 라이브러리 API를 함께 묶어 배포되는 패키지 그외 런타임 환경에서 사용하는 프로퍼티 세팅이나 리소스파일 (jar파일) 을 가지고 있다.
JVM (Java Virtual Machine)
- Java가 실행될 수 있게끔 기반이 깔림
- 자바는 이 환경 위에서 실행된다.
- Java는 OS가 아닌 JVM에 종속적이다. 즉, OS에 맞는 JVM이 설치되어 있다면, 어느 OS든 어느 기기든 실행될 수 있다.
- 실제 자바가 구동되는 곳
- 자바 프로그램을 모든 플랫폼에서 제약없이 동작이 가능하게 끔 해준다.
- OS마다 다른 JVM 제공
정리
- Java Compiler가 Java로 작성된 코드 .java파일을 .class파일인 Byte Code로 컴파일한다. (JVM이 이해할 수 있는 코드)
- Byte Code를 기계어로 변환시키기 위해 가상 CPU가 필요한데, 이게 JVM의 역할
- JVM이 Byte Code를 Binary Code로 변환한다.
- JVM에 의해 컴파일된 기계어는 바로 CPU에서 실행되어 사용자에게 서비스 제공