Java 특징
1. 운영체제에 독립적
- JVM(자바 가상 머신): 자바 응용 프로그램 -> JVM -> 운영체제
> JVM이 명령어를 운영체제가 이해할 수 있도록 변환
- JVM은 운영체제에 종속적
“Write once, run anywhere”
\2. 객체지향언어
- 상속, 캡슐화, 다형성
\3. 비교적 배우기 쉬움
\4. 자동 메모리 관리(Garbage Colleciton, GC)
- 프로그래머가 메모리 관리 할 필요가 없음
- 다소 비효율적일 수 있으나, 프로그래머가 프로그래밍에 집중할 수 있도록 도와줌
\5. 네트워크와 분산처리 지원
- Java API를 통해 짧은 시간에 네트워크 관련 프로그램을 쉽게 개발 할 수 있도록 지원
\6. 멀티쓰레드 지원
- 시스템과 관계없이 구현 가능
- 관련된 라이브러리 제공
- 자바 인터프리터가 여러 쓰레드의 Scheduling 제공
\7. 동적 로딩 (Dynamic Loading) 지원
- 자바 애플리케이션은 여러 개의 클래스로 구성
- 변경사항 발생 시 비교적 적은 작업으로 처리 ⭕
> 실행 시, 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용
> 일부 클래스가 변경되어도 전체 애플리케이션을 다시 컴파일 하지 않아도 됨
JVM(Java Virtual Machine)
- 자바를 실행하기 위한 가상 컴퓨터: 실제 컴퓨터가 아닌 소프트웨어로 구현된 가상의 컴퓨터
- JVM: OS에 종속적, JAVA: OS에 독립적
- 자바는 모두 JVM에서만 실행
> 하드웨어에 맞게 완전히 컴파일된 상태가 아님
> 실행 시, 해석(interpret)을 거치므로 속도가 느림
- JIT컴파일러: 속도 감소
> 컴파일된 자바코드(바이트코드)를 하드웨어의 기계어로 변환해주는 기술