본문 바로가기
back-end/JAVA

자바 언어의 특징, 자바 플랫폼 종류/구조, JVM, 자바API, 자바 JDK(SDK)/JRE

by 모두의 향연 2022. 1. 16.
728x90
반응형

[ 자바 언어의 특징 ]

1. 단순하다.

절차지향인 C와 객체지향인 C++의 복잡한 기능을 제외하여 코드는 단순하게 작성 가능

+가비지컬렉터에 의해 자동 메모리 관리로 메모리 신경쓰지 않아도 됨

 

2. 객체지향적

언어라는 객체를 사용해서 프로그램을 작성하도록 하는 언어

재사용 가능

 

3. 분산처리 용이

분산 환경에서 TCP/IP 등의 프로토콜을 통해 효율적으로 실행할 수 있도록 설계된 언어

 

4. 인터프리터에 의해 실행

.java(소스코드)→.javac(컴파일)→.class(중간코드=바이트코드=클래스코드)→java(인터프리터,기계어로 해석)→실행

컴파일 언어임 동시에 인터프리터 언어이다.

 

5. 견고하다(Robust)

다양한 플랫폼 상에서 실행되기 위해 에러의 원인이 되는 요소들을 제거하거나 자동으로 해결

 

6. 안전하다(Secure)

컴파일 시에 엄격하게 데이터 타입을 검사함으로써 프로그램 실행 시 발생할 수 있는 비정상적인 상황을 미리 방지

.java(소스코드)→.javac(컴파일)→.class(중간코드=바이트코드=클래스파일)→java(인터프리터,기계어로 해석)→실행
[.class(중간코드=바이트코드=클래스파일) 실행 시]
클래스로더(코드분리: 코드가 자신 컴퓨터에서 온것인지 타컴퓨터에서 온것인지 확인)
→바이트 코드 검증기(코드검증: 바이트 코드 검증)

 

7. 플랫폼이 독립적

사용하는 운영체제나 CPU 등의 하드웨어 사양에 관계 없이 실행가능 

 

8. 높은 성능을 제공

가비지 컬렉터 기능으로 더 이상 참조되지 않는 객체는 삭제됨

불필요한 메모리 낭비 방지함

 

9. 멀티스레드 지원

스레드란? 독자적으로 수행하는 하나의 작은 프로그램

멀티스레드란? 한 번에 여러 개의 스레드가 동시에 수행되는 과정, 하나의 CPU가 여러 개의 프로그램을 동시에 수행하도록 함. 그러다보니 수행속도가 빨라짐.

 

10. 동적(Dynamic)임

자바 언어는 변화되는 환경에 잘 적응되도록 설계

기존의 프로그램에 영향을 주지 않고, 라이브러리에 새로운 메서드나 속성들을 추가할 수 있음

프로그램과 프로그램에서 사용되는 라이브러리와의 연결을 실행시간에 수행함

 

[ 자바 플랫폼 종류 ]

1. Java SE

가장 기본이 되는 에디션, 자바 언어 대부분의 패키지가 포함됨

 

2. Java EE

현업에서 사용되는 API들이 집약된 에디션, 웹프로그래밍과 데이터베이스에서 연동하는 많은 기술이 포함

 

3. Java ME

모바일 기기 등에서 사용되는 API가 포함된 에디션, 스마트폰의 자체적인 OS로 인해 현재는 거의 사장됨

 

 

[ 자바 플랫폼의 구조 ]

일반적인 플랫폼
하드웨어 플랫폼 ← 운영체제 ← 애플리케이션
자바 플랫폼
하드웨어 플랫폼 ← 자바 가상 머신(JVM) ← 자바 프로그램 
※자바 가상 머신에서는 자바 API제공

 

[ 자바 가상 머신(JVM) ]

자바 가상 머신이란

자바 프로그램 - 자바 언어로 쓰여진 애플리케이션을 실행하는 기능 수행

자바 가상 머신 - 애플리케이션이 운영체제에 영향을 받지 않고 동작할 수 있는 환경을 제공

윈도우(OS), 유닉스(OS), 리눅스(OS) - 단, JVM은 운영체제와 직접적으로 통신을 해야하기 때문에 운영체제에 맞는 JVM을 설치해줘야 함

 

 

[ 자바 API ]

- 프로그래머가 필요로 하는 기본적인 클래스들을 거대한 라이브러리로 미리 만들어서 제공하는 것

- 미리 제공되는 클래스를 표준 클래스라고 함

- 자바 언어 자체는 작고 단순한 구조를 갖지만, 많은 기능들을 API에서 제공하고 있음

- 관련된 기능의 클래스들을 묶어 패키지라고 표현함

 

[ 자바 JDK(SDK)/JRE ]

자바 개발 환경(JDK): Java Development Kit/ 자바 실행 환경(JRE): Java Runtime Environment

JDK는 개발 및 실행에 필요한 모든 도구가 들어있으며, JRE는 JDK에서 몇 가지 도구를 제외한.. 말 그대로 실행만을 위한 도구들로 구성되어 있다. 따라서 JRE으로는 작성된 소스를 컴파일할 수 없으므로 컴파일러를 포함한 SDK를 설치해야 한다. 

JDK와 SDK는 동일한 용어로 이해하면 된다. 다만, JDK1.2버전부터 JDK를 SDK라는 용어로 혼용하기 시작했는데, 기본의 1.x의 버전과 비교했을 때 상당히 많은 API가 추가되어 새로운 개념의 JDK를 SDK라는 의미로 부른다. 

 

bin: 자바 개발 환경과 관련된 각종 명령들을 포함한 폴더, 자바 컴파일러와 인터프리터 명령도 여기에 포함

include: 플랫폼 별로 필요한 JDK의 각종 헤더 파일을 포함한 폴더

jre: 자바 실행 환경 관련 명령어와 라이브러리를 포함한 폴더

lib: 자바 개발 환경에서 사용될 라이브러리를 포함한 폴더

728x90
반응형

'back-end > JAVA' 카테고리의 다른 글

42) 인터페이스의 장점2  (0) 2021.06.24
41) 인터페이스의 장점1  (0) 2021.06.24
40) 인터페이스와 다형성  (0) 2021.06.23
39) 인터페이스의 선언, 상속, 구현  (0) 2021.06.17
38) 추상클래스의 작성2  (0) 2021.06.16