-
[Java] Java란?Java 2025. 2. 25. 14:10
✅ Java 의 탄생
기존 컴퓨터 세계는 복잡하고 다루기 어려운 언어들로 가득했고, 당시 언어들은 운영체제마다 코드가 다르게 동작하는 문제가 있었다.
그래서 한 번 작성하면 어디서든 실행할 수 있도록 (Write Once, Run Anywhere)
1995년 James Gosling 의 주도로 Java가 탄생했다.
✅ Java 의 특징
1. 플랫폼 독립성 (Platform Independence)
- 바이트코드와 JVM(Java Virtual Machine)을 기반으로, 어떤 운영체제에서든 JVM만 설치되어 있으면 동일한 자바 프로그램을 실행할 수 있음.
- 이는 Write Once, Run Anywhere(WORA)라는 슬로건을 가능하게 한 핵심 기술.
2. 객체 지향 프로그래밍 (Object-Oriented Programming, OOP)
- 자바는 클래스, 객체, 상속, 캡슐화, 다형성, 추상화 등의 객체 지향 개념을 체계적으로 지원.
- 재사용성과 유지보수성이 높아, 대규모 프로젝트에도 효과적으로 적용할 수 있음.
3. 풍부한 표준 라이브러리 및 생태계
- 자바는 기본 라이브러리(API)가 매우 방대하여, 문자열 처리, 컬렉션(자료구조), 네트워킹, I/O 등 다양한 기능을 제공.
- Spring, Hibernate, Java EE 등 유명한 오픈소스 프레임워크와 라이브러리가 풍부해, 웹 개발부터 모바일, 데스크톱, 클라우드 네이티브, 빅데이터 등 다양한 분야에 적용할 수 있음.
4. 자동 메모리 관리 (Garbage Collection)
- 자바는 프로그램이 동적으로 할당한 메모리를 가비지 컬렉터(Garbage Collector)가 주기적으로 회수.
- 개발자가 직접 메모리를 해제하지 않아도 되므로, C/C++처럼 메모리 누수나 참조 문제에 대한 부담이 상대적으로 줄어듬.
5. 강력한 보안 (Security)
- JVM의 샌드박스(Sandbox) 모델을 통해 프로그램이 동작할 수 있는 환경을 제한적으로 관리.
- 자바 애플릿(Applet) 시절부터 적용된 보안 모델과 더불어, 클래스 로더(Class Loader), 보안 매니저(Security Manager) 등을 활용하여 외부 침입으로부터 시스템을 보호하는 구조.
6. 멀티스레딩 (Multithreading)
- 자바는 멀티스레딩을 언어 차원에서 지원.
- Thread 클래스와 Runnable 인터페이스, 고급화된 동시성(Concurrency) 프레임워크 등을 통해 효율적으로 병렬 처리를 구현 가능.
7. 동적 로딩 (Dynamic Loading)
- 자바 프로그램은 필요한 클래스만 그 때그 때 로딩할 수 있으므로, 업데이트나 확장에 유연하게 대응 가능.
- 이로 인해 대규모 시스템에서도 모듈별 배포와 업데이트가 용이.
8. 단순성과 친숙한 문법 (Simplicity & Familiar Syntax)
- C/C++에 비해 포인터 연산이나 다중 상속 같은 복잡한 기능을 제거하고, 보다 직관적이고 간결한 문법을 제공.
- C 계열 문법을 기반으로 하여 기존에 C/C++을 사용하던 개발자들이 비교적 쉽게 적응.
✅ JDK란?
JDK(Java Development Kit)는 자바 애플리케이션을 개발하기 위한 개발 도구(Development Kit).
자바로 프로그램을 작성, 컴파일, 실행하는 데 필요한 필수적인 요소들을 포함.
- 자바 컴파일러(javac)
- .java 확장자의 자바 소스 코드를 바이트코드(.class 파일) 로 컴파일.
- JRE(Java Runtime Environment)
- 자바 애플리케이션을 실행하기 위한 런타임 환경.
- JVM(Java Virtual Machine) 을 포함하여, 클래스 라이브러리 등 애플리케이션 구동에 필요한 핵심 요소를 담고 있음.
- 실행 도구(java, javaw 등)
- 바이트코드로 컴파일된 자바 프로그램을 실제로 실행할 수 있는 도구들.
JDK (Java Development Kit) ← Java 개발에 필요한 모든 것 포함 ├── JRE (Java Runtime Environment) ← Java 실행 환경 │ ├── JVM (Java Virtual Machine) ← 바이트코드 실행 │ ├── Java 라이브러리 (rt.jar 등) ← 필수 API 제공 (java.lang, java.util 등) │ ├── 클래스 로더 (Class Loader) ← .class 파일 로드 │ ├── Javac (Java Compiler) ← .java → .class 변환 ├── 기타 개발 도구 (디버거, Javadoc 생성기, JAR 도구 등)
✅ Java Compiler
자바 컴파일러는 java 파일을 바이트코드(.class)로 컴파일 해준다.
바이트코드는 JVM이 해석할 수 있는 코드, Java 프로그램이 실행되기 위해 변환되는 중간 단계 코드
✅ JVM (Java Virtual Machine)
JVM은 자바 가상환경. 바이트코드를 해석하고 자바 프로그램을 실행시키는 역할
JVM 덕분에 환경에 관계없이 자바 프로그램을 동작 시킬 수 있음
Javac와 JVM을 통해서 플랫폼의 독립성을 보장 받을 수 있다.
✅ Java 실행 순서
'Java' 카테고리의 다른 글
[Java] 메서드란 (1) 2025.03.05 [Java] 반복문과 배열 (1) 2025.03.05 [Java] 연산자와 조건문 (0) 2025.03.05 [Java] 변수와 입출력 (0) 2025.03.05 [Java] 명명 규칙 및 패키지, 클래스 (1) 2025.03.05