Skip to content

Latest commit

 

History

History
76 lines (53 loc) · 3.75 KB

File metadata and controls

76 lines (53 loc) · 3.75 KB

자바 프로그래밍 특징

  1. JVM 사용하여 OS에 독립적이다.
  2. 객체 지향 언어이다.
  3. GC를 사용하여 메모리를 자동으로 관리해준다.
  4. 웹/모바일 프로그래밍이 쉽다.

1. JVM 사용하여 플랫폼 독립적이다.

  • 어떤 OS로 접근해도 JAVA를 사용하려면 JVM를 통해서 동작하기 때문에 (즉, OS위에 JRE/JDK를 다운 받아서 동작시킴) OS에 독립적이게 코딩할 수 있다.
  • c/c++등 자바 이전의 프로그래밍 언어들의 컴파일러는 기계어 코드로 변환할 때 프로그램이 실행될 대상 컴퓨터의 cpu와 운영체제에 종속적인 코드로 변환하는 과정을 거친다.

image

JVM이란

  • 자바 가상 머신 Java Virtual Machine
  • 가상 컴퓨터를 시뮬레이션하는 소프트웨어이다.
  • JVM은 다른 프로그램을 실행시키는 것이 목적인 프로그램으로,
  • 하드웨어, 운영체제에 관계 없이 JVM만 설치되어 있으면 동일한 자바 프로그램을 동작시킬 수 있다.
  • 역할
    • 어떤 운영체제에서도 실행될 수 있게끔 한다. -> Write Once Run Anywhere
    • 프로그램 메모리를 관리하고 최적화한다. -> Garbage Collection

JRE이란

  • 자바 실행 환경 Java Runtime Environment (개발자가 아닌 일반인을 위한 자바 실행 환경)
  • ⇒ 자바 클래스 라이브러리(Java class libraries) + 자바 가상 머신(JVM)
  • 자바 애플리케이션을 실행하기 위한 것
  • 개발 관련 도구(javac 등)을 포함하지 않음

JDK이란

  • 자바 개발 도구 Java Development Kit
  • JDK는 JRE에 추가로 자바 프로그램을 개발하는 데 필요한 컴파일러, 디버거와 같은 명령어행 개발 도구를 추가한 것이다.

자바 동작 원리

  • image

  • 동작 원리

    1. 자바 소스(.java)를 자바 컴파일러를 통해 자바 바이트 코드(.class)로 컴파일한다.
    2. 컴파일된 바이트코드를 JVM의 클래스 로더에게 전달한다.
    3. JVM의 클래스 로더는 동적 로딩(Dynamic Loading)을 통해 필요한 클래스들을 로딩 및 링크하여 런타임 데이터 영역(Runtime Data area), 즉 JVM의 메모리에 올린다.
    4. 실행 엔진(Execution Engine)은 JVM 메모리에 올라온 바이트 코드들을 명령어 단위로 하나씩 가져와서 실행합니다.

2. 객체 지향 프로그래밍(OOP) 언어이다.

  • Object oriented programming(OOP)
  • 객체간의 관계를 기반으로 프로그래밍하는 언어
  • 장점
    • 재사용성
    • 유지보수
    • 코드관리

3. GC를 사용하여 메모리를 자동으로 관리해준다.

GC란

  • 가비지 컬렉션 Garbeage Collection
  • 자바의 메모리 관리 방법으로,
  • JVM의 Heap 영역에서 동적으로 할당했던 메모리 영역 중 필요 없게 된 메모리 영역을 주기적으로 삭제하는 프로세스이다.
  • C 나 C++에서는 이러한 가비지 컬렉션이 없어 프로그래머가 수동으로 메모리 할당과 해제해주어야 함.
  • 장점
    • 개발자가 직접 메모리 해제하지 않아도 되어 개발에만 집중할 수 있음
  • 단점
    • 개발자가 메모리가 언제 해제되는지 정확하게 알 수 없다.
    • GC 동작하는 중에는 다른 동작을 멈추기 때문에 오버헤드가 발생한다.

4. 웹/모바일 프로그래밍이 쉬움

안드로이드는 자바 기반으로 되어 있다. 모바일에 최적화된 프레임워크를 제공하고 있음