자바생
article thumbnail
Published 2022. 9. 15. 13:15
JDK ? JRE ? Java
728x90

글을 쓰게 된 이유

스프링을 공부하면서 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

JDK

JRE

JRE(GFG)

java SE/EE/ME(stackoverflow)

java SE/EE/ME(reference oracle)

java EE(reference oracle)

java EE 7 api

DB access in java SE/EE

class loader is in jvm or jre?

728x90

'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
profile

자바생

@자바생

틀린 부분이 있다면 댓글 부탁드립니다~😀

검색 태그