객체지향 개발 (Object Oriented Development)
속성(데이터)와 동작(행위, 연산)을 독립된 객체로 정의하고 이들의 상호작용 관계를 중심으로 개발하는 방식이다.
현실, 가상의 다양한 유, 무형 객체를 자연스럽게 모델링해 개발이 가능하다.

이러한 장점이 있는 객체 지향 프로그래밍 언어 중 하나가 Java다.
Java의 탄생
Java는 다양한 플랫폼에서 사용할 수 있는 객체지향 프로그래밍 언어로써 플랫폼 독립적인 언어다.
Java 컴파일러는 JVM을 위한 바이트코드로 컴파일 하므로 JVM이 있는 모든 플랫폼에서 실행이 가능하다.
(JVM은 가상 기계의 명령 => 실제 기계의 명령어로 바꿔준다.)
이러한 특징이 있는 Java 플랫폼의 구성 요소에 대해서 살펴보자.
Java 플랫폼은 JDK(Java Development Kit), JRE(Java Runtime Environment), JVM(Java Virtual Machine)의 계층적으로 구성되며 Java 언어를 바이트코드, 기계어 등으로 변환하는 역할을 수행한다.

JDK(JAVA DEVELOPMENT KIT)
Java 애플리케이션을 만드는 데 사용되는 소프트웨어 개발 환경을 말한다.
Java 프로그래밍 개발을 위한 컴파일러, JRE(실행을 위한 환경) 등을 포함한다.
첨파일러는 Java 코드를 바이트코드로 변환시킨다.
JRE(Java Runtime Environment)
Java 프로그램을 실행시키기 위한 환경
클래스 로더 Java API(Application Programming Interface), 런타임 라이브러리, JVM을 포함한다.
* 클래스로더는 클래스를 동적으로 메모리에 로딩한다.
JVM(Java Virtual Machine)
Java 애플리케이션을 구동하기 위한 런타임 환경을 제공하는 엔진을 말한다.
JIT(Just-In-Time)컴파일러와 Java 인터프리터를 포함한다.
JIT 컴파일러는 바이트코드를 JVM용 기계어로 변환한다.