글을 쓰게 된 이유
스프링을 공부하면서 Java 버전을 설정하는 중에 JRE, JDK 를 보게 되었습니다.
그래서 둘의 차이를 알아보고자 공부하면서 알게 된 내용들을 정리해보았습니다.
JDK, JRE
JVM + Library Classes(Core API) = JRE
JRE + Development Tools = JDK
JDK가 무엇인가요?
Java Development Kit의 약자로 java 애플리케이션을 개발하는 데 사용되는 소프트웨어 개발 환경입니다.
JRE, 인터프리터/로더(Java), 컴파일러(javac), archiver(jar), documentation generator(Javadoc)를 포함하고 있습니다.
즉, 자바 프로그램을 개발할 수 있는 환경을 제공하는 "개발 도구"와 자바 프로그램을 실행할 수 있는 "JRE"를 가지고 있습니다.
java와 javac의 차이가 무엇인가요?
javac는 프로그래머가 작성한 자바 코드를 컴파일러가 byte code로 변환시키고,
java는 byte code(.class 파일)를 실행하는 프로그램입니다.
development tool 이 무엇인가요?
컴파일, 패키징, 디버깅 등을 지원하는 tool입니다.
링크를 통해 cli 를 통해 제공된 다양한 tool을 볼 수 있습니다.
Java SE/EE 는 무엇인가요?
Java SE
- Java 명세라고 생각
- Standard Edition의 약자로, 핵심 library와 api를 가지고 있는 Java 플랫폼
- java.lang, java.io, java.util 등
Java EE
- Entierprise Edition 의 약자로, DB 액세스 (JDBC, JPA), 웹 서비스, XML 처리를 위한 라이브러리 및 서블릿 처리를 제공
Java SE에서는 DB 액세스와 관련한 api를 제공하지 않나요?
제공합니다.
String으로 DML 을 작성하여 java.sql 패키지를 사용하여 DB 액세스를 해보았던 경험이 있습니다.
JRE란 무엇인가요?
Java Runtime Environment의 약자로 자바 프로그램을 실행하기 위한 소프트웨어입니다.
JVM, Java Class Library 를 가지고 있으며 ClassLoader, ByteCode Verfier, Interpreter와 같은 역할을 하고 있습니다.
Class Loader
- 동적 적재를 하면서 필요할 때만 메모리에 load
ByteCode Verifier
- interpreter에 전달하기 전에 바이트 코드를 검사
Interpreter
- 바이트 코드를 기계어(CPU가 읽는 code)로 변환시킴
왜 java는 굳이 Runtime Environment로 분리했을까요?
OS에 의존하지 않고, 다양한 OS에서 java 프로그램이 실행될 수 있도록 하기 위함입니다.
REFERENCES
'Java' 카테고리의 다른 글
Generic & Wildcard (0) | 2022.12.29 |
---|---|
Generic in Java (2) | 2022.12.17 |
정적 메서드는 왜 오버라이딩 되지 않을까? (0) | 2022.08.29 |
throw vs throws (0) | 2022.05.17 |
java 연산자 (0) | 2022.05.06 |