자바

정승현·2024년 10월 24일

💡 자바언어의 특징

  • 운영체제에 독립적
    • 자바가상머신(JVM)을 통하여 운영체제 · 하드웨어에 관계 없이 실행 가능
    • JVM이 운영체제에 종속적이기 때문에 여러 운영체제에 지원 가능한 JVM이 존재
  • 객체지향언어
  • 자동 메모리 관리(Garbage Collection)
    • 자바로 작성된 프로그램이 실행되면 가비지컬렉터(garbage collector)가 자동적으로 메모리 관리
  • 네트워크와 분산처리를 지원
    • 다양한 네트워크 프로그래밍 라이브러리(Java API)를 통해 비교적 짧은 시간에 네트워크 관련 프로그램을 개발할 수 있도록 지원
  • 멀티쓰레드의 지원
    • 일반적으로 멀티쓰레드(multi-thread)의 지원은 사용되는 운영체제에 따라 다르지만 자바에서 개발되는 멀티쓰레드 프로그램은 시스템과 관계없이 구현 가능
    • 여러 쓰레드에 대한 스케줄링을 자바 인터프리터가 담당
  • 동적 로딩(Dynamic Loading) 지원
    • 일반적으로 여러 개의 클래스로 구현되어 있는 애플리케이션을 실행시에 모두 로딩되지 않고 필요 시점에 로딩하여 사용할 수 있음

💡JVM

Java Virtual Machine, 자바를 실행하기 위한 가상 컴퓨터


자바로 작성된 애플리케이션은 모두 JVM에서만 실행되기 때문에,자바 애플리케이션이 실행되기 위해서는 반드시 JVM이 필요하다.

  • 자바 바이트코드를 실행
  • 메모리 관리 (가비지 컬렉션)
  • 플랫폼 독립성 보장
    개발자는 한 번만 프로그램을 작성하면, 모든 운영체제에서 같이 사용할 수 있음

💡자바 프로그램 실행 과정

컴파일 타임 환경

java로 작성된 파일 -> 컴파일러가 컴파일 수행 -> .class 바이트코드 파일 생성

런타임 환경

  1. 클래스 로더가 필요한 클래스 로딩
  2. 자바 인터프리터와 JIT 컴파일러가 바이트코드를 해석하고 실행
    > JIT 컴파일러 : 자주 실행되는 코드를 캐시에 저장 이후 다음에 같은 코드가 실행될 때 인터프리팅 대신 캐시된 기계어를 직접 실행
  3. 런타임 시스템이 전반적인 실행환경 관리
  4. 운영체제와 하드웨어에서 프로그램이 실행
  • 컴파일 방식
    • 소스코드 전체를 한번에 기계어로 변환
    • 실행 전 전체 코드를 검사하므로 실행 준비시간 ↑
    • 실행 후 모두 기계어로 변환되어 있어 속도 ↑
  • 인터프리터 방식
    • 소스코드를 한 줄씩 실시간으로 해석하여 실행
    • 준비시간이 짧으나 속도가 비교적 짧음

Reference

profile
게시글 업로드중..⌛

0개의 댓글