1. 자바(Java)란?
- 썬 마이크로시스템즈(Sun Microsystems, Inc. 이하 썬)에서 개발하여 1996년 1월에 공식적으로 발표한 객체지향 프로그래밍 언어
- 가전제품이나 PDA와 같은 소형기기에 사용될 목적으로 쓰이던 '오크(Oak)'라는 언어를 인터넷에 적합하도록 개발 방향을 바꾸면서 이름을 '자바(Java)'로 변경
"Write once, run anywhere (한번 작성하면, 어디서나 실행된다)"
2. Java의 특징
1) 운영체제에 독립적
- 자바 응용프로그램은 운영체제나 하드웨어가 아닌 JVM하고만 통신하고, JVM이 자바 응용프로그램으로부터 전달받은 명령을 해당 운영체제가 이해할 수 있또록 변환하여 전달
JVM(Java Virtual Machine)
- 자바를 실행하기 위한 가상 컴퓨터, 자바 바이트 코드를 실행할 수 있는 주체
- 자바 응용프로그램의 실행을 위해선 반드시 JVM을 거쳐야 함
- 일반적으로 인터프리터(실행 시에 해석)나 JIT컴파일러(바이트코드를 하드웨어의 기계어로 바로 변환) 방식으로 OS에 구애받지 않고 바이트코드를 해석해 줌
- 스택 기반의 가상 머신, 가비지 컬렉션 사용, 플랫폼 독립성 보장
- Java 애플리케이션과 OS는 독립적이지만, JVM은 OS에 종속적
- OS별 JVM이 필요함
2) 객체지향언어
- 상속, 캡슐화, 다형성이 잘 적용된 순수한 객체지향언어(object-oriented programming language)
3) 자동 메모리 관리(Garbage Collection)
- 가비지컬렉터(Garbage Collector)가 자동적으로 메모리를 관리해주어 프로그래머는 따로 메모리 관리를 할 필요가 없음
4) 네트워크와 분산처리 지원
- 다양한 네트워크 프로그래밍 라이브러리(Java API)를 지원
5) 멀티쓰레드(Multi-Thread) 지원
- 자바에서 개발되는 멀티쓰레드 프로그램은 OS와 관계없이 구현 가능
- 관련 라이브러리(Java API) 제공으로 구현이 쉬움
- 여러 쓰레드에 대한 스케줄링(scheduling)은 자바 인터프리터가 담당
6) 동적 로딩(Dynamic Loading) 지원
- 실행 시에 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용할 수 있음
- 유연한 애플리케이션 작성 가능
참고 - Java의 정석 3rd Edition (저자 : 남궁성, 출판 : 도우출판)
'공부 > Java' 카테고리의 다른 글
[Java-02] 변수(Variable) - 형변환(Casting) (0) | 2021.02.01 |
---|---|
[Java-02] 변수(Variable) - 기본형(Primitive type) (0) | 2021.01.31 |
[Java-02] 변수(Variable) - 진법 (0) | 2021.01.30 |
[Java-02] 변수(Variable) - 변수와 상수, 변수의 타입 (0) | 2020.12.25 |
[Java-01] JDK 설치 및 환경변수 설정 (0) | 2020.12.23 |