티스토리 뷰
자바 관련 용어
1. JVM - Java Virtual Machine (자바 가상 머신)
- 자바 소스코드로부터 만들어지는 자바 바이너리 파일(.class)를 실행한다
- JVM은 플랫폼에 의존적이다 (리눅스의 JWM / 윈도우즈의 JVM은 다름)
2. JRE - Java Runtime Environment (자바 실행 환경)
- JVM 이 자바 프로그램을 동작시킬 때 필요한 라이브러리 파일들과 기타 파일들을 가지고 있다
- 즉 JRE는 JVM의 실행환경을 구현했다고 할 수 있다
3. JDK - Java Development Kit (자바 개발 도구)
- 개발자만을 위한 컴파일러(Javac) 디버깅 툴을 제공
- JRE + 개발을 위해 필요한 도구(javac, java)들을 포함
자바의 특징
- 운영체제에 독립적이다 - JVM 사용
- 객체지향언어이다 - 상속, 캡슐화, 다형성이 잘 적용된 순수한 객체지향언어
- 자동 메모리 관리가 가능하다 - 가비지컬렉터
- 네트워크와 분산처리를 지원한다 - 관련 자바 라이브러리 제공
- 멀티쓰레드를 지원한다 - 관련 라이브러리 제공, 스케줄링은 자바 인터프리터가 담당
- 동적 로딩이 가능하다 - 필요한 시점에 클래스를 로딩
동적 로딩의 장점과 단점
- 일부 클래스가 변경되어도 전체 어플리케이션을 다시 컴파일 하지 않아도 된다
- 변경사항이 발생해도 비교적 적은 작업만으로도 처리할수 있는 유연한 어플리케이션을 작성할 수 있다
- 객체지향 개념이 적용될 수 있게 해준다
- 실행 시 연결된 부분에 대한 판단을 해야하므로 속도 측면에서는 불리하다
동적 로딩의 종류
- 로드 타임 동적 로딩: 하나의 클래스를 로딩하는 과정에서 필요한 다른 클래스를 동적으로 로딩하는 것
- 런타임 동적 로딩: 코드를 실행하는 순간에 필요한 클래스를 로딩하는 것
자바 프로그램 실행 과정
- 프로그램 실행
- JVM이 OS로 부터 메모리를 할당 받고, 용도에 따라 나누어 관리
- 자바 컴파일러(javac)가 소스 코드(*.java)를 읽어 바이트 코드로 변환(*.class)
- JVM의 Class Loader가 변환된 파일(*.class)들을 필요 시점에 로드
- Execution engine(실행 엔진) 은 로딩된 class 파일을 해석
- 해석된 파일들은 Runtime Data Area(할당 메모리)에 배치되고 실질적 수행이 이루어짐
'Java' 카테고리의 다른 글
[Java] - super(), this() (0) | 2020.10.10 |
---|---|
[Java] - 배열(Array)과 리스트(List) 에 대하여 (0) | 2020.09.03 |
[Java] - War, Jar의 차이 (0) | 2020.08.23 |
[Java 8] - Stream Api (0) | 2020.08.08 |
[Java 8] - 람다식(Rambda)의 개념과 예제 (0) | 2020.08.06 |