**자바(Java)**는 1995년 선 마이클로시스템즈(Sun Microsystems, 현 오라클)의 제임스 고슬링(James Gosling)에 의해 개발된 **객체지향 프로그래밍 언어(OOP)**입니다. "WORA (Write Once, Run Anywhere - 한 번 작성하면 어디서나 실행된다)"라는 슬로건처럼 플랫폼 독립적인 운영체제 이식성을 자랑합니다.
1. 자바 핵심 전문 용어 사전 (Glossary)
- JVM (Java Virtual Machine): 자바 바이트코드를 읽어 해당 운영체제(Windows, macOS, Linux)에 맞는 기계어로 번역하여 실행하는 가상 머신입니다.
- JDK (Java Development Kit): 자바 개발을 위한 컴파일러(
javac), 디버거, 표준 라이브러리 패키지가 포함된 개발 키트입니다. - JRE (Java Runtime Environment): 자바 프로그램을 실행하기만 할 때 필요한 환경으로, JVM과 자바 클래스 라이브러리가 포함되어 있습니다. (JDK 설치 시 포함)
- Bytecode (바이트코드): 자바 컴파일러(
javac)가 소스코드(.java)를 컴파일하여 생성한 반제품 명령어 파일(.class)입니다. - Garbage Collector (GC, 가비지 컬렉터): 메모리의 Heap 영역에서 더 이상 참조되지 않는 불필요한 객체들을 자동으로 탐지하여 해제하는 메모리 관리 스레드입니다.
2. JVM 메모리 구조 3대 영역 (Memory Architecture)
- 메소드 영역 (Method Area / Metaspace): 클래스 정보, static 변수, 메소드 바이트코드, 상수가 상주하는 공유 메모리 구역입니다.
- 힙 영역 (Heap Area):
new연산자에 의해 동적으로 생성된 모든 객체(Object)와 배열이 저장되는 구역으로, 가비지 컬렉션(GC)의 주요 대상입니다. - 스택 영역 (Stack Area): 메소드 호출 시 생성되는 프레임(Stack Frame) 공간으로, 지역 변수, 매개변수, 메소드 리턴 값이 저장되며 메소드가 종료되면 즉시 소멸합니다.
3. 자바 Hello World 첫 스케치 프로그램
/*
파일명: HelloJava.java
설명: 첫 번째 자바 클래스 선언 및 콘솔 출력
*/
public class HelloJava {
// 자바 애플리케이션의 시작점(Entry Point) 메인 메소드
public static void main(String[] args) {
System.out.println("Hello, DAVHAVE Java World!");
System.out.println("자바 프로그래밍의 세계에 오신 것을 환영합니다.");
}
}
4. 자주 묻는 질문 (Q&A)
Q. 파일 이름과 클래스 이름이 다르면 왜 컴파일 에러가 나나요?
A. 자바 파일 내에 public 접근 제어자로 선언된 클래스가 있다면, 파일 이름은 반드시 그 public 클래스 이름과 소문자/대문자까지 정확히 일치해야 하는 언어 규약이 있습니다.