일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Algorithm
- 알고리즘
- frontend
- 자바
- Redux
- vscode
- 안드로이드
- Graph
- db
- git
- java
- network
- Database
- Javascript
- react
- DP
- Data Structure
- CS
- Python
- DFS
- 리트코드
- 백준
- 다이나믹 프로그래밍
- 그레이들
- LeetCode
- 동적 계획법
- BFS
- TypeScript
- 프로그래머스
- VIM
- Today
- Total
늘 겸손하게
Java 특징 정리 본문

자바 특징 정리
- 플랫폼 독립적인 언어
- 모든 플랫폼에서 호환성을 가진다
- 네트워크, 특히 웹에 최적화된 프로그래밍 언어
자바의 플랫폼 독립성, WORA ( Write Once Run Anywhere )
- 한번 작성된 코드는 모든 플랫폼에서 바로 실행 가능
- C/C++ 등 기존 언어가 가진 플랫폼 종속성을 극복
- 바이트 코드( byte code )와 JVM( Java Virtual Machine )이 이를 가능하게 했다.
바이트 코드?
- 자바 소스코드를 컴파일한 object 코드. JVM이 해석하고 실행
- CPU에 종속적이지 않은 object 코드.
- .class 파일에 저장
JVM ( Java Virtual Machine )
- 자바 바이트 코드를 실행하는 자바 가상 기계(소프트웨어)
- 인터프리터 방식으로 바이트 코드 해석
- JVM 자체는 플랫폼에 종속적
어느 플랫폼이든 JVM만 설치되어 있다면 같은 자바 소스 코드를 실행할 수 있다.
이를 통해 네트워크에 연결된 어느 클라이언트에서나 똑같은 자바 코드를 실행시킬 수 있어 네트워크, 웹 개발에 널리 쓰였다.
JDK와 JRE
JDK ( Java Development Kit )
- 자바 응용 개발 환경
- 개발에 필요한 도구 포함 ( 컴파일러, JRE( Java Runtime Environment ), 클래스 라이브러리, 샘플 등 포함 )
JRE ( Java Runtime Environment )
- 자바 실행 환경. JVM 포함
자바의 특징 ( 정리 )
1. 플랫폼에 독립적
- 하드웨어, 운영체제에 종속되지 않은 바이트 코드를 이용하여 어느 플랫폼에서든 이용 가능하다.
2. 객체 지향 언어
- 캡슐화, 상속 , 다형성을 지원한다.
3. 클래스로 캡슐화
- 자바의 모든 변수나 함수는 클래스 내에 선언
- 클래스 안에서 클래스(내부 클래스) 작성 가능
4. 패키지
- 서로 관련 있는 여러 클래스를 패키지로 묶어 관리
- 패키지는 폴더와 개념이 같다.
5. 멀티스레드
- 여러 스레드의 동시 수행 환경 지원
- C/C++ 프로그램은 멀티스레드를 위해 운영체제 API를 호출하지만 자바는 운영체제의 도움 없이 자체적으로 멀티스레드를 지원한다.
6. 가비지 컬렉션
자바 언어는 메모리 반환 기능이 없어 JVM이 자동으로 사용하지 않는 메모리를 반환한다.
이 작업을 가비지 컬렉션이라고 한다.
7. 실시간 응용프로그램에 부적합
실행 도중 예측할 수 없는 시점에 가비지 컬렉션이 실행되기 때문
8. 안전하고 쉬운 작성
- 타입 체크 엄격
- 물리적 주소를 사용하는 포인터 개념이 없다
- 동적 메모리 반환 또한 없다
- 다양한 라이브러리를 지원
9. 실행 속도 개선을 위한 JIT 컴파일러 사용
자바는 바이트 코드를 인터프리터 방식으로 실행합니다.
인터프리터 방식이란 런타임에 코드 한 줄씩 기계어로 번역하는 방식을 말합니다.
이 방식은 컴파일, 즉 실행 전에 모든 코드를 기계어로 번역하여 실행하는 방식보다는 느리지만 OS 및 플랫폼에 독립적일 수 있도록 합니다.
자바 소스 코드를 컴파일러가 바이트 코드로 변환한 다음, 실제 바이트코드를 실행하는 시점에서 JVM이 바이트코드를 JIT 컴파일을 통해 기계어로 변환합니다.
'Programming > Java' 카테고리의 다른 글
백준 BufferedReader, BufferedWriter로 입출력 (0) | 2022.02.09 |
---|---|
Java Thread 기초 이론 (0) | 2022.02.08 |
Java 객체 인자로 전달, 레퍼런스 (0) | 2022.02.08 |
Java Abstract methods and Classes ( 추상메소드 , 클래스 ) (0) | 2021.09.08 |
Linux 환경에서 Java 파일 컴파일 및 실행 (0) | 2021.06.29 |