JVM
- (Java Virtual Machine) runs Java bytecode
- JVM은 자바 프로그램이 실행되는 플랫폼에 독립적인 방식으로 작동하도록 설계된 자바 바이트코드를 실행하는 런타임 환경이다
- 이를 통해 개발자들은 한 번 작성한 코드를 다시 컴파일하거나 수정하지 않고 어떤 하드웨어에서나 운영체제에서도 실행 시킬 수 있다. 이를 WORA(Write Once Run Anywhere)이라고 한다.
- 기능
- 바이트코드 로딩: 자바 컴파일러로부터 생성된 자바 바이트코드를 로드
- 바이트코드 검증: 로드된 바이트코드가 안전한지 검증
- 바이트코드 해석 및 실행: 로드된 바이트코드를 해당 플랫폼의 기계어로 변환하고 실행 이 과정에서 JIT (Just-In-Time) 컴파일러를 활용하여 성능을 향상시킨다.
- 메모리 관리: JVM은 자바 프로그램이 사용하는 메모리를 관리하며, 가비지 컬렉션을 수행하여 더 이상 사용되지 않는 객체를 메모리에서 제거한다.
- 자바 라이브러리 지원: JVM은 자바 표준 라이브러리와 통합되어 다양한 기능을 제공한다.
JRE
- (Java Runtime Enviroment) JVM + Libraries + Other Components
- JVM (Java Virtual Machine)과 필수 라이브러리 및 자바 응용프로그램이 실행될 때 필요한 소프트웨어들을 포함한다.
- JRE는 자바 프로그램을 실행하는 데 필요한 최소한의 환경을 제공하며, 자바 애플리케이션을 개발하는 데 필요한 추가 도구 (컴파일러, 디버거 등)는 포함하지 않는다.
JDK
- (Java Development Kit) JRE + Compliers + Debugger
- JRE과 컴파일러(javac), 디버거, 배포 도구(jar), 자동 문서 생성 도구 등 다양한 개발도구를 포함하는 자바 개발자를 위한 상업용 소프트웨어이다.
- 종류
- Open JDK: 자유롭게 사용, 배포 및 수정이 가능한 GNU 일반 공중 사용 허가서(GPL) v2 라이선스를 가진 JDK
- Oracle JDK: 무료로 사용할 수 있지만 상업적으로 사용하려면 유료 라이선스를 구입해야 하는 라이선스를 가진JDK
'Development > JAVA' 카테고리의 다른 글
Thread, synchronized (0) | 2023.09.11 |
---|---|
문자열의 배열 혹은 리스트를 각 문자열의 길이를 기준으로 정렬 하고자 할 때 (0) | 2023.02.10 |
String.valueOf(50) vs 50+"" vs String.format("%s",50) 중 가장 빠른 것은? (0) | 2023.02.03 |
정수의 이진법의 비트 정보를 바탕으로 특정 문자열 만들기 (0) | 2023.01.26 |
정규식을 활용하여 특정 문자를 제외하고 제거 하기 (+ 중복 문자 제거) (0) | 2023.01.24 |