[Java] Java의 특징과 JVM

김우경·2021년 5월 19일
0
post-thumbnail

Java란?

썬 마이크로 시스템즈에서 개발한 객체 지향 프로그래밍 언어

Java의 특징

운영체제에 독립적

운영체제, 하드웨어에 관계 없이 실행이 가능하다.
-> 자바 응용프로그램이 OS나 HW가 아닌 JVM과의 통신을 통해 동작하기 때문에

객체지향언어

상속, 캡슐화, 다형성이 잘 적용된 순수 객체지향 언어

비교적 배우기 쉬움

기본 구문은 C++에서, 객체 지향 관련은 small talk에서
-> 간결하면서 명료한 객체지향적 설계가 가능하다

자동 메모리 관리

: Garbage Collection
자바 프로그램이 실행되면 가비지 컬렉터가 자동적으로 메모리가 관리되어 프로그래머가 메모리 관리할 필요가 없다

네트워크와 분산 처리 지원

다양한 네트워크 프로그래밍 라이브러리를 지원

멀티 쓰레드를 지원함

일반적으로 멀티쓰레드의 지원은 OS에 종속적
-> 자바의 멀티쓰레드는 시스템과 독립적임
-> 관련 라이브러리 제공, 쓰레드에 대한 스케줄링을 자바 인터프리터가 담당

동적 로딩을 지원

팔요헌 시점에 클래스를 로딩해서 사용할 수 있음
-> 일부 클래스의 변경시에도 전체 어플리케이션을 다시 컴파일할 필요가 없음

자바 가상 머신(JVM)

가상머신이란?

프로그램을 실행하기 위한 하드웨어를 소프트웨어로 구현

JVM이란?

  • 자바 코드를 OS에 맞게 해석해서 OS에 전달해주는 역할
    -> OS에 독립적인 자바의 특징을 지원
  • 메모리 관리와 Garbage Collection의 역할을 수행한다.
  • 자바 프로그램은 JVM에 종속적이므로 OS에 맞는 JVM이 필요하다.

실행 과정

  1. 프로그램 실행시, JVM은 운영체제로부터 이 프로그램에 필요한 메모리를 할당받는다.
  2. javac가 source code(.java) -> byte code(.class)로 변환한다.
  3. Class Loader를 이용해서 클래스 파일들을 JVM으로 로딩한다.
  4. 로딩된 클래스 파일은 Execution Engine을 통해 해석(Interpret)된다.
    : byte code(.class) -> binary code
  5. 해석된 binary code는 Runtime Data Area에 배치되어 수행된다.

출처

https://javatutorial.net/jvm-explained
https://asfirstalways.tistory.com/158

profile
Hongik CE

0개의 댓글