[자바스터디] 2. 자바기초(1)

2021-java-study

2021 자바 스터디 2주차 과제

자바 기초

JVM이란?

Java Virtual Machine(자바 가상 기계)의 약자를 따서 줄여 쓰는 용어
  • 자바 바이트 코드를 실행하는 주체
  • Java와 OS사이에서 중개자 역할을 수행
  • OS에 맞게 구현됨
  • 메모리 관리, Garbage Collection 수행
  • 스택 기반의 가상머신

컴파일 하는 방법

사람이 이해하는 언어를 기계어로 바꾸는 과정
자바 소스코드(.java)를 자바 바이트코드(.class)로 변경 

| javac 명령어 사용

| 디렉토리 확인

실행하는 방법

$ java  파일명

바이트코드란 무엇인가

가상 컴퓨터에서 작동하도록 만든 이진코드
  • 명령어 크기가 1바이트
  • 확장자는 .class
  • 자바 가상 머신만 설치되어 있으면 어떤 운영체제에서도 실행 가능

JIT 컴파일러란 무엇이며 어떻게 동작하는가

Just-In_Time 의 약자로 프로그램을 실제 실행하는 시점에 기계어로 번역
  • JIT 컴파일러는 JRE안에 존재
  • 프로그램이 시작되고 코드를 컴파일 후에 JIT 컴파일러를 실행

JIT 컴파일러와 인터프리터

  • 인터프리터 방식은 명령어를 하나씩 해석해 처리하기 때문에 전체 코드를 실행할 때는 실행 속도가 느리다. JIT 컴파일러는 클래스파일을 기계어로 한번에 컴파일 후 사용하기 때문에 코드 수행속도가 인터프리터 방식에 비해 빠르다
  • 그렇지만 처음 실행 단계에서는 컴파일 과정때문에 초기 실행 속도가 느릴 수 있다.

JVM 구성 요소

1. Class Loader (클래스로더)
2. Execution Engine (실행 엔진)
3. Garbage Collector
4. Runtime Data Area 

Class Loader

  • 자바 컴파일러에 의해 바이트 코드로 변환된 클래스를 읽어들여 메모리에 저장

Execution Engine

  • Class Loader에 의해 저장된 클래스를 기계어로 변환하고 실행하는 역할
  • Interpreter 방식으로 실행되기도 하고, JIT에 의해 실행되기도 함

Garbage Collector

  • Heap 영역에 생성되어 있는 객체들 중 참조되지 않는 객체를 찾아 제거하는 역할

Runtime Data Area

  • JVM의 메모리 영역으로 자바 애플리케이션 실행시 사용되는 데이터를 저장하는 영역

JDK와 JRE의 차이

JDK

Java Development Kit - JRE와 개발툴
  • 자바 개발 도구
  • JRE와 개발을 위해 필요한 도구(javac,java)를 포함
  • 오라클 JDK, OpenJDK 등이 있으나 일반적으로 오라클 JDK 사용

JRE

Java Runtime Environment - JVM과 라이브러리
  • 자바의 실행 환경
  • JVM이 자바 프로그램을 동작시 필요한 라이브러리 파일 등을 가짐
  • 런타임 환경 제공
  • JVM을 구현하는 역할

좋은 웹페이지 즐겨찾기