운영체제로부터 독립적
- 자바는 운영체제로부터, 플랫폼으로부터 독립적이기 때문에 프로그램의 변경 없이 다양한 환경에서 실행 가능하다. 이런 특징 덕분에 인터넷 환경에 적합하다.
- 이는 일종의 Emulator(다른 프로그램이나 장치를 모방하는 프로그램)인 JVM(자바 가상머신) 덕분에 가능한 것인데
- 자바 응용 프로그램은 HW가 아닌 JVM하고만 통신하고
- JVM이 응용프로그램으로부터 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달한다.
객체지향언어이다
- 객체지향언어의 하나이다. 즉, 상속, 캡슐화, 다형성 등의 특성을 갖추고 있다.
자동 메모리 관리
- 자바 응용 프로그램이 실행되면 Gabage Collector(가비지 컬렉터)가 자동적으로 메모리를 관리하주기 때문에 프로그래머 입장에서 따로 메모리를 관리하지 않아도 된다. 따라서 프로그래머는 프로그래밍에만 집중 할 수 있다.
네트워크와 분산처리를 지원한다
- 다양한 네트워크 프로그래밍 라이브러리를 통해 (Java API) 네트워크 관련 라이브러리를 쉽게 개발 할 수 있도록 지원한다.
멀티쓰레드를 지원한다
- 자바에서 개발되는 멀티쓰레드 프로그램은 시스템과 상관 없이 구현 가능하다.
- 추가로, 관련 라이브러리가 (Java API) 제공되므로 구현도 쉽다.
- 여러 쓰레드에 대한 스케줄링은 인터프리터가 담당한다.
동적 로딩을 지원한다
- 자바로 작성된 프로그램은 보통 여러개의 클래스로 구현되어있다.
- 실행 시, 전부 로딩하지 않고 동적 로딩 지원을 통해 필요한 시점에 필요한 클래스만 로딩해서 사용 가능하다.
- 추가로 일부 클래스가 변경되어도 전체를 변경할 필요가 없다. 즉 비교적 작은 작업만으로도 유연한 애플리케이션을 작성 할 수 있다.
JVM (자바 가상머신)
- 자바를 실행하기 위한 가상 기계. 가상 기계란, SW로 구성된 HW를 뜻한다.
- OS만을 거쳐 HW로 전달되는 일반 애플리케이션과는 달리
- 자바 애플리케이션은 그 전에 JVM을 한 번 거치기 때문에
- 하드웨어에 맞게 Compile된 상태가 아니라 실행 시 Interpret 되기 때문에 속도가 느리다는 단점이 있다.
- 하지만 요즘은 컴파일된 자바코드(바이트코드)를 기계어로 바꿔주는 JIT 컴파일러와 향상된 기술 덕분에 속도의 격차를 많이 줄였다.
JDK (자바 개발도구)
- JDK를 설치하면 JVM과 자바클래스 라이브러리 (Java API), 그리고 자바를 개발하는데 필요한 프로그램들이 설치된다.
📢 JDK(자바 개발도구) = JRE + 개발에 필요한 실행파일
📢 JRE(자바 개발환경) = JVM + Java API
참고서적 : 자바의 정석 (남궁 성)
'[Java]' 카테고리의 다른 글
Java 클래스 작성 (0) | 2023.03.19 |
---|