1. Java 언어의 기원
자바 언어를 만든 사람은 Sun Microsystems의 제임스 고슬링 박사이며, 1990년 Sun 회사내 소규모 프로젝트를 진행을 했었고 해당 프로젝트의 이름은 "그린 프로젝트"라고 불렸다. 해당 프로젝트는 소비자용 전제자품의 제어박스를 개발하는 것을 목표로 한 프로젝트이다. 그래서 하드웨어 플랫폼과 무관하게 동작할 수 있는 언어가 필요했고 C++ 언어를 사용할 것을 고민하다가 Oak라는 언어를 자체적으로 개발해서 사용을 하게 되었고. 이 Oak언어가 나중에 Java가 된다.
(1) 1995년
Oak라는 이름을 상표 등록할 수 없다는 이유로 언어의 이름을 Java로 바꾸고 Java의 초기 개발 버전을 발표하게 되었다. 하지만 그 당시 큰 인기를 끌지는 못했던 언어였다.
(2) 1996년
1996년 1월에 Java 1.0이 공식적으로 발표되었다. 이때도 별 반응은 없었다.
(3) 1998년
J2EE ( Java 2 Platform, Enterprise Edition )가 발표되면서 자바의 인기가 증가하게 되었다. J2EE는 웹 애플리케이션과 엔터프라이즈 애플리케이션을 개발할 수 있는 강력한 플랫폼을 제공하며, 웹 개발에서 자바의 역할을 크게 확장을 하게 되었다.
(4) 1999년
인터넷의 보급과 함께 웹 애플리케이션의 필요성이 커지면서, 자바는 서버 측 웹 애플리케이션 개발의 주요 기술로 자리잡기 시작했고, 자바의 JSP / Servlets와 같은 기술들이 웹 개발에서 중요한 역할을 하게 되었고, 이를 통해 자바의 인기가 급증하기 시작했다.
(5) 2000년대 초반
자바는 웹 애플리케이션 개발에서 표준 기술로 자리잡았고, 많은 대기업들이 자바를 선택하여 서버 측 개발에 사용을 하게 되었다. 특히 J2EE는 기업 환경에서 많이 사용되었다.
(6) 2009년
Oracle이 Sun Microsystems를 인수하며, 2009년 부터는 Oracle이 자바 기술을 관리하고 있다.
2. Java 언어의 특징
- 운영체제와 무관, 하드웨어 플랫폼에 독립적인 언어이다.
- 완전한 객체지향 프로그래밍 언어
- 데스크톱 응용 외에 웹 또는 네트워크 프로그래밍이 용이
- 변수 등의 사용에 있어서 엄격한 자료형의 검사
- 예외 처리 기능 제공
- 멀티 스레딩 지원
3. Java 플랫폼
- Java 플랫폼은 Java 프로그램의 개발과 실행을 위한 환경을 의미한다.
- 사용중인 운영체제에 맞는 별도의 Java 플랫폼을 설치해야 함.

4. Java 플랫폼의 구성

(1) Java VM (Java Virtual Machine)
- Java 프로그램의 실행 환경을 제공하는 가상 기계를 의미한다.
- Java 프로그램의 구동 엔진
- 실행에 필요한 사항을 관리해준다.
- 메모리 정리를 자동으로 수행해준다. ( 가비지 컬렉터 )
(2) Java API
- 프로그램의 개발에 필요한 클래스 라이브러리
- 패키지(클래스 묶음)들이 계층 구조로 분류되어 있음
5. Java 프로그램의 실행

(1) Java 소스코드
- Java 소스는 파일 확장자가 .java 파일이며, 이것이 소스코드이다.
(2) Java 바이트 코드
- 바이트 코드는 파일 확장자가 .class인 파일이다.
- Java 소스를 컴파일한 결과물을 의미한다.
- Java 플랫폼의 Java VM에서 실행 가능한 코드이다.
- 이후에는 JVM이 운영체제가 읽을 수 있는 기계어로 변환해서 실행을 하게 된다.
(3) 명령어로 자바 프로그램 실행
javac : 명령 프롬포트 창에서 컴파일 명령어 ( 예시 : javac Hello.java )
java : 명령 프롬포트 창에서 실행 명령 ( 예시 java Hello )
[1] 환경변수
- PATH 변수 추가 : C:\Program Files\Java\jdk-21\bin
- java.exe , javac.exe 와 같이 자바 실행 파일이 들어있는 bin 폴더를 Path에 추가하면 터미널(명령 프롬포트)에서 어디서든 java, javac 같은 명령어를 실행할 수 있기 때문에 적용을 해줘야 한다.
- 만약, 설정을 해주지 않는다면 해당 폴더에서만 java와 javac 같은 명령어를 실행할 수 있다.
* 최근 자바 버전은 설정을 안해줘도 되는 경우가 있다.
6. 객체지향 프로그래밍
(1) 클래스와 객체
[1] 추상화
- 구체적인 모든 사실이 아니라 전형적이고 필요한 부분만을 추려서 사물을 이해하고 표현하는 것을 의미한다.
[2] 클래스
- 클래스는 객체를 만들기 위한 모형 또는 틀을 의미한다.
- 공통적인 특징을 가지는 객체들을 추상화하기 위한 수단이다.
- 객체의 상태는 필드(데이터)로, 행위는 메소드로 구현이 된다.
- 객체는 특정 클래스의 인스턴스를 의미한다.
(2) 객체지향 Java 프로그램
[1] Java 프로그램과 클래스
- 클래스가 프로그램 구성의 기본 단위를 의미한다.
- 객체의 데이터(필드)와 객체의 기능(메서드)이 클래스 구조로 되어있다.
- 클래스 정의로부터 객체(인스턴스)들이 만들어지고 객체들 간의 상호작용으로 프로그램이 동작한다.
'공부 > ☕Java' 카테고리의 다른 글
| [Java] Enum 쉽게 이해하기 (1) | 2025.05.05 |
|---|---|
| [Java] JVM과 자바 실행 원리 (1) | 2025.04.14 |
| [Java Design Pattern] 정적 팩토리 메서드 (0) | 2024.11.10 |
| [Java] 변수 초기화에 대한 이해 (2) | 2024.11.05 |
| [Java] Annotation 이란? ( 애노테이션 ) (4) | 2024.11.05 |