1. 운영체제에 독립적이다.
-> 기존의 언어는 한 운영체제에 맞게 개발된 프로그램을 다른 종류의 운영체제에 적용하기 위해서 많은 노력
-> 자바에서는 이런 노력 X
Why?
-> 자바 가상머신(JVM) 때문
-> 자바 응용프로그램은 운영체제나 하드웨어가 아닌 JVM하고만 통신
-> JVM이 자바 응용프로그램으로부터 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달
-> JVM은 운영체제에 종속적, 썬에서는 여러 운영체제에 설치할 수 있는 서로 다른 버전의 JVM 제공
Write once, run anywhere 라고 표현
-> '한번 작성하면, 어디서든 실행된다'
2. 객체지향 언어이다.
-> 객체지향 프로그래밍언어(object-oriented pro-gramming language) 중의 하나
-> 객체지향 개념의 특징인 상속, 캡슐화, 다형성이 잘 적용된 순수한 객체지향 언어
3. 비교적 배우기 싶다.
4. 자동 메모리 관리(Garbage Collection)
-> 자바로 작성된 프로그램이 실행, 가비지 컬렉터가 자동적으로 메모리를 관리
-> 프로그래머는 메모리를 따로 관리 X
-> 컬렉터가 없다면 프로그래머가 사용하지 않는 메모리를 체크하고 반환하는 일을 수동적으로 처리
5. 네트워크와 분산처리를 지원한다.
-> 풍부하고 다양한 네트워크 프로그래밍 라이브러리(Java API)를 통해 비교적 짧은 시간에 네트워크 관련 프로그램을 쉽게 개발 할 수 있도록 지원
6. 멀티쓰레드를 지원한다.
-> 일반적으로 멀티쓰레드의 지워은 사용되는 운영체제에 따라 구현방법도 상이, 처리 방식도 다르다.
-> 그러나, 자바에서 개발되는 멀티쓰레드 프로그램은 시스템과는 관계없이 구현가능하며, 관련된 라이브러리(Java API)가 제공되므로 구현이 쉽다.
-> 여러 쓰레드에 대한 스케줄링(scheduling)을 자바 인터프리터가 담당
7. 동적 로딩(Dynamic loading)을 지원한다.
-> 자바는 동적 로딩을 지원하기 때문에 실행 시에 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용할 수 있다.
-> 그 외에 일부 클래스가 변경되어도 전체 애플리케이션을 다시 컴파일 X
-> 애플리케이션의 변경사항이 발생해도 비교적 적은 작업만으로도 처리할 수 있는 유연한 애플리케이션 작성
* 자바의 단점으로는 속도문제가 가장 대표적, 바이트코드(byte code)를 하드웨어의 기계어로 바로 변환해주는 JIT 컴파일러와 Hospot과 같은 신기술의 도입으로 JVM의 기능이 향상됨으로써 속도문제 상당히 개선
JIT 컴파일(just-in-time compilation) 또는 동적 번역(dynamic translation)은 프로그램을 실제 실행하는 시점에 기계어로 번역하는 컴파일 기법이다.
'JAVA개념' 카테고리의 다른 글
배열의 복사 (0) | 2021.11.24 |
---|---|
변수의 타입 (0) | 2021.11.23 |
변수란? (0) | 2021.11.23 |
자바 입출력(1) DO it! 자바 (0) | 2021.07.02 |
Gson을 사용해보자 (0) | 2021.07.01 |