Java

JDBC, JDK, JRE, JVM

yunieyunie 2025. 2. 16. 18:24

1️⃣ JDBC (Java Database Connectivity)

JDBC : 자바 애플리케이션에서 데이터베이스와 연결하고 조작할 수 있도록 도와주는 API

🔔 JDBC의 역할

  • 데이터베이스 연결 : 다양한 데이터베이스(MySQL, Oracle, PostgreSQL 등)와 연결 가능
  • SQL 실행 : 데이터 삽입, 조회, 수정, 삭제 등 SQL 문장을 실행
  • 트랜잭션 처리 : 데이터 무결성을 유지하기 위한 트랜잭션 관리
  • 플랫폼 독립성 제공 : JDBC 드라이버를 통해 다양한 DBMS를 동일한 코드로 제어 가능

💻 동작 원리

  1. JDBC 드라이버 로딩 (Class.forName("com.mysql.cj.jdbc.Driver");)
  2. 데이터베이스 연결 (DriverManager.getConnection(url, user, password);)
  3. SQL 실행을 위한 Statement 객체 생성 (Statement stmt = conn.createStatement();)
  4. SQL 실행 및 결과 처리 (ResultSet rs = stmt.executeQuery("SELECT * FROM users");)
  5. 연결 해제 (conn.close();)

🔹 JDBC 드라이버 유형

  1. JDBC-ODBC 브리지 드라이버 : ODBC 드라이버를 통해 DB 연결 (거의 사용되지 않음)
  2. 네이티브 API 드라이버 : 데이터베이스 공급업체가 제공하는 네이티브 API를 사용
  3. 네트워크 프로토콜 드라이버 : 미들웨어를 통해 DB에 접근
  4. 순수 Java 드라이버 : 가장 많이 사용되는 방식 (ex. MySQL Connector/J)

 

2️⃣ JDK (Java Development Kit)

JDK : Java 애플리케이션을 개발하고 실행하기 위한 필수 개발 도구 모음

💻 구성 요소

  1. JRE (Java Runtime Environment) : Java 프로그램 실행 환경 제공
  2. JVM (Java Virtual Machine) : Java 바이트코드를 실행하는 가상 머신
  3. 컴파일러 (javac) : Java 코드를 바이트코드로 변환
  4. 디버거 (jdb) : Java 프로그램을 디버깅하는 도구
  5. Java 라이브러리 (rt.jar) : 필수 클래스 라이브러리 포함

🔹 JDK 종류

  • Oracle JDK : 상용 버전, 기업용 지원 제공
  • OpenJDK : 오픈 소스 버전, 무료 사용 가능
  • GraalVM : 고성능 실행을 지원하는 JDK

 

3️⃣ JRE (Java Runtime Environment)

JRE는 Java 애플리케이션을 실행하기 위한 환경으로 JDK 없이도 Java 프로그램을 실행할 수 있음

💻 JRE의 구성 요소

  • JVM (Java Virtual Machine) : 바이트코드를 실행하는 핵심 요소
  • Java API 클래스 라이브러리 : Java 프로그램이 실행될 때 필요한 기본 라이브러리 (java.util, java.io 등)

🔹 JDK vs JRE

  JDK JRE
포함 요소 JRE + 개발 도구 JVM + Java 라이브러리
사용 목적 Java 개발 및 실행 Java 실행
포함 파일 javac, jdb, jar 등 java 실행 파일

 

4️⃣ JVM (Java Virtual Machine)

 

JVM : Java 애플리케이션을 실행하기 위한 가상 머신

🔔 JVM의 역할

  1. 바이트코드 실행 : javac로 컴파일된 .class 파일을 실행
  2. 메모리 관리 : 힙(Heap), 스택(Stack), 메서드 영역 관리
  3. 가비지 컬렉션 (GC) : 불필요한 객체를 자동으로 정리하여 메모리 최적화
  4. 바이트코드 검증 : 보안 강화 (ClassLoader, Verifier 동작)

💻 JVM 메모리 구조

  1. 메서드 영역 : 클래스 메타데이터, 정적 변수 저장
  2. 힙 영역 : 객체 저장 공간 (GC의 대상)
  3. 스택 영역 : 메서드 호출 시 생성되는 지역 변수 저장
  4. PC 레지스터 : 현재 실행 중인 명령어의 주소 저장
  5. 네이티브 메서드 스택 : 네이티브 코드 실행을 위한 공간