.java 파일 실행 과정
vi Hello.class
javap -C Hello.class
- 컴파일 과정
.java
(개발자 문법)→ 컴파일러 → .class
(bytecode, 중간 언어, 모든 OS가 이해)
- compiler → translator(변환) + optimization(최적화)
- 에러 없으면 .class(bytecode) 로 변환됨, 컴파일 에러 없다 = 빨간줄은 없다 ≠ 정상 동작
- 런타임 과정 (JVM)
→ class loader 가 클래스로 바뀐 파일 로드
→ bytecode verifier 통해 바이트 코드 정상 확인
→ interpreter (중간 코드 → OS에 맞게 변경) / JIT (최적화) 이용해서 (러닝 도구)
→ OS 에서 실행됨
JDK (Java Development Kit)
컴파일러 (javac
) + JRE
JRE (Java Runtime Environment)
JVM 실행에 필요한 라이브러리 (~/jdk-11.0.16/lib
)
JVM (Java Virtual Machine)
- 런타임
- C, C++ 은 OS에 민감, 자바는 OS 가 직접 실행시키지 않고 가상머신이 실행 시킨 후 실행 결과만 OS에 가져가기 때문에 자바는 어떤 OS든 다 실행시킬 수 있음
- 클래스 로드, GC를 통한 메모리 관리
Java
개발자의 문법
// 아이패드 그림 그려 넣기
참고)
- Oracle JDK 가 유료화 된다 해서 Open JDK 활발히 개발 중
- Oracle JDK 11부터 해당 JDK를 이용하여 상용화 (서비스)할 경우 유료로 사용된다는 것