자바란?
- 객체지향 프로그래밍 언어
- 자바는 풍부한 클래스 라이브러리(JAVA API)를 통해 프로그래밍에 필요한 요소들을 기본적으로 제공하기 때문에 자바 프로그래머는 단순히 이 클래스 라이브러리만을 잘 활용해도 강력한 기능의 자바 프로그램을 작성할 수 있다.
가장 중요한 특징
운영체제(Operating System, 플랫폼)에 독립적이다.
자바로 작성된 프로그램은 운영체제의 종류에 관계없이 실행이 가능하기 때문에, 운영체제에 따라 프로그램을 전혀 변경하지 않고도 실행이 가능하다.
자바의 특징
1. 배우기 쉬운 객체 지향 언어
= 프로그래밍 언어 + 객체지향 개념(C++, JAVA, Python, JavaScript)
- 객체지향언어의 특징인 재사용성과 유지보수의 용이성 등의 많은 장점에도 불구하고 배우기 어려웠다. 그런데 자바는 간결하면서도 명료한 객체지향적 설계로 사용자들이 객체지향개념을 보다 쉽게 이해하고 활용할 수 있도록 했다.
2. 자동 메모리 관리
- 가비지컬렉터(GarbageCollector), 메모리를 알아서 정리해 준다.
- 자바로 작성된 프로그램이 실행되면, 가비지 컬렉터가 자동적으로 메모리를 관리해주기 때문에 프로그래머는 메모리를 따로 관리하지 않아도 된다.
3. 멀티 쓰레드 지원
하나의 프로그램에서 동시에 여러 작업을 할 수 있게 해 준다.
ex) 채팅하면서 파일 주고받을 수 있는 거처럼
4. 풍부한 라이브러리로 쉽게 개발 가능
(라이브러리 : 프로그램을 개발하는데 자주 쓰이는 주요한 기능들을 미리 만들어서 제공)
5. 운영체제에 독립적 ★
기존의 언어는 한 운영체제에 맞게 개발된 프로그램을 다른 종류의 운영체제에 적용하기 위해서는 많은 노력이 필요하다.
반면에 자바는 그러한 노력이 필요하지 않다.
바로 JVM(Java Virtual Machine) 자바 가상 머신을 통해서 가능하다.
자바 응용 프로그램은 운영체제나 하드웨어가 아닌 JVM 하고만 통신하고 JVM이 자바 응용프로그램으로부터 전달 받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달한다.
자바 응용프로그램 ↓ |
JVM ↓ |
운영체제 |
JVM (Java Virtual Machine)
- '컴퓨터'를 사용해서 '자바를 실행하기 위한 가상 컴퓨터'
- '가상 컴퓨터'는 실제 컴퓨터(하드웨어)가 아닌 소프트웨어로 구현된 컴퓨터라는 뜻으로 컴퓨터 속의 컴퓨터라고 생각하면 된다.
- 자바로 작성된 애플리케이션은 모두 이 가상 컴퓨터(JVM)에서만 실행되기 때문에, 자바 애플리케이션이 실행되기 위해서는 반드시 JVM이 필요하다.
- 하드웨어에 맞게 완전히 컴파일된 상태가 아니고 실행 시에 해석(interpret)되기 때문에 속도가 느리다는 단점이 있다.
=> 요즘엔 바이트코드(컴파일된 자바코드)를 하드웨어의 기계어로 바로 변환해주는 JIT컴파일러와 향상된 최적화 기술이 적용되어서 속도의 격차를 많이 줄였다.
JAVA 애플리케이션 ↓ |
JVM ↓ |
OS (Windows) ↓ |
컴퓨터 (하드웨어) |
-> JAVA 애플리케이션은 JVM을 한 번 더 거친다.
JAVA 애플리케이션 ↓ |
OS (Windows) ↓ |
컴퓨터 (하드웨어) |
-> 일반 애플리케이션 코드는 OS만 거치고 하드웨어로 전달
- 일반 애플리케이션은 OS와 바로 맞붙어 있어서 OS에 종속적이다.
- 반면에, JAVA 애플리케이션은 JVM하고만 상호작용을 하기 때문에 OS와 하드웨어에 독립적이다.
다른 OS에서도 프로그램의 변경 없이 실행이 가능하다.
단, JVM은 OS에 종속적이기 때문에 해당 OS에서 실행가능한 JVM이 필요하다.
JAVA 애플리케이션 ↓ |
JAVA 애플리케이션 ↓ |
JAVA 애플리케이션 ↓ |
JVM (Windows용) ↓ |
JVM (Macintosh용) ↓ |
JVM (Linux용) ↓ |
OS (Windows) ↓ |
OS (Macintosh) ↓ |
OS (Linux) ↓ |
컴퓨터 (하드웨어) | 컴퓨터 (하드웨어) | 컴퓨터 (하드웨어) |
용어 또는 역할 정리
JDK (Java Development Kit)
- 자바 개발 키트
- JVM과 자바 클래스 라이브러리(JAVA API) 외에 자바를 개발하는데 필요한 프로그램들이 설치된다.
환경변수
윈도우즈에서 사용하는 설정정보가 담겨있는 변수
자바 API
JAVA로 프로그램을 만드는데 필요한 주요 기능을 미리 만들어서 제공
자바 API 문서
JAVA API가 제공하는 기능에 대한 상세한 정보제공
https://docs.oracle.com/javase/8/docs/api/ 자바 8 문서 링크
- java의 사전 같은 것이다. 자주 보면 좋다.
- 패키지 : 서로 관련된 클래스 넣어놓은 곳
'JAVA' 카테고리의 다른 글
참조형 타입 (reference type) (0) | 2023.01.08 |
---|---|
[남궁성 자바기초] 1-8, 1-9강 정리 (0) | 2023.01.06 |
[JAVA_Study] 스터디 4일차 -2 (네트워킹) (0) | 2022.06.23 |
[JAVA_Study] 스터디 4일차 -1 (컬렉션 - 스택, 큐, ArrayDeque) (0) | 2022.06.23 |
[JAVA_Study] 스터디 3일차 -5 (컬렉션 - Map) (0) | 2022.06.22 |