📘 JDK (Java Development Kit)
- 자바 플랫폼에서 운영되는 소프트웨어 개발에 필요한 것들로 구성된 패키지
- 어떤 OS에서 개발하든 버전만 맞으면 컴파일 후 애플리케이션 실행에 문제가 없음
종류
- Java SE: 표준 에디션, 자바 언어의 핵심 기능 제공
- Java EE: 엔터프라이즈 에디션, 기업용 시스템 개발에 사용
- Java ME: 센서, tv셋탑박스와 같은 임베디드 기기들을 위해 제공
- Java FX: 사용자 인터페이스 제공
Java SE와 Java EE 차이점
출처: https://www.ibm.com/docs/ko/odm/8.9.1?topic=application-java-se-java-ee-applications
📘 JDK와 JRE
JRE
- Java Runtime Environment
- 실행만을 위한 환경, 자바를 실행할 수 있는 환경의 집합
📌 JDK는 JRE를 포함하고 있다
📘 JIT(Just In Time) 컴파일러
정의
- 인터프리트 방식과 정적 컴파일 방식을 혼합하여 사용하는 것
인터프리트
: 실행할 때마다 컴퓨터가 알아들을 수 있는 언어로 변환, 성능 느림
정적 컴파일
: 실행하기 전에 컴퓨터가 알아 들을 수 있는 언어로 변환하는 작업을 미리 실행, 변환 작업 딱 한 번 수행
특징
- 반복적으로 수행되는 코드는 매우 빠른 성능을 보임
- 하지만 처음 시작할 때는 변환 단계를 거쳐야 하므로 성능이 느림
(CPU 성능과 JDK 성능이 개선되어 단점이 많이 보완됨)
📚 HotSpot(JVM)
정의
자바 가상 머신, 작성한 자바 프로그램이 수행되는 프로세스
종류
- HotSpot 클라이언트 컴파일러
: 애플리케이션 시작 시간을 빠르게하고 적은 메모리를 점유하도록 함
- HotSpot 서버 클라이언트
: 코어가 많은 장비에서 애플리케이션을 돌리기 위해 만들어짐
: 애플리케이션 수행 속도에 초점을 맞춤
GC(Garbage Collector)
- JVM 내에서 메모리 관리
- 사용 후 남아 있는 필요없어진 객체들을 회수함
메모리 주기
- Eden 영역 객체 생성 ‣ Eden 영역 꽉 참 ‣ 살아있는 객체만 S0 영역 복사 ‣ S0 영역 꽉 참 ‣ S1 영역으로 이동(이때 Eden 영역에 살아 있는 객체도 함께 이동)
- S0과 S1 둘 중 하나는 비어 있어야 함
📝 jdk, jre, jvm 쉽게 이해하기
출처: https://www.youtube.com/watch?v=f0cAmTYo4tQ