[CS] Java 특징

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컴파일러: 속도 감소

> 컴파일된 자바코드(바이트코드)를 하드웨어의 기계어로 변환해주는 기술