프로그래밍 언어와 자바
Java의 특징
- 모든 운영체제에서 실행 가능
JVM(Java Virtual Machine) 위에서 실행되는 자바는 OS와 무관하게 모든 플랫폼에서 동작한다. - 객체 지향 프로그래밍(Object-Oriented Programming, OOP)
- 메모리 자동 정리
자바는 GC(Garbage Collection)가 메모리를 자동으로 관리해준다 - 멀티스레드 지원
- 무료 라이브러리 풍부
다른 언어와의 비교
대표적으로 많이 사용되는 C++, Python과 비교해보자
비교 항목 | Java | C++ | Python |
실행 환경 | JVM 위에서 실행 | OS에서 직접 컴파일하여 실행 | 인터프리터 기반 |
메모리 관리 | 자동 | 수동 | 자동 |
속도 | 중간 | 빠름 | 느림 |
난이도 | 중간 | 상대적으로 복잡 | 쉬움 |
주요 사용 분야 | 기업용 백엔드, 모바일(Android), 금융 시스템 등 | 게임, 임베디스 시스템, OS/드라이버 등 | 데이터 분석, AI/ML, 웹서비스 등 |
JDK 설치 및 설정
JDK에는 Open JDK와 Oracle JDK가 있다.
Open JDK는 완전 무료인 데에 반해, Oracle JDK는 상업용으로 사용 시 유료이다.
Oracle JDK가 Open JDK보다 응답성과 JVM 성능이 상대적으로 뛰어나지만, Open JDK도 무료인 점을 감안하면 학습용으로 사용하기에 무리가 없으므로 간단한 학습용으로는 Open JDK를 사용해도 무방하다. (또, Oracle JDK는 설치하려면 회원가입/로그인을 해야하는 번거로움도 있다)
JDK LTS(Long Term Support) 버전은 장기간 기술 지원을 받을 수 있는 버전을 말한다. JDK 8, JDK 11, JDK 17이 여기에 해당하며 가능하면 LTS 버전을 사용하는게 좋다.
이 포스팅에서는 Mac의 Homebrew를 사용하여 JDK를 설치한다.
Homebrew
오픈소스 기반 MacOS 용 패키지 관리자로, 프로그램을 커맨드라인으로 설치, 삭제, 업데이트를 간편하게 할 수 있다.
오픈소스 기반이라 패키지 안정성이 보장되지 않다는 단점이 있으므로 본인의 목적에 맞게 사용하자.
설치: https://brew.sh/ko/
1. JDK 설치
Homebrew를 설치했다면 터미널을 실행시켜 아래 명령어를 입력해 JDK를 설치한다.
brew install openjdk@17
잠시 후 설치가 완료되고 나면 사진과 같이 다음 절차에 대해 친절하게 알려준다.
가이드에 맞게 설정을 완료하자.

2. 심볼릭 링크 생성
sudo ln -sfn /opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk
3. PATH 설정
시스템에서 JDK를 찾을 수 있도록 위에 추가한 경로를 추가해준다.
Mac Catalina 부터 기본 shell은 zsh이므로 .zshrc 파일에 추가해준다.
echo 'export PATH="/opt/homebrew/opt/openjdk@17/bin:$PATH"' >> ~/.zshrc
shell의 변경사항을 적용한다.
source ~/.zshrc
4. 적용 확인
Open JDK 17이 제대로 설정되었는지 확인한다.
java -version
바이트코드 파일과 자바 가상 머신
바이트코드 파일
Java로 코드를 작성한 후에는 소스 파일(.java)을 바이트코드 파일(.class)로 컴파일(Compile)해야한다.
동일한 소스 파일을 컴파일하면 모두 동일한 바이트코드 파일이 생성된다.

컴파일(Compile)
"사람이 이해할 수 있는 소스코드(.java)"를 "컴퓨터가 이해할 수 있는 형태의 코드"로 변환하는 과정이다.
일반적으로 고급 언어(Java, C, C++ 등)로 작성된 코드를 저수준 언어(기계어 or 바이트코드)로 변환하는 것을 말한다.
컴파일 과정이 필요한 이유
- 플랫폼 독립성 보장
바이트코드는 어떤 플랫폼이든 JVM만 설치하면 동일하게 실행이 가능하다. - 실행 성능 최적화
소스코드 -> JVM용 바이트코드로 미리 변환하면, JVM이 최적화된 방식으로 실행한다.
이후 JVM 내부의 JIT(Just-In-Time) 컴파일러가 바이트코드를 네이티브 코드로 즉시 변환하여 성능이 향상된다. - 코드 보호
.class 파일은 .java보다 디컴파일이 어렵고, 직접적인 소스 노출을 막을 수 있다.
자바 가상 머신 (Java Virtual Machine, JVM)
JVM은 자바 프로그램이 실행되는 가상의 컴퓨터로, 자바 바이트코드를 실행하는 역할을 한다.
주요 역할
- 바이트코드를 로딩하고 실행한다.
- 메모리를 관리한다 (힙, 스택, 메소드 영역 등)
- 가비지 컬렉션(GC)을 통해 자동으로 메모리를 회수한다.
- 스레드를 관리한다.
동작 흐름

가비지 컬렉션 (Garbage Collection, GC)
"더 이상 사용되지 않는 객체(쓰레기)"를 자동으로 메모리에서 제거하는 기능이다. JVM은 프로그램 실행 중 주기적으로 GC를 실행하여 Heap 메모리를 정리한다.
Java는 GC 덕분에 C/C++ 처럼 개발자가 직접 메모리 해제를 하지 않아도 된다.
확인문제
1번 정답: 4
Java는 GC가 메모리를 관리해준다.
2번 정답: 2
Oracle JDK와 Open JDK 모두 개발 소스 공개 의무가 없다.
3번 정답: 4
source 명령어로 변경사항을 적용해주어야한다.
4번 정답: 4
JVM은 운영체제 별로 다르다. 운영체제별로 독립적인 것은 바이트코드 파일이다.
5번 정답: 3, 1, 2, 4
6번 정답: 4
주석은 문자열 안에서 작성할 수 없다. 문자열 내부에서 주석 기호는 주석문이 아니라 문자열 데이터로 인식한다.
7번 정답: 1, 3
'JAVA > 이것이 자바다' 카테고리의 다른 글
[이것이 자바다] CH04. 조건문과 반복문, 확인문제 (1) | 2025.03.17 |
---|---|
[이것이 자바다] CH03. 연산자, 확인문제 (0) | 2025.03.16 |
[이것이 자바다] CH02. 변수와 타입, 확인문제 (0) | 2025.03.16 |

프로그래밍 언어와 자바
Java의 특징
- 모든 운영체제에서 실행 가능
JVM(Java Virtual Machine) 위에서 실행되는 자바는 OS와 무관하게 모든 플랫폼에서 동작한다. - 객체 지향 프로그래밍(Object-Oriented Programming, OOP)
- 메모리 자동 정리
자바는 GC(Garbage Collection)가 메모리를 자동으로 관리해준다 - 멀티스레드 지원
- 무료 라이브러리 풍부
다른 언어와의 비교
대표적으로 많이 사용되는 C++, Python과 비교해보자
비교 항목 | Java | C++ | Python |
실행 환경 | JVM 위에서 실행 | OS에서 직접 컴파일하여 실행 | 인터프리터 기반 |
메모리 관리 | 자동 | 수동 | 자동 |
속도 | 중간 | 빠름 | 느림 |
난이도 | 중간 | 상대적으로 복잡 | 쉬움 |
주요 사용 분야 | 기업용 백엔드, 모바일(Android), 금융 시스템 등 | 게임, 임베디스 시스템, OS/드라이버 등 | 데이터 분석, AI/ML, 웹서비스 등 |
JDK 설치 및 설정
JDK에는 Open JDK와 Oracle JDK가 있다.
Open JDK는 완전 무료인 데에 반해, Oracle JDK는 상업용으로 사용 시 유료이다.
Oracle JDK가 Open JDK보다 응답성과 JVM 성능이 상대적으로 뛰어나지만, Open JDK도 무료인 점을 감안하면 학습용으로 사용하기에 무리가 없으므로 간단한 학습용으로는 Open JDK를 사용해도 무방하다. (또, Oracle JDK는 설치하려면 회원가입/로그인을 해야하는 번거로움도 있다)
JDK LTS(Long Term Support) 버전은 장기간 기술 지원을 받을 수 있는 버전을 말한다. JDK 8, JDK 11, JDK 17이 여기에 해당하며 가능하면 LTS 버전을 사용하는게 좋다.
이 포스팅에서는 Mac의 Homebrew를 사용하여 JDK를 설치한다.
Homebrew
오픈소스 기반 MacOS 용 패키지 관리자로, 프로그램을 커맨드라인으로 설치, 삭제, 업데이트를 간편하게 할 수 있다.
오픈소스 기반이라 패키지 안정성이 보장되지 않다는 단점이 있으므로 본인의 목적에 맞게 사용하자.
설치: https://brew.sh/ko/
1. JDK 설치
Homebrew를 설치했다면 터미널을 실행시켜 아래 명령어를 입력해 JDK를 설치한다.
brew install openjdk@17
잠시 후 설치가 완료되고 나면 사진과 같이 다음 절차에 대해 친절하게 알려준다.
가이드에 맞게 설정을 완료하자.

2. 심볼릭 링크 생성
sudo ln -sfn /opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk
3. PATH 설정
시스템에서 JDK를 찾을 수 있도록 위에 추가한 경로를 추가해준다.
Mac Catalina 부터 기본 shell은 zsh이므로 .zshrc 파일에 추가해준다.
echo 'export PATH="/opt/homebrew/opt/openjdk@17/bin:$PATH"' >> ~/.zshrc
shell의 변경사항을 적용한다.
source ~/.zshrc
4. 적용 확인
Open JDK 17이 제대로 설정되었는지 확인한다.
java -version
바이트코드 파일과 자바 가상 머신
바이트코드 파일
Java로 코드를 작성한 후에는 소스 파일(.java)을 바이트코드 파일(.class)로 컴파일(Compile)해야한다.
동일한 소스 파일을 컴파일하면 모두 동일한 바이트코드 파일이 생성된다.

컴파일(Compile)
"사람이 이해할 수 있는 소스코드(.java)"를 "컴퓨터가 이해할 수 있는 형태의 코드"로 변환하는 과정이다.
일반적으로 고급 언어(Java, C, C++ 등)로 작성된 코드를 저수준 언어(기계어 or 바이트코드)로 변환하는 것을 말한다.
컴파일 과정이 필요한 이유
- 플랫폼 독립성 보장
바이트코드는 어떤 플랫폼이든 JVM만 설치하면 동일하게 실행이 가능하다. - 실행 성능 최적화
소스코드 -> JVM용 바이트코드로 미리 변환하면, JVM이 최적화된 방식으로 실행한다.
이후 JVM 내부의 JIT(Just-In-Time) 컴파일러가 바이트코드를 네이티브 코드로 즉시 변환하여 성능이 향상된다. - 코드 보호
.class 파일은 .java보다 디컴파일이 어렵고, 직접적인 소스 노출을 막을 수 있다.
자바 가상 머신 (Java Virtual Machine, JVM)
JVM은 자바 프로그램이 실행되는 가상의 컴퓨터로, 자바 바이트코드를 실행하는 역할을 한다.
주요 역할
- 바이트코드를 로딩하고 실행한다.
- 메모리를 관리한다 (힙, 스택, 메소드 영역 등)
- 가비지 컬렉션(GC)을 통해 자동으로 메모리를 회수한다.
- 스레드를 관리한다.
동작 흐름

가비지 컬렉션 (Garbage Collection, GC)
"더 이상 사용되지 않는 객체(쓰레기)"를 자동으로 메모리에서 제거하는 기능이다. JVM은 프로그램 실행 중 주기적으로 GC를 실행하여 Heap 메모리를 정리한다.
Java는 GC 덕분에 C/C++ 처럼 개발자가 직접 메모리 해제를 하지 않아도 된다.
확인문제
1번 정답: 4
Java는 GC가 메모리를 관리해준다.
2번 정답: 2
Oracle JDK와 Open JDK 모두 개발 소스 공개 의무가 없다.
3번 정답: 4
source 명령어로 변경사항을 적용해주어야한다.
4번 정답: 4
JVM은 운영체제 별로 다르다. 운영체제별로 독립적인 것은 바이트코드 파일이다.
5번 정답: 3, 1, 2, 4
6번 정답: 4
주석은 문자열 안에서 작성할 수 없다. 문자열 내부에서 주석 기호는 주석문이 아니라 문자열 데이터로 인식한다.
7번 정답: 1, 3
'JAVA > 이것이 자바다' 카테고리의 다른 글
[이것이 자바다] CH04. 조건문과 반복문, 확인문제 (1) | 2025.03.17 |
---|---|
[이것이 자바다] CH03. 연산자, 확인문제 (0) | 2025.03.16 |
[이것이 자바다] CH02. 변수와 타입, 확인문제 (0) | 2025.03.16 |