1-1. 자바의 특징과 JVM

Hyun Jun·2022년 1월 22일
0

자바의 정석

목록 보기
1/52
post-thumbnail
post-custom-banner

Java의 특징

1. 운영체제에 독립적

JavaJVM (Java Virtual Machine)이라는 가상 환경에서 돌아가기 때문.
JVMJava 애플리케이션으로부터 전달받은 명령을 기계어로 변환하여 OS나 하드웨어에 명령을 한다.

2. 객체지향적 언어

Java 애플리케이션은 모두 class라는 객체로 이루어져 있다. 상속, 캡슐화, 다형성 등이 적용된 OOP(Object-Oriented-Programming) 특화 언어이다.

3. 자동적 메모리 관리

Java로 작성된 프로그램은 GC(Garbage Collector)가 자동적으로 메모리 관리를 해줌.

4. 네트워크와 분산처리 지원

다양한 Java API를 통해 인터넷과 대규모 분산 환경을 고려한 개발이 가능함.

5. 멀티 쓰레드 지원

멀티 쓰레드는 원래 OS에 따라 구현 방법과 처리 방식이 상이하지만, Java는 OS에 종속적이지 않으므로 시스템과 상관없이 구현 가능. 관련된 Java API가 존재한다. 다수의 쓰레드 스케줄링을 JVM 내의 자바 인터프리터가 담당해준다.

6. 동적 로딩 지원

실행 시 애플리케이션 내 모든 class를 로드 하는 것이 아니라 필요한 시점에 로드 한다. 일부 class를 변경할 때 전체를 다시 컴파일 하지 않아도 된다.

 

JVM (Java Virtual Machine)

정의

그대로 해석해보면 Java를 실행하기 위한 가상 기계(컴퓨터) 라고 할 수 있다.

특징

1. 다른 언어와 달리 Java 코드는 OS로 바로 전달되지 않고 JVM을 거쳐야 한다. 실행 순서는 다음과 같다.

1) 작성한 자바 소스(.java) 파일이 자바 컴파일러(javac)를 통해 바이트코드(byte code)로 컴파일 된다.

2) 컴파일된 바이트코드가 JVM의 Class Loader에게 전달된다.

3) Class Loader는 동적 로딩을 통해 필요한 클래스들을 로딩 및 링크해서 Runtime Data Area (JVM의 메모리)에 올린다.

4) 실행 엔진은 JVM의 메모리에 올라온 바이트 코드를 명령어 단위로 하나씩 가져와서 실행한다.

2. Java로 작성된 모든 애플리케이션은 JVM 위에서만 실행된다. 때문에 Java는 OS로부터 독립적이지만, JVM 자체는 OS에 종속적이다.

profile
Back-end Engineer 👨‍💻
post-custom-banner

0개의 댓글