archive

Java란 / JVM 본문

STUDY/Java

Java란 / JVM

seonyounggg 2021. 1. 7. 18:12

자바의 특징

1. 객체지향언어이다.

2. 운영체제에 독립적이다.

때문에, 운영체제에 따라 프로그램을 변경하지 않아도 실행이 가능하다.

이는 JVM(Java Virtual Machine) 덕분에 가능한 것인데,

자바 애플리케이션은 운영체제나 하드웨어가 아닌 JVM하고만 통신하고, JVM이 명령을 변환하여 운영체제에 전달한다.

즉, 자바로 작성된 프로그램은 운영체제에 독립적이지만 JVM은 종속적이기 때문에 운영체제에 맞는 JVM을 이용해야 한다.

3. 비교적 배우기 쉽다. 

4. 자동 메모리 관리(Garbage Collection)

자바 애플리케이션이 실행되면, Garbage collector가 자동으로 메모리관리를 해주기 때문에 개발자가 따로 메모리를 체크하고 반환하는 일을 수동으로 처리하지 않아도 된다.

5. 네트워크와 분산처리를 지원한다.

다양한 네트워크 프로그래밍 라이브러리를 통해 비교적 쉽게 개발할 수 있다.

6. 멀티쓰레드(multi-thread)를 지원한다.

시스템과 관계없이 멀티쓰레드 프로그램이 구현가능하며 관련한 라이브러리가 제공된다. 여러 쓰레드에 대한 스케줄링은 자바 인터프리터가 담당한다.

7. 동적로딩(Dynamic Loading)을 지원한다.

실행 시에 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용할 수 있다. 일부 클래스가 변경되어도 전체 애플리케이션을 다시 컴파일하지 않아도 된다.

 

JVM

Java virtual machine을 줄인 것으로, 자바를 실행하기 위한 가상 컴퓨터라고 할 수 있다.

가상 컴퓨터는 실제 HW가 아닌, 소프트웨어로 구현된 컴퓨터라는 뜻이다.

타 애플리케이션의 코드는 OS만 거치고 하드웨어로 전달되는데,

자바는 그 사이에 JVM을 한번 더 거친다.

하드웨어에 맞게 완전히 컴파일된 상태가 아니라 실행 시에 해석되기때문에 속도가 느린 단점이 있다.

 

앞서 언급했듯이, 

자바 애플리케이션은 JVM과만 상호작용을 하기 때문에

다른 운영체제에서 실행할 땐 JVM만 바꾸고 동일한 소스코드를 사용할 수 있다.

 

자바 소스코드는 바이트코드(JVM이 이해할 수 있는 기계어)로 컴파일되고,

JVM은 바이트코드를 OS의 기계어로 변환하여 OS에 전달한다.

 

 

 

Comments