1. 운영체제에 독립적이다.
- 일종의 에뮬레이터인 자바가상머신(JVM) 덕에 가능한 것인데, 자바 운영프로그램은
운영체제나 하드웨어가 아닌 JVM하고만 통신하고 JVM이 자바 응용프로그램으로부터
전달 받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달한다.
- 또한 자바 어플리케이션은 OS에 독립적이지만, JVM은 OS에 종속적이다. 그래서
해당 OS마다 실행가능한 JVM이 있어야 한다.
(일반적으로 어플리케이션은 OS에 종속적임.)
2. 겍체지향 언어이다.
- 상속 + 캡슐화 + 다형성
3. 자동 메모리 관리
- 가비지 컬렉터가 프로그래머가 사용하지 않는 메모리를 체크하고 반환하는 일을
체크해준다.
- 다소 비효율적이지만, 프로그래머가 보다 프로그래밍에 집중할 수 있도록 도와준다.
4. 네트워크와 분산처리를 지원한다.
- 네트워크 프로그래밍 라이브러리(API)를 통해 비교적 짧은 시간에 네트워크 관련
프로그램을 쉽게 개발할 수 있도록 지원한다.
5. 멀티 쓰레드를 지원한다.
- 멀티 쓰레드는 일반적으로 사용되는 운영체제에 따라 구현 방법도 상이하며, 처리
방식도 틀리다. 그러나 자바에서는 관계없이 구현가능하며, 관련된 라이브러리를
지원한다.
- 여러 쓰레드에 대한 스케쥴링을 자바 인터프리터가 담당하게 된다.
6. 동적 로딩을 지원한다.
- 여러 클래스에 대해서 실행할 때, 모든 클래스가 로딩되지 않고, 필요한 시점에만
클래스를 로딩하여 사용할 수 있다는 장점이 있다.
- 또한 일부 클래스가 변경되어도 전체 어플리케이션을 다시 컴파일하지 않아도 되며,
어플리케이션의 변경사항이 발생해도 비교적 적은 작업만으로도 처리할 수 있는
유연한 어플리케이션을 작성할 수 있다.
※ JVM이란, 자바를 실행하기 위한 가상 기계이다. 즉, 실제 컴퓨터(하드웨어)가 아닌
소프트웨어로 구현된 컴퓨터라는 뜻으로 컴퓨터 속의 컴퓨터라고 생각하면 된다.
● 단점은 자바 어플리케이션의 코드는 OS만 거치고 하드웨어로 전달하는 것이 아닌
JVM을 한번 더 거치게 되기에 속도에 문제가 된다. 그러나 요즘엔 바이트코드를
하드웨어의 기계어로 바로 변환해주는 JIT컴파일러가 있어 속도를 향상시켰다.
※ 바이트코드란, 컴파일된 자바 코드를 의미한다.
'자바 > 기본적인 개념' 카테고리의 다른 글
형식화된 출력 - prinf() (0) | 2020.12.30 |
---|---|
타입의 불일치와 문자와 문자열의 리터럴 (0) | 2020.12.30 |
리터럴의 타입과 접미사 (0) | 2020.12.30 |
기본형과 참조형 (0) | 2020.12.30 |
변수의 명명 규칙 (0) | 2020.12.30 |