반응형
Java란?
- 썬 마이크로시스템즈에서 1996년 1월 개발
- 객체지향 프로그래밍 언어
- 자바의 중요 특징은 운영체제에 독립적
- 운영체제 종류에 관계없이 실행 가능
- 클래스 라이브러리(Java API)를 통해 프로그램 작성 가능
JVM(Java Virtual Machine)
- 자바가 운영체제에 독립적으로 사용될 수 있게 만든 에뮬레이터
- JVM이 자바 응용프로그램으로 부터 전달받은 명령을 해당 운영체제가 이해하도록 변환하여 전달.
- JVM은 운영체제에 종속적
- 따라서, 여러 운영체제에 설치할 수 있는 서로 다른 버전의 JVM을 제공
- 자바를 실행하기 위한 가상 기계
- 가상 기계란 소프트웨어로 구현된 하드웨어를 뜻하는 넓은 의미
- 자바로 작성된 앱은 모두 JVM에서만 실행됨
- 일반 앱 코드는 OS만 거치고 하드웨어로 전달
- 자바 앱은 JVM을 한 번 더 거침
- 또한 하드웨어에 맞게 완벽히 컴파일 된 상태가 아니고, 실행 시 해석되는 것이기 때문에 속도가 느림
- 그러나 최근 바이트코드(컴파일된 자바코드)를 하드웨어의 기계어로 변환해주는
- JIT컴파일과 향상된 최적화 기술이 적용되어 속도가 어느정도 개선됨.
자동 메모리 관리(Garbage Collection)
- 자바로 작성된 프로그램이 실행되면, 가비지컬렉터가 자동으로 메모리 관리를 해줌
네트워크와 분산처리 지원
- 인터넷과 대규모 분산환경에 적합
- Java API를 통해 네트워크 관련 프로그램을 쉽게 개발 할 수 있음
멀티스레드 지원
- 일반적인 멀티스레드 지원은 운영체제에 따른 구현방법이 상이하여 구현이 어려움
- 자바에서는 시스템과 관계없이 구현 가능하며, Java API가 제공되므로, 구현이 쉬움
- 여러 쓰레드에 대한 스케줄링을 자바 인터프리터가 담당.
동적 로딩 지원
- 자바로 작성된 앱은 여러 개 클래스로 구성
- 자바는 동적 로딩을 지원하기 때문에 실행 시 모든 클래스가 로딩되지 않고 필요한 것만 로딩
- 클래스가 변경되도 전체 앱을 다시 컴파일 할 필요가 없으며, 변경사항이 있어도 비교적 적은 작업으로 처리 가능
자바의 단점
- 속도문제가 대표적
- 바이트코드를 하드웨어의 기계어로 즉시 변환해주는 JIT컴파일러와 Hotspot과 같은 신기술
- 도입으로 JVM의 속도 문제가 상당히 개선됨.
Java 앱의 동작 흐름 비교
일반 앱 -> OS -> 컴퓨터(하드웨어)
Java 앱 -> JVM -> OS -> 컴퓨터(하드웨어)
반응형
'Java > 기본' 카테고리의 다른 글
Java 프로그래밍을 위한 JDK (0) | 2023.08.10 |
---|