- 자바란?
자바는 1996년 1월에 발표된, 썬 마이크로시스템즈에서 개발한 객체지향 프로그래밍 언어이다.
자바의 가장 중요한 특징은 운영체제(Operating System)에 독립적이라는 것이다.
따라서, 자바로 개발된 프로그램은 운영체제의 종류에 관계없이 똑같이 실행이 가능하다.
- 자바의 특징
- 운영체제에 독립적 - 자바 응용 프로그램은 운영체제나 하드웨어가 아닌 JVM(자바 가상 머신)하고만 통신하며, 이 JVM은 응용 프로그램으로부터 받은 명령을 운영체제가 이해할 수 있도록 변환한다.
- 객체지향언어 - 객체지향 의 특징인 상속, 캡슐화, 다형성이 잘 적용되어있다. 이는 재사용성과 유지보수의 용이성 등의 많은 장점을 준다.
- 자동 메모리 관리(Garbage Collection) - 자바로 작성된 프로그램이 실행되면, Garbage Collector가 자동적으로 메모리를 관리해주기 때문에 메모리를 따로 관리하지 않아도 된다. (이게 없다면 사용하지 않는 메모리를 체크하고 반환하는 것을 수동적으로 처리해야한다.) 이것이 비효율적이라 생각할 수 있으나 프로그래밍에 더 집중할 수 있다.
- 네트워크와 분산처리를 지원 - 다양한 네트워크 프로그래밍 라이브러리를 제공하여, 네트워크 관련 프로그램을 쉽게 개발할 수 있도록 지원한다.
- 멀티쓰레드 지원 - 자바에서 개발되는 멀티쓰레드 프로그램은 시스템, 운영체제와는 관계없이 구현이 가능하며, 관련 라이브러리가 제공된다. 이 때, 여러 쓰레드에 대한 스케줄링을 자바 인터프리터가 담당한다.
- 동적 로딩(Dynamic Loading) 지원 - 자바 애플리케이션은 여러 개의 클래스로 구성되어 있는데, 동적 로딩 덕분에 실행 시에 모든 클래스가 로딩되는 것이 아닌 필요한 시점에 클래스를 로딩하여 사용할 수 있다는 장점이 있다. 또, 일부 클래스가 변경되어도 전체 애플리케이션을 다시 컴파일하지 않아도 된다.
- JVM(Java Virtual Machine)
Java Virtual Machine은 자바를 실행하기 위한 가상 컴퓨터(기계)이다.
이것이 자바 애플리케이션을 운영체제로부터 독립적으로 작동하게 하는 소프트웨어인데, 운영체제와 자바 애플리케이션 사이에서 중간 다리 역할을 한다.
단, 자바 애플리케이션은 모두 이 JVM에서만 실행되며, 운영체제에 알맞는 JVM이 필요하다.
위 이미지처럼 자바 애플리케이션은 일반 애플리케이션과 달리 코드가 JVM을 한 번 더 거쳐 하드웨어로 전달된다.
- Java 소스 코드(*.java)는 하드웨어가 인식하지 못하기 때문에
- Java 컴파일러(javac)를 통해 컴파일(자바 소스 코드를 바이트 코드로 변환하여 JVM에서 더 빠르게 실행되도록 최적화 + 문법 오류 검출) (이 과정에서 *.java -> *.class 파일 생성)
- "java" 프로그램을 실행(ex: java Hello.class)하고, JVM이 실행되면서 애플리케이션이 작동
JVM은 운영체제가 이해할 수 있는 명령어를 전달해야하기 때문에 운영체제의 종류에 따라 알맞는 JVM이 필요하다.
즉, 개발자는 각 OS에 맞도록 자바를 설치하기만 하면 된다.
- JRE와 JDK(Java Development Kit)
- JRE(Java Runtime Environment)
목적
JRE는 자바 프로그램을 실행하기 위해 필요한 모든 필수 구성 요소와 환경을 제공하는 Java 실행 환경이다.
즉, 자바 애플리케이션을 실행하기 위해 JRE가 필요하고, 사용자는 사용자의 컴퓨터 운영체제에 알맞는 JRE만 설치하면 어떠한 자바 애플리케이션을 실행시킬 수 있는 것이다.
구성
- JVM
- Java 클래스 라이브러리(API)
- Java 명령 및 기타 인프라를 포함하여 (컴파일된) Java 프로그램을 실행하는데 필요한 패키지
사용자가 자바 애플리케이션을 실행시킬 때, JVM이 자바 바이트 코드를 해당 운영체제의 기계어로 변환하여 실행하게 된다.
자바 라이브러리(API)는 데이터 구조, 파일 입출력, 네트워크 통신 등 다양한 작업을 처리하기 위한 클래스와 메서드와 같은 다양한 기능을 제공하며, 개발자는 이를 활용하여 자신의 프로그램을 쉽게 작성할 수 있다.
- JDK(Java Development Kit)
목적
JDK는 자바 프로그램을 개발하고 실행하기 위한 도구와 환경을 제공
주로 개발자들이 자바 언어를 사용하여 소프트웨어 및 자바 애플리케이션을 개발하는 데 필요한 모든 도구를 제공한다.
구성
- JVM
- 자바 라이브러리(API)
- javac(컴파일러): 자바 소스 코드를 바이트 코드로 변환(개발자가 작성한 소스 코드를 컴파일하여 실행 가능한 바이트 코드로 변환)
- 디버거: 디버깅을 도와주는 도구(코드 오류 찾아준다)
- 프로파일러: 애플리케이션의 성능을 분석하고 최적화할 수 있다.
- JavaDoc 생성 도구: 소스 코드의 주석을 기반으로 자동으로 문서를 생성해주는 도구(문서화)
자바 애플리케이션 개발을 위해서는 JDK, 실행만을 해야한다면 JRE(운영체제에 알맞는)를 설치하면 된다.
참고
Java의 정석 3판 - 남궁성
김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
기준일자: 2024년 01월 18일
정정해야할 내용이 있다면 댓글로 작성 부탁드립니다!
'Java' 카테고리의 다른 글
[Java] 문과 표현식 (3) (0) | 2024.02.20 |
---|---|
[Java] 문과 표현식 (2) (2) | 2024.02.20 |
[Java] 문과 표현식 (1) (0) | 2024.02.20 |
[Java] 컬렉션 프레임워크(Collection Framework), List, Set, Map (0) | 2024.01.19 |
[Java] 변수 (0) | 2024.01.19 |