컴퓨터가 이해할 수 있는 언어는 우리가 사용하는 언어와 다른 기계어를 사용한다.
기계어는 0과 1로 이루어진 이진코드이기 때문에 사람이 이해하기 어렵다.
사람과 컴퓨터의 의사소통을 위해서는 다리역할을 하는 프로그래밍 언어가 필요하다.
1995년도 썬 마이크로시스템즈에서 자바언어를 발표함
이식성 → Wtite Once Use Anywhere / Write Once Run Anywhere
JRE(Java Runtime Environmnet)가 설치 되어있는 모든 OS에서 실행 가능
객체지향 언어
함수적 스타일 코딩 지원 → 람다식 지원(Java 8)
메모리 자동 관리
다양한 어플리케이션 개발
멀티스레드를 쉽게 구현 → 스레드 생성 및 제어와 관련된 API를 제공
동적 로딩을 지원 → Java는 동적으로 클래스를 읽어옴
OS는 바로 자바 프로그램을 실행할 수 없다. 자바프로그램은 완전한 기계어가 아닌 중간단계의 바이트 코드이기 때문이다. 이것을 해석해서 실행시켜주기 위해서 JVM이 존재한다.
JDK: 개발에 필요한 도구 + JRE(표준클래스 라이브러리, JVM, 자바실행기(java.exe))
JDK에 JRE가 포함된 구조를 택하는 이유는, 각 플래폼 용으로 설치파일을 따로 준비하는 수고를 덜기 위해서 위와 같은 구조를 택함