1. 자바란 무엇인가.
- 자바는 프로그래밍 언어뿐 아니라 여러가지 소프트웨어와 명세로 구성된 기술 시스템을 통칭
- 자바 기술 시스템은 크로스 플랫폼 소프트웨어를 개발하고 배포하는 데 필요한 모든 것을 제공한다.
- 자바의 대표적인 특징
- 하드웨어 플랫폼이라는 족쇄를 제거하여 “한 번 작성하면 어디서든 실행된다” 라는 이상을 실현한다.
- 상당히 안전한 메모리 관리 시스템을 갖춘 덕에 메모리 누수 문제와 엉뚱한 메모리를 가리키는 문제 대부분을 피할 수 있다.
- 런타임에 핫 코드를 감지, 컴파일 하고 최적화 하여 자바 애플리케이션이 최상의 성능을 내도록 도와준다.
- 표준 API 자체가 풍부할 뿐 아니라 수 많은 기업과 오픈 소스 커뮤니티에서 제공하는 다양한 기능의 서드 파티 라이브러리를 활요할 수 있다.
1.2 자바 기술 시스템
-
일반적으로 자바 가상 머신 위에서 동작하는 코틀린, 클로저(Clojure), JRuby, 그루비 등의 프로그래밍 언어와 그 외 관련 프로그램들도 자바 기술 시스템에 속하는 것으로 본다. 전통적으로 자바 기술 시스템은 다음 요소들을 포괄한다.
-
자바 프로그래밍 언어
-
(다양한 하드웨어 플랫폼용) 자바 가상 머신 구현
-
클래스 파일 포맷
-
자바 클래스 라이브러리 API(표준 API)
-
다른 기업과 오픈 소스 커뮤니티에서 제공하는 서드 파티 클래스 라이브러리
이 중 특히 자바 프로그래밍 언어, 자바 가상 머신, 자바 클래스 라이브러리를 묶어서 JDK라고 한다. JDK는 자바 프로그램 개발에 필요한 최소한 환경이다. JDK라는 용어는 자바 기술 시스템 전체 세대를 지칭할 때도 자주 쓰인다 또한 자바 SE API와 자바 가상 머신 그리고 배포 기술까지를 묶어 JRE라고 한다. JRE는 자바 프로그램을 실행할 ㅐ수 있는 표준 환경을 제공한다. 그림 1-1에서 자바 기술 시스템의 구성 요소와 JDK, JRE의 범위를 확인 할 수 있다.

그림 1-1 자바 기술 시스템의 구성요소 (JAVA 8 SE)
- 기술이 활용되는 분야, 기술이 집중하는 핵심 비지니스로 관점을 옮기면 자바 기술 시스템을 네가지 주요 제품군으로 구분할 수 있다.
- 자바 카드: 스마트 카드와 같은 소형 기기 및 변조 방지 보안 칩 등에서 실행 되는 자바 플랫폼.
- 자바 ME: 휴대 전화, PDA 같으 ㄴ모바일 기기에서 실행되는 자바 프로그램용 플랫폼. 자바 API를 간소화하고 모바일 기기용 API를 추가 했다. 안드로이드용 애플리케이션도 주로 자바 언어로 개발하지만 자바 ME와는 관련이 없으니 주의하자.
- 자바 SE : 데스트톱 애플리케이션용 자바 플랫폼 완전한 형태의 자바 핵심 API를 제공한다. JDK5까지는 J2SE 라는 이름
- 자바 EE: 전사적 자원관리(ERP), 경영정보시스템(MIS), 고객 관계 관리(CRM) 애플리케이션과 같은 다중 계층 구조로 이루어진 기업 규모 애플리케이션용 자바 플랫폼. 자바 SE API를 확장하고 패포 관련 기술도 제공한다. JDK 5까지는 J2EE라는 이름 JDK10부터는 관리 주체가 이클립스 제단으로 바뀌면서 자카르타 EE로 개명됨.
1.3 자바의 과거와 현재
- 자바의 첫 버전이 탄생한지 20년이 넘음.
- 그림 1-2 에서 JDK 타임라인을 볼수 있다.
1.3.1 자바의 탄생
- 1991년 4월 : 제임스 고슬링 박사는 그린 프로젝트(Green Project)를 이끌고 있었다.

그림 1-2 자바 기술 개발 타임라인
프로젝트 원래 목표는 셋톱박스, 냉장고, 라이도 같은 다양한 가전제품에서 구동되는 프로그램을 개발하는 것
- 이 프로젝트는 자바 언어의 시초가 된 오크(Oak)를 낳았다( 고슬링이 일하던 사무실 근처에서 자라던 참나무에서 따온 이름)
- 1995년 5월 23일 : 오크 언어는 이름을 자바로 바꾸고, 썬월드(SunWorld) 콘퍼런스에서 자바 1.0이 정식 데뷔한다. 자바의 구호인 ‘한 번 작성하면 어디서든 실행된다’ 가 처음으로 제시된 날이다.
- 1996년 4월 : 10개의 주요 운영 체제와 컴퓨터 업체가 자사 제품에 자바 기술을 탑재하겠다고 발표, 같은 해 9 월까지 웹 페이지 약 8만 3천개가 자바 기술로 만들어 졌다. 1996년 5월 말, 썬이 샌프란 시스코에서 처음으로 개최한 자바원(Java-One) 콘퍼런스는 그 후 전 세계 수백만 자바 개발자가 참여하는 연례 행사로 거듭남.