특징
- 배우기 쉬운 객체 지향 언어
- 프로그래밍언어 + 객체 지향 개념
- 자동 메모리 관리
- Garbage Collector
- 멀티 쓰레드 지원
- 하나의 프로그램으로 동시에 여러 작업 가능
- 풍부한 라이브러리로 쉽게 개발 가능
- 운영체제에 독립적 WORA (Write Once Run Anywhere
- 자바 가상머신(JVM, Java Virture Machine)

JVM(Java Virtual Machine)
- Java
Byte Code를 OS(Operating System : 운영체제)에 맞게 해석, 실행될 수 있는 런타임 환경을 제공해주는 규격 - 자바 소스코드(
.java)로부터 만들어지는 자바 바이너리 파일(.class)을 실행할 수 있다. - JVM 구성요소
- 클래스로더 : 동적으로 클래스를 로딩해주는 역할
- 자바인터프리터 : 자바 컴파일러에 의해 변환된 자바 바이트 코드를 읽고 해석하는 역할
- JIT 컴파일러 : 프로그램이 실행 중인 런타임에 실제 기계어로 변환
- 가비지 컬렉터 : 사용하지 않는 메모리를 자동으로 회수
JRE (Java Runtime Enviroment)
컴파일된 자바 프로그램을 실행시킬 수 있는 자바 환경 JVM이 실행될 수 있도록 도와주는 역할을 하는 파일로 주로 “사용자”가 사용한다.
JDK(Java Development Kit)
자바 언어를 사용하여 프로그램을 개발하기 위한 도구 모음
“개발자”를 위한 파일로 자바 소스코드를 직접 입력할 수 있다.
자바 프로그램 작성, 컴파일, 테스트 및 디버깅
💡 JDK = JRE + @ JRE : 읽기 전용 JDK : 읽기 / 쓰기 전용
개발 환경
J2SE(JAVA 2 Standard Edition)
- 기본적인 Java의 개발/실행 환경으로 Java언어를 이용하여 어플리케이션(Application), 애플릿(Applet) 그리고 컴포넌트(Component) 등을 개발하고 실행할 수 있는 환경을 제공하는 플랫폼이다.
- 어떠한 Java프로그램을 개발하더라도 J2SE설치는 필수이며 SDK, RE, Plugin 기술 등으로 구성된다.
Java ME
- Java SE의 서브셋 + 임베디드 및 가전 제품을 위한 API 정의
J2EE(JAVA 2 Enterprise Edition)
- 자바를 이용한 다중 사용자, 기업용 응용 개발을 위한 플랫폼
- Java SE + 인터넷 기반의 서버사이드 컴퓨팅 관련 API 추가
자바 응용프로그램(컨테이너)
- Servlet : 클라이언트가 보내는 HTTP 요청을 처리하는 서버측 자바 프로그램, Servlet 엔진이 있어야 함.
- JSP(Java Server Pages): HTML이나 Java 코드를 써서 사용자에게 정보를 보여 줍니다. JSP가 처음 실행될 때 Servlet 엔진이 이것을 Servlet 으로 컴파일시켜서 내부적으로는 Servlet으로 동작합니다.
- EJB(Enterprise Java Beans) : Java에서 제공하는 분산 컴포넌트 기술로 비즈니스 로직이나 데이터, 메시지를 처리할 수 있습니다.
자바 API
- JDK에 포함된 클래스 라이브러리로, 주요한 기능을 미리 구현한 클래스 라이브러리의 집합
- 실제로 사용하는 각종서비스 환경을 제공

자바 프로그램 실행 과정
