자바 프로그램의 개발과 구동

2. 자바의 구성 요소

2.1 JDK (Java Development Kit) - 자바 개발 도구

  • 자바 소스 코드를 컴파일하고, 개발에 필요한 도구를 제공합니다.
    • 컴파일러인 javac.exe를 포함하며, 자바 소스를 바이트코드로 변환합니다.

2.2 JRE (Java Runtime Environment) - 자바 실행 환경

  • 자바 프로그램을 실행하기 위한 환경을 제공합니다.
  • 자바 프로그램 실행기인 java.exe를 포함하며, JVM을 실행합니다.
    • 자바 바이트코드를 해당 플랫폼의 기계어로 해석하고 실행합니다.
    • 가상의 컴퓨터 역할을 하며, 실제 하드웨어와 운영체제 위에서 동작합니다.

2.3 JVM (Java Virtual Machine) - 자바 가상 기계

3. 현실 세계와 가상 세계의 비교

  • 현실 세계: 하드웨어 -> 운영체제 -> 소프트웨어 개발 도구
  • 가상 세계 (자바 월드): 가상의 컴퓨터 (JVM) → JVM OS (JRE) → JVM용 소프트웨어 개발 도구 (JDK)

4. 자바 프로그램의 개발과 구동 과정

  1. 자바 소스 작성: Start.java 파일 작성
  1. 컴파일: JDK의 자바 번역기를 통해 자바 파일을 바이트코드로 변환
  1. 실행: JRE를 통해 JVM 상에서 바이트코드 실행
  1. 플랫폼 독립성: 각 플랫폼에 맞는 JVM을 통해 동일한 프로그램을 구동

5. Write Once Run Anywhere

자바의 이러한 구조는 개발자가 특정 플랫폼에 종속되지 않고, 한 번 작성한 프로그램을 다양한 플랫폼에서 실행할 수 있게 해줍니다.

6. 프로그램의 메모리 사용 방식

6.1 코드 실행 영역

  • 프로그램의 명령어가 실행되는 영역입니다.
  • 기계어를 포함한 모든 프로그래밍 언어가 공통으로 사용합니다.

6.2 데이터 저장 영역

  • 프로그램의 데이터를 저장하는 영역입니다.

7. 객체 지향 프로그램의 메모리 사용 방식

객체 지향 프로그램에서는 데이터 저장 영역을 다음 세 개의 영역으로 분할하여 사용합니다.

7.1 스태틱(Static) 영역

  • 클래스 정보와 같은 정적 데이터를 저장합니다.
  • 프로그램 시작부터 종료까지 유지됩니다.

7.2 스택(Stack) 영역 (선입선출)

  • 지역 변수, 매개변수 등의 임시 데이터를 저장합니다.
  • 함수 호출과 함께 생성되고, 함수가 종료되면 사라집니다.

7.3 힙(Heap) 영역

  • 동적으로 할당된 객체를 저장합니다.
  • 가비지 컬렉션에 의해 관리됩니다.
  • 스태틱, 스택, 힙 영역을 포함하는 부분은 T 자 모양으로

T메모리구조라고 지칭하겠습니다.


Uploaded by N2T