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를 설치해야 함
'gyub's 공부일기 > Java' 카테고리의 다른 글
[ JAVA ] 자바는 call by value? call by reference? (1) | 2021.03.27 |
---|---|
[ JAVA ] 참조란? (3) | 2021.03.24 |
[JAVA] JVM 클래스로더 (0) | 2020.12.10 |
[ JAVA ] JAVA의 동작 방식와 JVM 메모리 구조 (0) | 2020.11.30 |