Java란?
- 객체 지향 언어로 개발된 프로그래밍 언어
Java의 특징
- 객체지향 언어
- 처음부터 객체 지향 언어로 개발된 프로그래밍 언어
- Java는 Java 가상 머신(JVM)을 사용하여 운영체제와 독립적으로 동작한다.
- 어느 운영체제에서나 같은 형태로 실행 될 수 있다.
- 작성한 코드가 동작하려면 JVM을 거쳐야되서 다른 언어에 비해 비교적 실행 속도가 느리다.
- 객체지향 언어의 특징인 캡슐화, 상속성, 다형성 등을 지원한다.
- 높은 이식성
- Java 실행 환경이 설치만 되있으면 어떤 운영체제에서든지 실행할 수 있다.
- 컴파일 언어 겸 인터프리터 언어
- 텍스트 소스를 컴파일하여 이진 파일(class)파일로 만든 다음 Java 런타임이 클래스 파일을 인터프리트하면서 실행한다.
- 시스템에 무관한 이진 파일을 만듦으로써 Java는 컴파일 언어에 가까운 속도와 시스템 독립성을 얻을 수 있다.
- 메모리 자동 관리
- 객체 생성시 자동으로 메모리 영역을 찾아 할당한다.
- 가비지 콜렉터를 실행시켜 자동으로 사용하지 않는 객체를 제거한다.
- 개발자가 직접 메모리에 접근할 수 없으며 자바가 직접 관리한다.
- 멀티 쓰레딩 지원
- 하나의 프로그램 단위가 동일한 쓰레드를 동시에 수행할 수 있다.
- 운영체제마다 멀티 쓰레드를 이용하는 API가 다르나, Java의 경우에는 Java API를 사용하기 때문에 쉽게 구현이 가능하다.
- 동적인 구현 방식
- 객체 간의 상호 작용을 정의한다.
- 필요한 객체만 생성해서 사용한다.
- 필요하지 않은 객체는 생성되지 않는다.
- 오류가 발생하면 오류가 발생한 클래스만 수정하면 된다.
- 유지보수를 쉽고 빠르게 진행할 수 있다.
- 대신 일일이 예외 처리를 해줘야 한다.
- 객체 간의 상호 작용을 정의한다.
- 방대한 오픈 소스 라이브러리
- Java는 오픈소스 언어다.
- 검증된 오픈소스 라이브러리를 사용하면 개발에 대한 부담이 줄어든다.
JVM
- 정의
- Java Virtual Machine
- 가상 머신이란 프로그램을 실행하기 위해
물리적 머신과 유사한 머신을 소프트웨어로 구현한 것
- 역할
- Java 애플리케이션을 클래스 로더를 통해 읽어 들여 Java API와 함께 실행한다.
- Java와 운영체제 간에 중개자 역할을 수행하여
Java가 운영체제에 구애받지 않고 독립적으로 작동이 가능하다. - Java의 메모리 관리를 담당한다.
- Garbage collection을 수행한다.
- 특징
- 컴파일된 바이트 코드를 기계가 이해할 수 있는 기계어로 변환
- 스택 기반의 가상 머신
- 메모리 관리와 GC를 수행
JRE
- 정의
- Java 실행환경 (Java Runtile Environment)
- 포함 항목
- JVM
- 표준 라이브러리
- 설정 파일
JDK
- 정의
- Java 개발 환경 (Java Development Kit)
- 포함 항목
- JRE
- Java 컴파일러
- 디버거 -Jar 도구
- 프로파일러
- 특징
- 개발자가 Java로 프로그래밍하는 전 과정을 도와주는 Java 코드 제작 키트
- 최근엔 JRE와 JDK의 경계가 모호하다.