1️⃣ 💼 탄생 배경과 주요 목적
| 언어 | 탄생 배경 | 주 사용 분야 |
|---|
| Java | 썬 마이크로시스템즈에서 “Write Once, Run Anywhere” 철학으로 개발 (1995) | 기업용 서버 개발, 안드로이드 앱 |
| Python | 간결성과 가독성을 목표로 개발 (1991) | 데이터 분석, AI, 자동화, 웹 서버 |
| JavaScript | 웹 페이지 동적 처리용으로 브라우저에 탑재 (1995) | 웹 프론트엔드, Node.js 백엔드 |
2️⃣ ⚙️ 실행 방식
| 단계 | Java | Python | JavaScript |
|---|
| 컴파일 | .java → javac → .class (바이트코드) | 인터프리터 실행 (바이트코드도 생성 가능) | 인터프리터 (브라우저 또는 Node.js) |
| 실행 엔진 | JVM이 바이트코드 실행 | CPython 인터프리터 | V8(Chrome), SpiderMonkey(Firefox) 등 |
| 플랫폼 독립성 | JVM 설치 필요 | 파이썬 인터프리터 필요 | 브라우저만 있으면 실행 |
✅ Java: 정적 타입 + 바이트코드 + JVM
✅ Python: 인터프리터 + 동적 타입
✅ JavaScript: 브라우저 런타임 + 동적 타입
3️⃣ 🧩 타입 시스템
| Java | Python | JavaScript |
|---|
| 타입 | 정적 타입 (컴파일 시 체크) | 동적 타입 (실행 시 결정) | 동적 타입 |
| 변수 선언 | 타입 지정 필수 | 타입 지정 없이 변수 선언 | 타입 지정 없이 변수 선언 |
| 예시 | | | |
| Java: | | | |
int x = 10;
Python:
x = 10
JavaScript:
let x = 10;
4️⃣ 🏗️ 객체지향 프로그래밍(OOP)
- Java: 철저히 객체지향(모든 코드가 클래스 내부)
- Python: 클래스/함수 모두 가능 (혼합 프로그래밍)
- JavaScript: 프로토타입 기반 객체지향 (ES6부터 class 문법 지원)
5️⃣ ⚡ 실행 속도
- Java: JIT 컴파일 덕에 빠름 (C++에 근접)
- Python: 상대적으로 느림 (인터프리터)
- JavaScript: V8 엔진 최적화로 빠른 편
6️⃣ 🛠️ 주요 빌드/패키지 관리
| Java | Python | JavaScript |
|---|
| 빌드 도구 | Maven, Gradle | 없음(스크립트 실행) | webpack, parcel |
| 패키지 관리자 | Maven Central, JCenter | pip | npm, yarn |
7️⃣ 📝 에러 처리
| Java | Python | JavaScript |
|---|
| 방식 | try-catch-finally | try-except-finally | try-catch-finally |
| 예시 | | | |
| Java: | | | |
try {
} catch(Exception e) {
}
Python:
try:
except Exception as e:
JavaScript:
try {
} catch(e) {
}
8️⃣ 🌍 실행 환경
| Java | Python | JavaScript |
|---|
| 서버 실행 | Tomcat, Spring Boot | Flask, Django | Node.js |
| 클라이언트 실행 | JVM | 거의 없음 | 브라우저 |
✅ 요약 한줄 비교
- Java: 정적 타입, 빠른 실행, 대규모 시스템에 적합
- Python: 동적 타입, 간결함, 데이터/AI/스크립팅에 강점
- JavaScript: 동적 타입, 웹 중심, 프론트/백 모두 가능