
Java는 1991년 Sun Microsystems의 제임스 고슬링과 그의 팀이 개발한 프로그래밍 언어로 처음에 "Oak(오크)"라고 불렸다. Oak는 초기에 가전제품을 제어할 수 있는 언어로 개발되었지만, 1990년대 중반 인터넷의 급격한 성장으로 웹과 네트워크에서 실행 가능한 프로그래밍 언어로 방향을 바꾸게 되었다. 이후 1995년에 Java 1.0을 정식 출시했다.
Java 프로그램은 JVM(Java Virtual Machine) 위에서 실행되므로, 운영체제(OS)에 상관없이 실행 가능함
캡슐화, 상속, 다형성, 추상화 같은 OOP 개념을 지원하여 코드의 재사용성과 유지보수가 뛰어남
Java의 가비지 컬렉터가 자동으로 메모리를 관리하여 개발자가 직접 메모리에 관여하지 않아도 됨
Java는 멀티스레딩(Multithreading)을 지원하여 여러 작업을 동시에 실행 가능함
Java는 다양한 라이브러리와 프레임워크(Spring, Hibernate, Apache Kafka 등)을 제공하여 개발 속도를 높일 수 있음
Java는 JVM 위에서 실행되기 때문에 C, C++ 같은 네이티브 언어보다 속도가 느릴 수 있음.
하지만 JIT(Just-In-Time) 컴파일러와 GraalVM 같은 기술로 성능을 점점 개선하고 있음.
Java는 문법이 비교적 길어서 Python 같은 언어보다 코드 작성이 번거로움
하드웨어 직접 제어와 운영체제 수준의 프로그래밍이 어려움
| 비교 항목 | JDK (개발 도구) | JRE (실행 환경) |
|---|---|---|
| 포함 관계 | JRE 포함 | JRE 자체 |
| 역할 | 자바 프로그램 개발 & 실행 | 자바 프로그램 실행만 가능 |
| 주요 구성 요소 | JRE + 컴파일러(javac), 디버거(jdb), Javadoc, JAR 도구 등 | JVM, 표준 라이브러리, 런타임 유틸리티 |
| 사용 대상 | 개발자 (개발 & 실행) | 일반 사용자 (실행만) |

- Java 컴파일러가 소스 코드를 바이트 코드(.class)로 변환됨
- 바이트 코드가 JVM(Java Virtual Machine)에 의해 메모리에 로드됨
- JVM의 인터프리터(Interpreter) 또는 JIT(Just-In-Time)컴파일러가 바이트 코드를 실행
- 프로그램 실행이 끝나면 JVM이 할당된 메모리를 정리한 뒤 종료