프로그래밍이란 간단히 말해 컴퓨터(CPU)에게 어떤 일을 시키기 위해 “프로그램 코드”를 작성하는 과정임.
즉, 우리가 쓰는 코드는 사람이 이해하기 쉬운 문자(소스코드)이고, 최종적으로 컴퓨터가 이해할 기계어(binary) 형태로 바뀌어야 함.
컴파일 언어 (예: C언어)
소스코드를 한 번에 전체 변환(컴파일) 해서 실행 파일(기계어로 된 결과물)을 만들어 둠.
→ 그래서 실행 속도가 빠름.
→ 대신 코드가 변경되면 다시 컴파일해서 서버에 올려야 함.
예를 들어 C언어는 코드를 운영 서버에 올릴 땐 이미 “컴파일된 기계어” 형태로 배포함.
문제가 생기면 소스 코드를 다시 컴파일해서 결과물을 재배포해야 함.
인터프리터 언어 (예: 파이썬)
소스 코드를 서버에 올리고, 실행할 때 한 줄씩 즉석에서 번역(인터프리팅) 함.
→ 실행 속도는 느리지만, 수정이 빠르고 유연함.
→ 즉, 서버에서 바로 코드 수정 후 반영 가능.
백준 같은 온라인 저지에서도 C가 가장 빠른 이유는 실행 시 이미 컴파일된 결과를 실행하기 때문임.
요약하자면, C는 성능, 파이썬은 편의성 중심으로 구분됨.
자바는 컴파일 + 인터프리팅을 결합한 구조의 언어.
즉, “소스코드 → 컴파일(.class) → 인터프리팅(실행)” 과정을 모두 거침.
.java 파일을 작성함. javac.exe)가 해당 파일을 바이트코드(.class 파일) 로 변환함. 즉, 자바는 컴파일 타임과 런타임이 모두 존재하는 구조라고 보면 됨.
.class 파일이 생성되는 시점 .class를 읽어 실제 실행하는 시점 💡 오류가 언제 발생했는지를 구분할 수 있어야 함
- 컴파일 시점의 오류는 즉시 확인 가능해서 수정이 쉬움
- 런타임 에러는 프로그램 실행 중 발생 → 예외처리 필요, 디버깅 어려움
| 구분 | 주요 역할 |
|---|---|
| JDK (Java Development Kit) | 자바 개발도구 전체 세트 (컴파일러, 디버거, JRE 포함) |
| JRE (Java Runtime Environment) | 실행환경(JVM + 기본 라이브러리 포함) |
| JVM (Java Virtual Machine) | 자바 바이트코드를 실행시키는 가상의 기계 |
즉, JDK ⊃ JRE ⊃ JVM 구조로 이해하면 됨.
개발할 땐 JDK가 필수.
현재 많이 쓰는 버전은 8, 11, 17
우리 실습은 Java 17로 진행!
Java SE 17 다운로드 (Oracle 공식 사이트)C:\Program Files\Java\jdk-17\bin 경로를 시스템 환경 변수에 추가 java --version 확인
C:\Program Files\Java\jdk-17\bin를 시스템 path에 추가
javac.exe→ 컴파일러 (코드를 .class로 변환)java.exe→ 인터프리터 (바이트코드를 실행)
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
source ~/.bash_profile
java --versionIDE(통합개발환경)를 쓰면 더 편함.
- 빌드 시스템은 IntelliJ 내부의 기본 빌드로 진행하면 됨.
(나중에 스프링 프로젝트 가면 Gradle이나 Maven 같은 빌드 툴을 쓰게 될 것)
| 구분 | 특징 |
|---|---|
| C언어 | 컴파일 언어, 빠름, 수정 불편 |
| Python | 인터프리터 언어, 느림, 수정 쉬움 |
| Java | 중간형(컴파일 + 인터프리팅), JVM 기반, 범용성 높음 |
기. 계. 어.
안. 녕. 하. 세 . 요.
저. 는. 이 . 지. 연 . 입 . 니. 다.
H.e.l.l.o.w.o.r.l.d