본문 바로가기

gyub's 공부일기/Java

[ JAVA ] Java의 특징 및 JVM, JDK, JRE

1. Java의 특징

1) JVM만 설치하면 컴퓨터의 운영체제에 상관없이 동작한다.

 

2) 가비지컬렉터(GC)가 메모리 관리를 해준다.

 

3) 객체지향 프로그래밍 언어이다,

* 객체지향 프로그래밍이란?

- 객체를 만들기 위한 설계도인 클래스를 작성하고

- 객체와 객체를 연결하여 목적에 맞는 프로그램을 만들어낸다.

- Java는 객체지향 언어가 가져야 할 캡슐화, 상속, 다형성 기능을 완벽하게 지원한다.

 

4) 멀티스레드를 쉽게 구현할 수 있다.

- 자바는 스레드 생성 및 제어와 관련된 라이브러리 API를 제공하고 있습니다.

 

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

- 애플리케이션이 실행 될 때 모든 객체가 생성되지 않고, 각 객체가 필요한 시점에 클래스를 동적 로딩해서 생성한다.

- 또한, 유지보수 시 해당 클래스만 수정하면 되기 때문에 전체 애플리케이션을 다시 컴파일 할 필요가 없다.

=> 따라서 유지보수가 쉽고 빠릅니다.

- C언어와 다르게 코드 블록이 이곳 저곳에 위치해 있어도 된다.

- 다형성과 같은 객체지향 개념이 적용될 수 있게 해준다.

- 실행 시 연결된 부분에 대한 판단을 해야 하므로 속도는 비교적 느리다.

 

6) 오픈소스 라이브러리가 풍부하다.

- 자바는 오픈소스 언어이기 때문에 자바에서 사용하는 라이브러리 또한 오픈소스가 많다,

( 이것이 제가 자바를 좋아하는 이유 중에 하나이기도 해요 TMI)

 

7) 속도가 느리다

- 자바는 저희가 작성한 코드가 한 번에 컴파일링 돼서 컴퓨터가 알아들을 수 있는 기계어로 번역이 가능한게 아니라

- javac에 의해 .java파일이 컴파일 돼서 자바 바이트 코드(.class)로 바뀐 후 

- JVM에 의해 기계어로 번역되고나서 실행하는 과정을 거치기 때문에

- C나 C++의 컴파일 단계에서 만들어지는 완전한 기계어보다 비교적 속도가 느립니다.

- 하지만, 바이트 코드를 기계어로 변환해주는 JIT(Just In Time) 컴파일러 같은 기술 적용으로 JVM의 기능이 향상되어 속도의 격차가 많이 줄어 들었습니다.

(기존에는 JIT말고 자바 인터프리터만 사용됐었습니다.)

 

2. JVM(Java Virtual Machine): 크게 클래스로더, 런타임 데이터 영역, 실행엔진이 있습니다.

 

1) 컴파일 된 코드(바이트 코드)를 실해시켜주는 가상 머신입니다.

- 바이트 코드를 해석하고 기계어로 번역하고 실행한다.

 

2) H/W와 OS 위에서 실행되기 때문에 JVM 자체는 플랫폼에 종속적이다.

 

3) 즉, 플랫폼에 따라 호환되는 JVM을 실행시켜줘야 함

 

 

3. JRE & JDK

 

1) JRE( Java Runtime Environment ): JVM, 라이브러리 API 등의 개발 도구를 포함하는 자바 실행 환경

 

2) JDK (Java Development Kit): JRE에 컴파일러까지 포함한 버전

 

3) 이미 개발된 프로그램만 실행시킬 목적이면 JRE만 설치하면 됨

 

4) 프로그램 개발까지 해야 한다면 JDK를 설치해야 함

 

 

반응형