개요 탄생 역사 WORA · JVM 버전 역사 쓰임새 📝 문제풀이
◀ 이전 📋 목차 CH 02 ▶
CHAPTER 01 · 입문

자바는 어떻게 태어났을까?

문법을 외우기 전에, 자바가 왜 만들어졌는지부터 알면 모든 게 자연스럽게 이해돼요. 이번 장은 코드보다 이야기 중심입니다. 편하게 읽어 내려가세요.

🎯 이 장을 끝내면
📖
개요
자바(Java)가 뭔가요?
한 문장으로 먼저 잡고, 천천히 풀어볼게요.

자바는 "어디서든 똑같이 돌아가는 프로그램을 만들기 위한 프로그래밍 언어"예요. 그런데 자바는 단순히 언어 하나가 아니라, 그 언어로 만든 프로그램을 실제로 실행해 주는 환경(플랫폼)까지 한 세트로 묶여 있다는 게 특징이에요.

🧩 자바 = ① 언어 + ② 실행 플랫폼 ① 언어로서의 자바 — 우리가 코드를 쓰는 문법 규칙. if, class, for 같은 걸 배우는 게 이 부분이에요.
② 플랫폼으로서의 자바 — 그 코드를 컴퓨터에서 실제로 돌려 주는 JVM이라는 실행기와 도구 모음. 뒤에서 자세히 봅니다. 즉, 자바를 배운다는 건 "문법"과 "실행되는 원리"를 같이 익히는 거예요. 지금은 "자바는 언어인 동시에 실행 환경"이라는 큰 그림만 챙기면 충분합니다.
Java James Gosling Sun Microsystems 1995 Oak WORA JVM Bytecode Oracle
🧭
이번 장의 읽는 법. 억지로 외우지 마세요. "아, 그래서 자바가 이렇게 생겼구나" 하는 맥락만 잡으면, 다음 장부터 나오는 문법이 훨씬 쉽게 붙습니다.
🌱
탄생 역사
가전제품에서 시작된 언어
자바는 원래 웹이 아니라 "냉장고·셋톱박스" 같은 기계를 위해 만들어졌어요.

이야기는 1991년, 미국의 컴퓨터 회사 썬 마이크로시스템즈(Sun Microsystems)에서 시작돼요. 제임스 고슬링(James Gosling)이 이끄는 작은 팀(그린 프로젝트, Green Project)이 새로운 언어를 만들기 시작했어요.

1991
🌳 그린 프로젝트 & 이름 "Oak"
제임스 고슬링 팀이 가전제품·셋톱박스처럼 다양한 기기에서 돌아갈 언어를 구상해요. 처음 이름은 Oak(오크) — 고슬링의 사무실 창밖에 있던 참나무에서 따왔다고 해요. 핵심 목표는 처음부터 "기기가 달라도 똑같이 돌아가게"였어요.
1992~94
📺 시장이 아직 준비되지 않음
이 언어를 양방향 TV(셋톱박스)에 쓰려 했지만, 그 시장은 아직 때가 아니었어요. 프로젝트는 방향을 잃을 뻔했죠. 그런데 이때 세상에 월드 와이드 웹(WWW)이 폭발적으로 퍼지기 시작해요.
1995
☕ "Java"로 개명, 그리고 공개
Oak라는 이름이 이미 등록돼 있어서 Java(자바)로 바꿔요. 이름은 팀이 즐겨 마시던 커피(인도네시아 자바섬 원두)에서 따왔다는 이야기가 유명해요. 1995년 자바가 세상에 공개되고, 웹 브라우저 안에서 도는 작은 프로그램(애플릿, Applet)으로 큰 주목을 받아요. "어떤 컴퓨터에서든 똑같이 돌아간다"는 점이 웹 시대와 완벽히 맞아떨어졌죠.
1996
📦 JDK 1.0 정식 배포
개발자들이 자바 프로그램을 만들 수 있는 도구 모음 JDK 1.0이 나와요. 여기서부터 자바가 본격적인 개발 언어로 자리 잡습니다.
2006~07
🔓 오픈소스로 공개 (OpenJDK)
썬이 자바를 오픈소스로 풀어요. 이때 만들어진 게 지금도 표준으로 쓰이는 OpenJDK예요. 누구나 자바의 속을 보고 개선에 참여할 수 있게 됐어요.
2010
🏛️ 오라클(Oracle)이 썬을 인수
데이터베이스로 유명한 오라클이 썬을 인수하면서, 자바의 주인이 오라클로 바뀌어요. 지금 우리가 쓰는 자바의 배포와 방향은 오라클과 OpenJDK 커뮤니티가 함께 이끕니다.
👤
제임스 고슬링(James Gosling)은 흔히 "자바의 아버지"라고 불려요. 시험이나 대화에서 "자바를 만든 사람"이라고 하면 이 사람을 가리킵니다.
☕ 번외 — 왜 하필 "이식성(어디서든 실행)"에 그렇게 집착했을까?
당시 프로그램은 컴퓨터 종류(OS·CPU)마다 따로 만들어야 했어요. 냉장고에 들어가는 칩, TV에 들어가는 칩, PC의 칩이 다 달랐거든요. 기기마다 프로그램을 새로 짜는 건 너무 비효율적이었죠. 그래서 세운 목표 "한 번 만들면, 어떤 기기에서도 그대로 돌아가게 하자." — 이 생각이 나중에 WORA(Write Once, Run Anywhere)라는 자바의 상징 구호가 됩니다. 원래는 가전제품을 위한 목표였는데, 마침 기기·OS가 제각각인 인터넷 세상과 딱 맞아떨어지면서 자바가 크게 뜬 거예요.
🌍
핵심 철학
Write Once, Run Anywhere & JVM
자바를 자바답게 만드는 단 하나의 아이디어. 이것만 이해하면 절반은 끝나요.

WORA"한 번 작성하면, 어디서든 실행된다(Write Once, Run Anywhere)"는 뜻이에요. 윈도우에서 만든 자바 프로그램이 맥이나 리눅스에서도 고치지 않고 그대로 돌아가요. 이걸 가능하게 하는 주인공이 바로 JVM(Java Virtual Machine, 자바 가상 머신)이에요.

비결은 "두 단계로 나눠서 실행"하는 데 있어요. 자바 코드는 컴퓨터가 바로 읽는 게 아니라, 중간에 바이트코드(bytecode)라는 공통 형태로 한 번 번역돼요. 그리고 각 컴퓨터에 깔린 JVM이 그 바이트코드를 자기 OS에 맞게 실행해 줍니다.

🔤
용어 — 컴파일(Compile)이란 사람이 쓴 소스 코드를 컴퓨터(또는 JVM)가 알아먹는 형태로 번역하는 과정이에요. 자바에서는 javac라는 도구가 이 일을 맡아, .java.class(바이트코드)로 바꿔줘요. 번역해 주는 도구를 컴파일러라고 불러요.
📝
Hello.java
사람이 쓴 자바 소스 코드
⚙️
javac (컴파일)
소스를 바이트코드로 번역
📦
Hello.class
바이트코드 (공통 중간언어)
🖥️
JVM
각 OS에서 바이트코드 실행
🗣️ 비유 — JVM은 "만국 공통 통역사" 전 세계 사람에게 연설한다고 해봐요. 나라마다 말이 다르니(윈도우·맥·리눅스), 보통은 나라별로 연설문을 새로 써야 해요(= C/C++처럼 OS마다 다시 컴파일).
그런데 자바는 연설문을 딱 한 번(바이트코드)만 쓰고, 각 나라에 통역사(JVM)를 한 명씩 세워요. 통역사가 자기 나라 말로 바꿔 전달하죠. 그래서 연설문(내 코드)은 하나인데 어디서든 전달돼요. 💡 핵심: 나(개발자)는 바이트코드까지만 만들고, "OS별 차이"는 각 JVM이 알아서 흡수해 줘요. 그게 WORA의 원리예요.

그래서 자바를 돌리려면 그 컴퓨터에 JVM이 깔려 있어야 해요. "자바 설치하세요"라는 말은 사실상 "이 컴퓨터에 JVM(을 포함한 실행 환경)을 깔아라"라는 뜻이에요. (JVM·JRE·JDK의 정확한 구분은 다음 장(CH 02)에서 그림으로 자세히 봅니다.)

✨ WORA 말고도 — 자바의 대표 성격 4가지 1. 객체 지향(OOP) — 프로그램을 "객체"라는 부품 단위로 조립해요. 자바의 핵심 사고방식이고, 중급 챕터에서 본격적으로 배워요.
2. 자동 메모리 관리(가비지 컬렉션) — 안 쓰는 메모리를 자바가 알아서 청소해 줘요. C/C++처럼 개발자가 직접 메모리를 반납하지 않아도 돼서 실수가 확 줄어요.
3. 안전함 — C/C++에 있던 위험한 포인터 직접 조작이 없어요. 그래서 프로그램이 엉뚱한 메모리를 건드려 뻗는 일이 적어요.
4. C 계열 문법{ }, ; 같은 문법이 C/C++와 닮아서, 그 언어를 아는 사람이 배우기 쉬웠어요.
💡
딱 한 줄 요약. 자바 코드 → 바이트코드로 번역 → 각 컴퓨터의 JVM이 실행. 이 구조 덕분에 한 번 만들면 어디서든 돌아가요(WORA).
🧬
버전 역사
자바는 지금도 자라고 있어요
30년 가까이 발전 중. 어떤 버전이 중요한지 딱 짚어줄게요.

자바는 계속 새 버전이 나와요. 전부 외울 필요는 없고, "판을 바꾼 몇 개"만 알면 됩니다. 특히 Java 8은 자바 역사에서 가장 큰 변화로 꼽혀요.

버전 (출시)무엇이 달라졌나중요도
JDK 1.0 (1996)자바의 첫 정식 배포. 시작점.🏁 시작
J2SE 5.0 (2004)제네릭, 향상된 for문, 오토박싱 등 대거 추가. 현대 자바 문법의 기틀.⭐ 큼
Java 8 (2014)람다식·스트림 도입 — 함수형 스타일. 자바를 크게 바꾼 전설의 버전. 지금도 현장에서 많이 씀.🔥 최대
Java 9 (2017)모듈 시스템 도입. 이때부터 6개월마다 새 버전을 내는 방식으로 전환.🔄 전환
Java 11 (2018)첫 주요 LTS(장기 지원) 버전으로 널리 채택.⭐ LTS
Java 17 (2021)많은 현대 프로젝트의 표준 LTS.⭐ LTS
Java 21 (2023)최신 LTS. 가상 스레드 등 최신 기능 포함.⭐ LTS
🛟 LTS가 뭔가요? LTS = Long-Term Support(장기 지원) 버전이에요. 자바는 6개월마다 새 버전을 내지만, 그 모든 걸 회사가 계속 관리하긴 어려워요. 그래서 몇 년에 한 번, "오래 지원해 줄 안정 버전"을 정해요 — 그게 LTS(11, 17, 21…)예요. 그래서 회사·학습에서는 최신 실험 버전보다 LTS 버전(예: 17, 21)을 기준으로 잡는 경우가 많아요. "자바 몇 버전으로 공부할까?" 고민된다면 LTS를 고르면 안전합니다.
🏛️ 번외 — Oracle JDK vs OpenJDK, 뭐가 다를까?
둘 다 "자바를 실행·개발하는 도구 모음(JDK)"이고 기능은 사실상 같아요. 뿌리도 같은 OpenJDK 소스에서 나와요.
구분OpenJDKOracle JDK
성격오픈소스 표준 구현오라클이 만든 배포판
비용무료용도에 따라 유료 정책이 있을 수 있음
많이 쓰는 곳Temurin, Corretto 등 무료 배포판오라클 지원이 필요한 기업
학습용으로는 무료 OpenJDK 배포판(예: Eclipse Temurin, Amazon Corretto)이면 충분해요. 자세한 설치는 다음 장에서 다룹니다.
🚀
쓰임새
자바는 어디에 쓰이고, 왜 배울까?
30년 된 언어인데 지금도 수요 최상위. 이유가 있어요.
분야자바가 하는 일
🏢 백엔드 서버은행·쇼핑몰·기업 시스템의 서버. 스프링(Spring) 프레임워크와 함께 가장 많이 쓰여요.
📱 안드로이드 앱안드로이드 앱의 전통적 개발 언어. (지금은 코틀린도 많이 쓰지만 뿌리는 자바예요.)
📊 빅데이터대용량 데이터 처리 도구(하둡 등) 상당수가 자바로 만들어졌어요.
🏦 대규모·금융 시스템안정성과 오랜 검증이 중요한 곳에서 오래 신뢰받아 왔어요.
🎓 그래서 왜 배우나 1. 수요가 꾸준해요 — 특히 백엔드(스프링) 채용에서 자바는 여전히 최상위예요.
2. 생태계가 거대해요 — 오래된 만큼 자료·라이브러리·커뮤니티가 방대해서, 막혔을 때 답을 찾기 쉬워요.
3. 기본기가 탄탄해져요 — 자바의 객체 지향·타입 개념을 익히면 다른 언어(코틀린·C#·타입스크립트)로 넘어가기도 수월해요. 정리하면, 자바는 "취업에 강하고, 배우면 다른 언어에도 도움 되는" 든든한 기본기예요. 이 스터디로 그 기본기를 차근차근 쌓아가요.
🧠 이 장 핵심 요약
📝
문제풀이 · 점검
배운 걸 가볍게 점검해봐요
시험이 아니라 "내가 이해했나" 확인용이에요. 틀려도 바로 해설이 나와요.
🧪
문제를 풀면 즉시 정답과 해설이 나오고, 위쪽 바에 점수가 쌓여요. 네 가지 유형(객관식 · O/X · 빈칸 · 코드결과)을 섞어 두었어요. 편하게 눌러보세요.
CH 02 🛠️ 개발 환경(JDK·JRE·JVM)과 첫 프로그램 — Hello World를 한 줄씩 뜯어보기