**자바(Java)**는 1995년 선 마이클로시스템즈(Sun Microsystems)의 제임스 고슬링(James Gosling) 연구팀에 의해 발표된 대표적인 **객체지향 프로그래밍 언어(OOP)**입니다. "WORA (Write Once, Run Anywhere - 한 번 작성하면 어느 운영체제에서나 실행된다)"라는 플랫폼 독립적 이식성을 자랑합니다.
1. 자바 교수용 핵심 전문 용어 사전 (Glossary)
- JVM (Java Virtual Machine): 자바 바이트코드를 해당 OS(Windows, macOS, Linux)의 네이티브 기계어로 실시간 해석(JIT 컴파일러)하여 실행하는 가상 머신입니다.
- JDK (Java Development Kit): 자바 개발을 위한 컴파일러(
javac), 디버거, 표준 API 라이브러리가 포함된 개발 키트입니다. (OpenJDK 등 사용) - JRE (Java Runtime Environment): 자바 프로그램을 실행하기만 할 때 필요한 동작 환경으로 JVM과 클래스 라이브러리가 탑재되어 있습니다.
- Bytecode (바이트코드): 소스코드(
.java)를javac컴파일러로 빌드하면 생성되는 반제품 명령어 형태의.class파일입니다. - JIT Compiler (Just-In-Time): 바이트코드를 인터프리터 방식으로 해석하다가 자주 실행되는 루프 코드를 발견하면 기계어로 직접 번역하여 대폭 속도를 올리는 하이브리드 엔진입니다.
- Garbage Collector (GC): 힙(Heap) 메모리에서 참조가 끊긴 쓰레기 객체(Dead Object)들을 자동으로 추적하여 회수하는 동적 메모리 관리 스레드입니다.
2. JVM 내부 메모리 3대 구조 (Memory Architecture)
- 메소드 영역 (Method Area / Metaspace): 바이트코드의 클래스 구동 정보, static 변수, 메소드 코드, 상수 풀(Constant Pool)이 상주하는 메모리입니다.
- 힙 영역 (Heap Area):
new연산자로 동적 할당되는 모든 인스턴스 객체와 배열이 저장되며, 가비지 컬렉션(GC)의 관리 대상이 됩니다. - 스택 영역 (Stack Area): 메소드 호출 시 생성되는 프레임(Stack Frame) 공간으로, 지역 변수, 매개변수, 연산 결과가 임시 저장되며 메소드 종료 시 자동 소멸합니다.
3. 첫 번째 자바 프로그램: HelloJava.java
/*
파일명: HelloJava.java
설명: 첫 자바 클래스 선언 및 메인 메소드 출력 실습
*/
public class HelloJava {
// 자바 애플리케이션 시작점(Main Method)
public static void main(String[] args) {
System.out.println("Hello, DAVHAVE Java World!");
System.out.println("자바 프로그래밍 강좌에 오신 것을 환영합니다.");
}
}
4. 자주 묻는 질문 (Q&A)
Q. Java SE, Java EE, Java ME의 차이는 무엇인가요? A. Java SE(Standard Edition)는 데스크톱 및 표준 기본 자바 플랫폼이고, Java EE(Enterprise Edition - 현 Jakarta EE)는 웹 서버 및 대규모 기업용 확장 플랫폼이며, Java ME(Micro Edition)는 임베디드 및 가전제품용 축소 플랫폼입니다.